|
- <?php
-
- namespace App\Transmission\Layouts;
-
- use Illuminate\Http\Client\Response;
- use Illuminate\Http\Request;
- use Illuminate\Support\Facades\Validator;
-
- class IFCommonHeader
- {
- public string $customerCode = '';
- public string $parkingManagementCode = '';
- public int $adjusterSerialNo = 0;
- public string $interfaceId = '';
- public string $sendDatetime = '';
- public string $resultCode = '';
-
-
- const COL_NAME_HEADER = 'Header';
- const COL_NAME_BODY = 'Body';
- const COL_NAME_CUSTOMER_CODE = 'CustomerCode';
- const COL_NAME_PARKING_MANAGEMENT_CODE = 'ParkingManagementCode';
- const COL_NAME_ADJUSTER_SERIAL_NO = 'AdjusterSerialNo';
- const COL_NAME_INTERFACE_ID = 'InterfaceID';
- const COL_NAME_SEND_DATETIME = 'SendDatetime';
- const COL_NAME_RESULT_CODE = 'ResultCode';
-
- private static function getRules()
- {
- return [
- self::COL_NAME_HEADER => 'required|array',
- self::COL_NAME_HEADER . "." . self::COL_NAME_CUSTOMER_CODE => 'required|string',
- self::COL_NAME_HEADER . "." . self::COL_NAME_PARKING_MANAGEMENT_CODE => 'required|string',
- self::COL_NAME_HEADER . "." . self::COL_NAME_ADJUSTER_SERIAL_NO => 'required|numeric',
- self::COL_NAME_HEADER . "." . self::COL_NAME_INTERFACE_ID => 'required|string',
- self::COL_NAME_HEADER . "." . self::COL_NAME_SEND_DATETIME => 'required|string',
- self::COL_NAME_HEADER . "." . self::COL_NAME_RESULT_CODE => 'required|string',
- ];
- }
-
- public static function validate(array $data)
- {
- $validator = Validator::make($data, self::getRules());
- $validator->validate();
- }
-
- public static function validateLayout(Request $request)
- {
- $request->validate(self::getRules());
- }
-
-
- /**
- * Requestはバリデート済みである前提
- *
- * @param Request $request
- * @return IFCommonHeader
- */
- public static function createFromRequest(Request $request): self
- {
- $requestHeader = $request[self::COL_NAME_HEADER];
- $header = new IFCommonHeader();
- $header->customerCode = $requestHeader[self::COL_NAME_CUSTOMER_CODE];
- $header->parkingManagementCode = $requestHeader[self::COL_NAME_PARKING_MANAGEMENT_CODE];
- $header->adjusterSerialNo = $requestHeader[self::COL_NAME_ADJUSTER_SERIAL_NO];
- $header->interfaceId = $requestHeader[self::COL_NAME_INTERFACE_ID];
- $header->sendDatetime = $requestHeader[self::COL_NAME_SEND_DATETIME];
- return $header;
- }
-
- /**
- * Requestはバリデート済みである前提
- *
- * @param Response $request
- * @return IFCommonHeader
- */
- public static function createFromResponse(Response $response): self
- {
- $responseHeader = $response[self::COL_NAME_HEADER];
- $header = new IFCommonHeader();
- $header->customerCode = $responseHeader[self::COL_NAME_CUSTOMER_CODE];
- $header->parkingManagementCode = $responseHeader[self::COL_NAME_PARKING_MANAGEMENT_CODE];
- $header->adjusterSerialNo = $responseHeader[self::COL_NAME_ADJUSTER_SERIAL_NO];
- $header->interfaceId = $responseHeader[self::COL_NAME_INTERFACE_ID];
- $header->sendDatetime = $responseHeader[self::COL_NAME_SEND_DATETIME];
- $header->resultCode = $responseHeader[self::COL_NAME_RESULT_CODE];
-
- return $header;
- }
-
- public function toArray(): array
- {
- $result = [];
- $result[self::COL_NAME_CUSTOMER_CODE] = $this->customerCode;
- $result[self::COL_NAME_PARKING_MANAGEMENT_CODE] = $this->parkingManagementCode;
- $result[self::COL_NAME_ADJUSTER_SERIAL_NO] = $this->adjusterSerialNo;
- $result[self::COL_NAME_INTERFACE_ID] = $this->interfaceId;
- $result[self::COL_NAME_SEND_DATETIME] = $this->sendDatetime;
- $result[self::COL_NAME_RESULT_CODE] = $this->resultCode;
- return $result;
- }
-
- public function ok(): bool
- {
- return $this->resultCode === '100';
- }
- public function ng(): bool
- {
- return !$this->ok();
- }
- }
|