Nelze vybrat více než 25 témat Téma musí začínat písmenem nebo číslem, může obsahovat pomlčky („-“) a může být dlouhé až 35 znaků.

72 řádky
2.3KB

  1. <?php
  2. namespace App\Transmission\Layouts;
  3. use App\Transmission\InterfaceID;
  4. use Illuminate\Http\Request;
  5. use Illuminate\Support\Carbon;
  6. use Illuminate\Support\Collection;
  7. class IF24_01Request extends IFRequest
  8. {
  9. /** 発行端末 */
  10. public string $publishingTerminalCode;
  11. /** 発行日 */
  12. public Carbon $publishingDate;
  13. /** 発行連番 */
  14. public int $publishingNo;
  15. const COL_NAME_PUBLISHING_TERMINAL_CODE = 'PublishingTerminalCode';
  16. const COL_NAME_PUBLISHING_DATE = 'PublishingDate';
  17. const COL_NAME_PUBLISHING_NO = 'PublishingNo';
  18. public function __construct()
  19. {
  20. parent::__construct();
  21. $this->header->interfaceId = InterfaceID::IF24_01->value;
  22. $this->seasonTicketContract = collect();
  23. }
  24. public static function create(Request $request): self
  25. {
  26. self::validateLayout($request);
  27. $result = new IF24_01Request();
  28. $result->header = IFCommonHeader::createFromRequest($request);
  29. $result->publishingTerminalCode = data_get($request[self::COL_NAME_BODY], self::COL_NAME_PUBLISHING_TERMINAL_CODE);
  30. // 日付変換とチェック
  31. $dateStr = data_get($request[self::COL_NAME_BODY], self::COL_NAME_PUBLISHING_DATE);
  32. $date = Carbon::createFromFormat("Ymd", $dateStr);
  33. if (!$date) {
  34. throw new Exception("日付変換失敗");
  35. }
  36. $result->publishingDate = $date;
  37. $result->publishingNo = data_get($request[self::COL_NAME_BODY], self::COL_NAME_PUBLISHING_NO);
  38. return $result;
  39. }
  40. public static function validateLayout(Request $request): void
  41. {
  42. $request->validate([
  43. IFCommonHeader::COL_NAME_BODY => 'required|array',
  44. IFCommonHeader::COL_NAME_BODY . '.' . self::COL_NAME_PUBLISHING_TERMINAL_CODE => 'required|string',
  45. IFCommonHeader::COL_NAME_BODY . '.' . self::COL_NAME_PUBLISHING_DATE => 'required|string',
  46. IFCommonHeader::COL_NAME_BODY . '.' . self::COL_NAME_PUBLISHING_NO => 'required|numeric',
  47. ]);
  48. }
  49. public function getBodyArray(): array
  50. {
  51. $body = [];
  52. $body[self::COL_NAME_PUBLISHING_TERMINAL_CODE] = $this->publishingTerminalCode;
  53. $body[self::COL_NAME_PUBLISHING_DATE] = $this->publishingDate->format("Ymd");
  54. $body[self::COL_NAME_PUBLISHING_NO] = $this->publishingNo;
  55. return $body;
  56. }
  57. }