|
- <?php
-
- namespace App\Transmission\Layouts;
-
- use App\Transmission\InterfaceID;
- use App\Transmission\Layouts\Code\QRTypeCode;
- use Illuminate\Http\Request;
- use Illuminate\Support\Carbon;
- use Illuminate\Support\Collection;
-
- class IF24_02Request extends IFRequest
- {
- public QRTypeCode $qrTypeCode;
- public string $publishingTerminalCode;
- public Carbon $publishingDate;
- public int $publishingNo;
- public int $shopNo;
- public int $discountTicketCode;
- public Carbon $adjustDatetime;
- public int $discountAmount;
-
- const COL_NAME_QR_TYPE_CODE = 'QRCodeType';
- const COL_NAME_PUBLISHING_TERMINAL_CODE = 'PublishingTerminalCode';
- const COL_NAME_PUBLISHING_DATE = 'PublishingDate';
- const COL_NAME_PUBLISHING_NO = 'PublishingNo';
- const COL_NAME_SHOP_NO = "ShopNo";
- const COL_NAME_DISCOUNT_TICKET_CODE = "DiscountTicketCode";
- const COL_NAME_ADJUST_DATETIME = "AdjustDatetime";
- const COL_NAME_DISCOUNT_AMOUNT = "DiscountAmount";
-
- public function __construct()
- {
- parent::__construct();
- $this->header->interfaceId = InterfaceID::IF24_02->value;
- $this->seasonTicketContract = collect();
- }
-
- public static function create(Request $request): self
- {
- self::validateLayout($request);
-
- $result = new IF24_02Request();
- $result->header = IFCommonHeader::createFromRequest($request);
-
- $result->qrTypeCode = QRTypeCode::from(data_get($request[self::COL_NAME_BODY], self::COL_NAME_QR_TYPE_CODE));
- $result->publishingTerminalCode = data_get($request[self::COL_NAME_BODY], self::COL_NAME_PUBLISHING_TERMINAL_CODE);
- $result->publishingNo = data_get($request[self::COL_NAME_BODY], self::COL_NAME_PUBLISHING_NO);
-
- // 日付変換とチェック
- $dateStr = data_get($request[self::COL_NAME_BODY], self::COL_NAME_PUBLISHING_DATE);
- $date = Carbon::createFromFormat("Ymd", $dateStr);
- if (!$date) {
- throw new Exception("日付変換失敗");
- }
- $result->publishingDate = $date;
-
- $result->shopNo = data_get($request[self::COL_NAME_BODY], self::COL_NAME_SHOP_NO);
- $result->discountTicketCode = data_get($request[self::COL_NAME_BODY], self::COL_NAME_DISCOUNT_TICKET_CODE);
-
- // 日付変換とチェック
- $dateStr = data_get($request[self::COL_NAME_BODY], self::COL_NAME_ADJUST_DATETIME);
- $date = Carbon::createFromFormat("YmdHi", $dateStr);
- if (!$date) {
- throw new Exception("日付変換失敗");
- }
- $result->adjustDatetime = $date;
-
-
-
- $result->discountAmount = data_get($request[self::COL_NAME_BODY], self::COL_NAME_DISCOUNT_AMOUNT);
- return $result;
- }
-
- public static function validateLayout(Request $request): void
- {
- $request->validate([
- IFCommonHeader::COL_NAME_BODY => 'required|array',
- IFCommonHeader::COL_NAME_BODY . '.' . self::COL_NAME_PUBLISHING_TERMINAL_CODE => 'required|string',
- IFCommonHeader::COL_NAME_BODY . '.' . self::COL_NAME_PUBLISHING_DATE => 'required|string',
- IFCommonHeader::COL_NAME_BODY . '.' . self::COL_NAME_PUBLISHING_NO => 'required|numeric',
- IFCommonHeader::COL_NAME_BODY . '.' . self::COL_NAME_SHOP_NO => 'required|numeric',
- IFCommonHeader::COL_NAME_BODY . '.' . self::COL_NAME_DISCOUNT_TICKET_CODE => 'required|numeric',
- IFCommonHeader::COL_NAME_BODY . '.' . self::COL_NAME_ADJUST_DATETIME => 'required|string',
- IFCommonHeader::COL_NAME_BODY . '.' . self::COL_NAME_DISCOUNT_AMOUNT => 'required|numeric',
- ]);
- }
-
- public function getBodyArray(): array
- {
- $body = [];
- $body[self::COL_NAME_PUBLISHING_TERMINAL_CODE] = $this->publishingTerminalCode;
- $body[self::COL_NAME_PUBLISHING_DATE] = $this->publishingDate->format("Ymd");
- $body[self::COL_NAME_PUBLISHING_NO] = $this->publishingNo;
- $body[self::COL_NAME_SHOP_NO] = $this->shopNo;
- $body[self::COL_NAME_DISCOUNT_TICKET_CODE] = $this->discountTicketCode;
- $body[self::COL_NAME_ADJUST_DATETIME] = $this->adjustDatetime->format("YmdHi");
- $body[self::COL_NAME_DISCOUNT_AMOUNT] = $this->discountAmount;
- return $body;
- }
- }
|