From 04d036a1ef9167a7c6c3e52493d28ac4b22aa193 Mon Sep 17 00:00:00 2001 From: Kamil Niemczycki Date: Mon, 6 Jun 2022 11:05:47 +0200 Subject: [PATCH] #157 - added the request class and improved the request parameters --- .../Controllers/VacationRequestController.php | 12 +++---- .../Requests/CreateVacationRequestRequest.php | 36 +++++++++++++++++++ resources/js/Pages/AnnualSummary.vue | 2 +- resources/js/Pages/Calendar.vue | 2 +- resources/js/Pages/VacationRequest/Create.vue | 10 +++--- 5 files changed, 48 insertions(+), 14 deletions(-) create mode 100644 app/Infrastructure/Http/Requests/CreateVacationRequestRequest.php diff --git a/app/Infrastructure/Http/Controllers/VacationRequestController.php b/app/Infrastructure/Http/Controllers/VacationRequestController.php index 450f41a..916c9c2 100644 --- a/app/Infrastructure/Http/Controllers/VacationRequestController.php +++ b/app/Infrastructure/Http/Controllers/VacationRequestController.php @@ -28,6 +28,7 @@ use Toby\Domain\VacationTypeConfigRetriever; use Toby\Eloquent\Helpers\YearPeriodRetriever; use Toby\Eloquent\Models\User; use Toby\Eloquent\Models\VacationRequest; +use Toby\Infrastructure\Http\Requests\CreateVacationRequestRequest; use Toby\Infrastructure\Http\Requests\VacationRequestRequest; use Toby\Infrastructure\Http\Resources\SimpleUserResource; use Toby\Infrastructure\Http\Resources\VacationRequestActivityResource; @@ -166,17 +167,14 @@ class VacationRequestController extends Controller return $pdf->stream(); } - public function create(Request $request): Response + public function create(CreateVacationRequestRequest $request): Response { $users = User::query() ->orderByProfileField("last_name") ->orderByProfileField("first_name") ->get(); - if(($selectedUserId = $request->get("user")) && is_numeric($selectedUserId)) { - $userId = User::query() - ->find($selectedUserId)?->id; - } + $requestData = $request->data(); return inertia("VacationRequest/Create", [ "vacationTypes" => VacationType::casesToSelect(), @@ -185,8 +183,8 @@ class VacationRequestController extends Controller "createOnBehalfOfEmployee" => $request->user()->can("createOnBehalfOfEmployee", VacationRequest::class), "skipFlow" => $request->user()->can("skipFlow", VacationRequest::class), ], - "userId" => $userId ?? null, - "vacationStartDate" => $request->get("start_date"), + "vacationUserId" => $requestData['user'], + "vacationFromDate" => $requestData['from_date'], ]); } diff --git a/app/Infrastructure/Http/Requests/CreateVacationRequestRequest.php b/app/Infrastructure/Http/Requests/CreateVacationRequestRequest.php new file mode 100644 index 0000000..7be1a16 --- /dev/null +++ b/app/Infrastructure/Http/Requests/CreateVacationRequestRequest.php @@ -0,0 +1,36 @@ +get("user")) || + (int)$this->get("user") === $this->user()->id || + $this->user()->can("createOnBehalfOfEmployee", VacationRequest::class); + } + + public function rules(): array + { + return [ + "user" => ["nullable", "exists:users,id"], + "from_date" => ["nullable", "date_format:Y-m-d"], + ]; + } + + public function data(): array + { + return [ + "user" => (int)$this->get('user'), + "from_date" => $this->get('from_date'), + ]; + } +} diff --git a/resources/js/Pages/AnnualSummary.vue b/resources/js/Pages/AnnualSummary.vue index 2e63384..939a424 100644 --- a/resources/js/Pages/AnnualSummary.vue +++ b/resources/js/Pages/AnnualSummary.vue @@ -89,7 +89,7 @@