From 0f6dde90fb02c6dd74487aca3cd1e0afb7ac0772 Mon Sep 17 00:00:00 2001 From: "sosuke.iwabuchi" Date: Thu, 26 Oct 2023 11:48:35 +0900 Subject: [PATCH] =?UTF-8?q?=E7=94=B3=E8=BE=BC=E3=82=AD=E3=83=A3=E3=83=B3?= =?UTF-8?q?=E3=82=BB=E3=83=AB=E5=AF=BE=E5=BF=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Email/Members/SelectionNotice.php | 10 +++++++++- .../SeasonTicketContract/Entry/CancelController.php | 7 ++++--- .../SeasonTicketContract/Entry/EntryInfoController.php | 2 +- app/Kintone/Models/SeasonTicketContractEntry.php | 1 + app/Logic/SeasonTicketContractEntryManager.php | 6 +++++- 5 files changed, 20 insertions(+), 6 deletions(-) diff --git a/app/Email/Members/SelectionNotice.php b/app/Email/Members/SelectionNotice.php index c76281e..1e8d0a0 100644 --- a/app/Email/Members/SelectionNotice.php +++ b/app/Email/Members/SelectionNotice.php @@ -4,6 +4,7 @@ namespace App\Email\Members; use App\Kintone\Models\SeasonTicketContractEntry; use App\Kintone\Models\SeasonTicketContractSelection; +use App\Logic\SeasonTicketContractEntryManager; use App\Logic\SeasonTicketContractSelectionManager; class SelectionNotice extends Members @@ -29,6 +30,7 @@ class SelectionNotice extends Members public function getMemberParams(): array { $manager = new SeasonTicketContractSelectionManager($this->selection); + $entryManager = new SeasonTicketContractEntryManager($this->entry); return [ 'customer_name' => $this->entry->customerName, @@ -38,7 +40,13 @@ class SelectionNotice extends Members 'selection', 'entry', $this->selection->getRecordId(), $this->entry->getRecordId(), - $manager->getHash($this->entry->getRecordId()) + $manager->getHash($this->entry->getRecordId()), + ]), + 'cancel_url' => $this->getAppUrl([ + 'season-ticket-contract', + 'entry', 'cancel', + $this->entry->getRecordId(), + $entryManager->getHash() ]), ]; } diff --git a/app/Http/Controllers/Web/SeasonTicketContract/Entry/CancelController.php b/app/Http/Controllers/Web/SeasonTicketContract/Entry/CancelController.php index a0407cd..a0895af 100644 --- a/app/Http/Controllers/Web/SeasonTicketContract/Entry/CancelController.php +++ b/app/Http/Controllers/Web/SeasonTicketContract/Entry/CancelController.php @@ -7,7 +7,7 @@ use App\Logic\SeasonTicketContractEntryManager; use Illuminate\Http\JsonResponse; use Illuminate\Http\Request; -class EntryInfoController extends WebController +class CancelController extends WebController { public function name(): string { @@ -34,8 +34,9 @@ class EntryInfoController extends WebController return $this->failedResponse(); } - $entry = $manager->getEntry(); + $manager->cancel() + ->save(); - return $this->successResponse($entry->toArray()); + return $this->successResponse(); } } diff --git a/app/Http/Controllers/Web/SeasonTicketContract/Entry/EntryInfoController.php b/app/Http/Controllers/Web/SeasonTicketContract/Entry/EntryInfoController.php index 952ad79..4490ffd 100644 --- a/app/Http/Controllers/Web/SeasonTicketContract/Entry/EntryInfoController.php +++ b/app/Http/Controllers/Web/SeasonTicketContract/Entry/EntryInfoController.php @@ -7,7 +7,7 @@ use App\Logic\SeasonTicketContractEntryManager; use Illuminate\Http\JsonResponse; use Illuminate\Http\Request; -class CancelController extends WebController +class EntryInfoController extends WebController { public function name(): string diff --git a/app/Kintone/Models/SeasonTicketContractEntry.php b/app/Kintone/Models/SeasonTicketContractEntry.php index 3a40c88..d2cfd6a 100644 --- a/app/Kintone/Models/SeasonTicketContractEntry.php +++ b/app/Kintone/Models/SeasonTicketContractEntry.php @@ -57,6 +57,7 @@ class SeasonTicketContractEntry extends KintoneModel protected const FIELDS = [ ...parent::FIELDS, self::FIELD_PARKING_NAME => FieldType::SINGLE_LINE_TEXT, + self::FIELD_STATUS => FieldType::DROP_DOWN, self::FIELD_CUSTOMER_NAME => FieldType::SINGLE_LINE_TEXT, self::FIELD_CUSTOMER_NAME_KANA => FieldType::SINGLE_LINE_TEXT, self::FIELD_PHONE_NO => FieldType::SINGLE_LINE_TEXT, diff --git a/app/Logic/SeasonTicketContractEntryManager.php b/app/Logic/SeasonTicketContractEntryManager.php index 234d545..69b001f 100644 --- a/app/Logic/SeasonTicketContractEntryManager.php +++ b/app/Logic/SeasonTicketContractEntryManager.php @@ -2,6 +2,7 @@ namespace App\Logic; +use App\Exceptions\GeneralErrorMessageException; use App\Kintone\Models\DropDown\SeasonTicketContractEntry\Status; use App\Kintone\Models\SeasonTicketContractEntry; @@ -9,10 +10,13 @@ class SeasonTicketContractEntryManager { private SeasonTicketContractEntry $entry; - public function __construct(int|SeasonTicketContractEntry $recordNo = null) + public function __construct(int|SeasonTicketContractEntry $recordNo = null, bool $includeCancel = false) { if (is_int($recordNo)) { $this->entry = SeasonTicketContractEntry::find($recordNo); + if (!$includeCancel && $this->entry->status === Status::CANCEL) { + throw new GeneralErrorMessageException("すでにキャンセル済みです"); + } return; } else if ($recordNo instanceof SeasonTicketContractEntry) { $this->entry = $recordNo;