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.

47 line
1.2KB

  1. <?php
  2. namespace App\Http\Controllers\Server;
  3. use App\Logics\QRService\CertificateLogic;
  4. use App\Transmission\Layouts\IF24_01Request;
  5. use App\Transmission\Layouts\IF24_01Response;
  6. use Exception;
  7. use Illuminate\Http\Request;
  8. use Illuminate\Support\Facades\DB;
  9. class IF24_01Controller extends IFController
  10. {
  11. protected function run(Request $request): array
  12. {
  13. try {
  14. DB::beginTransaction();
  15. $layout = IF24_01Request::create($request);
  16. $response = $this->handleRequest($layout);
  17. DB::commit();
  18. } catch (Exception $e) {
  19. DB::rollBack();
  20. throw $e;
  21. }
  22. return $this->successResponse($request, $response);
  23. }
  24. private function handleRequest(IF24_01Request $request): IF24_01Response
  25. {
  26. $qr = CertificateLogic::getUsable(
  27. $request->header->parkingManagementCode,
  28. $request->publishingTerminalCode,
  29. $request->publishingDate,
  30. $request->publishingNo,
  31. );
  32. $response = new IF24_01Response();
  33. $response->discountTicketCode = $qr->discount_ticket_code;
  34. $response->shopNo = $qr->shop_no;
  35. return $response;
  36. }
  37. }