You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

50 line
1.3KB

  1. <?php
  2. namespace App\Http\Controllers\Web\SeasonTicketContract\Selection;
  3. use App\Exceptions\GeneralErrorMessageException;
  4. use App\Http\Controllers\Web\WebController;
  5. use App\Kintone\Models\DropDown\SeasonTicketContractSelection\SelectionStatus;
  6. use App\Logic\SeasonTicketContractSelectionManager;
  7. use Illuminate\Http\JsonResponse;
  8. use Illuminate\Http\Request;
  9. class SelectionInfoController extends WebController
  10. {
  11. public function name(): string
  12. {
  13. return "申込内容取得";
  14. }
  15. public function description(): string
  16. {
  17. return "申込内容を取得する";
  18. }
  19. public function __construct(protected SelectionInfoParams $param)
  20. {
  21. parent::__construct();
  22. }
  23. protected function run(Request $request): JsonResponse
  24. {
  25. $param = $this->param;
  26. $manager = new SeasonTicketContractSelectionManager($param->selectionRecordNo);
  27. if (!$manager->checkHash($param->entryRecordNo, $param->fs)) {
  28. return $this->failedResponse();
  29. }
  30. if ($manager->getSelection()->status !== SelectionStatus::ENTRY_ACCEPTING) {
  31. throw new GeneralErrorMessageException("募集期間が終了しています");
  32. }
  33. $entry = $manager->getEntry($param->entryRecordNo);
  34. return $this->successResponse($entry->toArray());
  35. }
  36. }