Nevar pievienot vairāk kā 25 tēmas Tēmai ir jāsākas ar burtu vai ciparu, tā var saturēt domu zīmes ('-') un var būt līdz 35 simboliem gara.

71 rinda
2.1KB

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