header->interfaceId = InterfaceID::IF24_01->value; $this->seasonTicketContract = collect(); } public static function create(Request $request): self { self::validateLayout($request); $result = new IF24_01Request(); $result->header = IFCommonHeader::createFromRequest($request); $result->publishingTerminalCode = data_get($request[self::COL_NAME_BODY], self::COL_NAME_PUBLISHING_TERMINAL_CODE); // 日付変換とチェック $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->publishingNo = data_get($request[self::COL_NAME_BODY], self::COL_NAME_PUBLISHING_NO); 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', ]); } 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; return $body; } }