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.

72 lines
2.3KB

  1. <?php
  2. namespace App\Http\Controllers\Server;
  3. use App\Exceptions\AppCommonException;
  4. use App\Logics\QRService\CertificateLogic;
  5. use App\Logics\QRService\CreateLogic;
  6. use App\Transmission\Layouts\Code\QRTypeCode;
  7. use App\Transmission\Layouts\IF24_02Request;
  8. use Exception;
  9. use Illuminate\Http\Request;
  10. use Illuminate\Support\Facades\DB;
  11. use Illuminate\Validation\ValidationException;
  12. use Nette\NotImplementedException;
  13. class IF24_02Controller extends IFController
  14. {
  15. protected function run(Request $request): array
  16. {
  17. try {
  18. IF24_02Request::validateLayout($request);
  19. } catch (ValidationException $e) {
  20. logger($e->getMessage(), [__LINE__]);
  21. logger($e->errors());
  22. logger($request->toArray());
  23. return $this->failResponse($request);
  24. }
  25. try {
  26. DB::beginTransaction();
  27. $layout = IF24_02Request::create($request);
  28. $this->handleRequest($layout);
  29. DB::commit();
  30. } catch (Exception $e) {
  31. DB::rollBack();
  32. throw $e;
  33. }
  34. return $this->successResponse($request);
  35. }
  36. private function handleRequest(IF24_02Request $request)
  37. {
  38. // 認証チェック
  39. if ($request->qrTypeCode === QRTypeCode::方式1_認証方式) {
  40. CertificateLogic::use(
  41. $request->header->parkingManagementCode,
  42. $request->publishingTerminalCode,
  43. $request->publishingDate,
  44. $request->publishingNo,
  45. $request->discountTicketCode,
  46. $request->adjustDatetime,
  47. $request->discountAmount,
  48. );
  49. } else if ($request->qrTypeCode === QRTypeCode::方式2_印字方式) {
  50. throw new NotImplementedException("方式2未実装");
  51. } else if ($request->qrTypeCode === QRTypeCode::方式3_取得方式) {
  52. CreateLogic::use(
  53. $request->shopNo,
  54. $request->header->parkingManagementCode,
  55. $request->publishingDate,
  56. $request->publishingNo,
  57. $request->discountTicketCode,
  58. $request->adjustDatetime,
  59. $request->discountAmount,
  60. );
  61. } else {
  62. throw new AppCommonException("想定外のQRタイプコード");
  63. }
  64. }
  65. }