From d1bef0ac92b4e0ff5c00cec5f54025cd4cbf77b1 Mon Sep 17 00:00:00 2001 From: Adrian Hopek Date: Wed, 16 Mar 2022 14:16:55 +0100 Subject: [PATCH] #73 - cancel vacation request --- app/Domain/Policies/VacationRequestPolicy.php | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/app/Domain/Policies/VacationRequestPolicy.php b/app/Domain/Policies/VacationRequestPolicy.php index 61000ee..172fd4c 100644 --- a/app/Domain/Policies/VacationRequestPolicy.php +++ b/app/Domain/Policies/VacationRequestPolicy.php @@ -5,6 +5,9 @@ declare(strict_types=1); namespace Toby\Domain\Policies; use Toby\Domain\Enums\Role; +use Toby\Domain\States\VacationRequest\Created; +use Toby\Domain\States\VacationRequest\WaitingForAdministrative; +use Toby\Domain\States\VacationRequest\WaitingForTechnical; use Toby\Eloquent\Models\User; use Toby\Eloquent\Models\VacationRequest; @@ -40,8 +43,16 @@ class VacationRequestPolicy return in_array($user->role, [Role::AdministrativeApprover, Role::TechnicalApprover], true); } - public function cancel(User $user): bool + public function cancel(User $user, VacationRequest $vacationRequest): bool { + if ($vacationRequest->user->is($user) && $vacationRequest->state->equals( + Created::class, + WaitingForAdministrative::class, + WaitingForTechnical::class, + )) { + return true; + } + return $user->role === Role::AdministrativeApprover; }