diff --git a/app/Architecture/Providers/EventServiceProvider.php b/app/Architecture/Providers/EventServiceProvider.php index 409c95a..50cfebd 100644 --- a/app/Architecture/Providers/EventServiceProvider.php +++ b/app/Architecture/Providers/EventServiceProvider.php @@ -8,12 +8,14 @@ use Illuminate\Foundation\Support\Providers\EventServiceProvider as ServiceProvi use Toby\Domain\Events\VacationRequestAcceptedByAdministrative; use Toby\Domain\Events\VacationRequestAcceptedByTechnical; use Toby\Domain\Events\VacationRequestApproved; +use Toby\Domain\Events\VacationRequestCanceled; use Toby\Domain\Events\VacationRequestCreated; use Toby\Domain\Events\VacationRequestStateChanged; use Toby\Domain\Listeners\CreateVacationRequestActivity; use Toby\Domain\Listeners\HandleAcceptedByAdministrativeVacationRequest; use Toby\Domain\Listeners\HandleAcceptedByTechnicalVacationRequest; use Toby\Domain\Listeners\HandleApprovedVacationRequest; +use Toby\Domain\Listeners\HandleCanceledVacationRequest; use Toby\Domain\Listeners\HandleCreatedVacationRequest; class EventServiceProvider extends ServiceProvider @@ -24,5 +26,6 @@ class EventServiceProvider extends ServiceProvider VacationRequestAcceptedByTechnical::class => [HandleAcceptedByTechnicalVacationRequest::class], VacationRequestAcceptedByAdministrative::class => [HandleAcceptedByAdministrativeVacationRequest::class], VacationRequestApproved::class => [HandleApprovedVacationRequest::class], + VacationRequestCanceled::class => [HandleCanceledVacationRequest::class], ]; } diff --git a/app/Domain/Events/VacationRequestCanceled.php b/app/Domain/Events/VacationRequestCanceled.php new file mode 100644 index 0000000..a953392 --- /dev/null +++ b/app/Domain/Events/VacationRequestCanceled.php @@ -0,0 +1,20 @@ +vacationRequest); diff --git a/app/Domain/Listeners/HandleCanceledVacationRequest.php b/app/Domain/Listeners/HandleCanceledVacationRequest.php new file mode 100644 index 0000000..de76a7a --- /dev/null +++ b/app/Domain/Listeners/HandleCanceledVacationRequest.php @@ -0,0 +1,16 @@ +vacationRequest); + } +} diff --git a/app/Domain/VacationRequestStateManager.php b/app/Domain/VacationRequestStateManager.php index 7de8484..cf4c785 100644 --- a/app/Domain/VacationRequestStateManager.php +++ b/app/Domain/VacationRequestStateManager.php @@ -10,6 +10,7 @@ use Toby\Domain\Enums\VacationRequestState; use Toby\Domain\Events\VacationRequestAcceptedByAdministrative; use Toby\Domain\Events\VacationRequestAcceptedByTechnical; use Toby\Domain\Events\VacationRequestApproved; +use Toby\Domain\Events\VacationRequestCanceled; use Toby\Domain\Events\VacationRequestCreated; use Toby\Eloquent\Models\VacationRequest; @@ -43,6 +44,8 @@ class VacationRequestStateManager public function cancel(VacationRequest $vacationRequest): void { $this->changeState($vacationRequest, VacationRequestState::Canceled); + + $this->dispatcher->dispatch(new VacationRequestCanceled($vacationRequest)); } public function acceptAsTechnical(VacationRequest $vacationRequest): void diff --git a/app/Infrastructure/Jobs/ClearVacationRequestDaysInGoogleCalendar.php b/app/Infrastructure/Jobs/ClearVacationRequestDaysInGoogleCalendar.php new file mode 100644 index 0000000..eb7285b --- /dev/null +++ b/app/Infrastructure/Jobs/ClearVacationRequestDaysInGoogleCalendar.php @@ -0,0 +1,39 @@ +vacationRequest->vacations() + ->whereNotNull("event_id") + ->get(); + + /** @var Vacation $vacation */ + foreach ($vacations as $vacation) { + Event::find($vacation->event_id)->delete(); + + $vacation->update([ + "event_id" => null, + ]); + } + } +} diff --git a/resources/js/Pages/VacationRequest/Create.vue b/resources/js/Pages/VacationRequest/Create.vue index bb8fb10..64da58a 100644 --- a/resources/js/Pages/VacationRequest/Create.vue +++ b/resources/js/Pages/VacationRequest/Create.vue @@ -62,7 +62,9 @@ as="template" :value="type" > -
  • +
  • {{ type.label }} @@ -137,7 +139,9 @@
    Liczba dni urlopu -
    +
    {{ estimatedDays.length }}
    @@ -179,11 +183,11 @@