No puede seleccionar más de 25 temas Los temas deben comenzar con una letra o número, pueden incluir guiones ('-') y pueden tener hasta 35 caracteres de largo.

68 líneas
1.9KB

  1. <?php
  2. namespace App\Http\Controllers\Web\SeasonTicketContract;
  3. use App\Email\Members\StickerReOrderNotice;
  4. use App\Http\Controllers\Web\WebController;
  5. use App\Kintone\Models\Customer;
  6. use App\Kintone\Models\Parking;
  7. use App\Kintone\Models\SeasonTicketContract;
  8. use App\Kintone\Models\SeasonTicketReOrderApplication;
  9. use App\Kintone\Models\StickerReOrderApplication;
  10. use App\Logic\EmailManager;
  11. use App\Logic\GeneralApplicationManager;
  12. use Illuminate\Http\JsonResponse;
  13. use Illuminate\Http\Request;
  14. use Illuminate\Support\Facades\Auth;
  15. class StickerReOrderController extends WebController
  16. {
  17. public function name(): string
  18. {
  19. return "シール再発行依頼";
  20. }
  21. public function description(): string
  22. {
  23. return "シール再発行依頼を登録する";
  24. }
  25. public function __construct(protected StickerReOrderParams $param)
  26. {
  27. parent::__construct();
  28. $this->middleware('auth:sanctum');
  29. }
  30. protected function run(Request $request): JsonResponse
  31. {
  32. $param = $this->param;
  33. $parking = Parking::findByParkingName($param->parkingName);
  34. $customer = Customer::getSelf();
  35. $seasonTicketContract = SeasonTicketContract::find($param->seasonTicketContractRecordNo);
  36. $application = new StickerReOrderApplication();
  37. $manager = new GeneralApplicationManager($application);
  38. $manager
  39. ->setCustomer($customer)
  40. ->setSeasonTicketContract($seasonTicketContract)
  41. ->setParking($parking)
  42. ->makeApplication();
  43. $application->reason = $param->reason;
  44. $application->memo = $param->memo;
  45. // メール送信
  46. $email = new StickerReOrderNotice($seasonTicketContract, $application, $customer);
  47. $email->setUser(Auth::user());
  48. $emailMmanager = new EmailManager($email);
  49. $emailMmanager->confirm();
  50. $application->save();
  51. return $this->successResponse();
  52. }
  53. }