Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.

81 lignes
2.6KB

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