#41 - wip
This commit is contained in:
		@@ -8,16 +8,23 @@ use Illuminate\Foundation\Support\Providers\EventServiceProvider as ServiceProvi
 | 
				
			|||||||
use Toby\Domain\Events\VacationRequestAcceptedByAdministrative;
 | 
					use Toby\Domain\Events\VacationRequestAcceptedByAdministrative;
 | 
				
			||||||
use Toby\Domain\Events\VacationRequestAcceptedByTechnical;
 | 
					use Toby\Domain\Events\VacationRequestAcceptedByTechnical;
 | 
				
			||||||
use Toby\Domain\Events\VacationRequestApproved;
 | 
					use Toby\Domain\Events\VacationRequestApproved;
 | 
				
			||||||
 | 
					use Toby\Domain\Events\VacationRequestCancelled;
 | 
				
			||||||
use Toby\Domain\Events\VacationRequestCreated;
 | 
					use Toby\Domain\Events\VacationRequestCreated;
 | 
				
			||||||
use Toby\Domain\Events\VacationRequestRejected;
 | 
					use Toby\Domain\Events\VacationRequestRejected;
 | 
				
			||||||
use Toby\Domain\Events\VacationRequestStateChanged;
 | 
					use Toby\Domain\Events\VacationRequestStateChanged;
 | 
				
			||||||
 | 
					use Toby\Domain\Events\VacationRequestWaitedForAdministrative;
 | 
				
			||||||
 | 
					use Toby\Domain\Events\VacationRequestWaitedForTechnical;
 | 
				
			||||||
use Toby\Domain\Listeners\CreateVacationRequestActivity;
 | 
					use Toby\Domain\Listeners\CreateVacationRequestActivity;
 | 
				
			||||||
use Toby\Domain\Listeners\HandleAcceptedByAdministrativeVacationRequest;
 | 
					use Toby\Domain\Listeners\HandleAcceptedByAdministrativeVacationRequest;
 | 
				
			||||||
use Toby\Domain\Listeners\HandleAcceptedByTechnicalVacationRequest;
 | 
					use Toby\Domain\Listeners\HandleAcceptedByTechnicalVacationRequest;
 | 
				
			||||||
use Toby\Domain\Listeners\HandleApprovedVacationRequest;
 | 
					use Toby\Domain\Listeners\HandleApprovedVacationRequest;
 | 
				
			||||||
use Toby\Domain\Listeners\HandleCreatedVacationRequest;
 | 
					use Toby\Domain\Listeners\HandleCreatedVacationRequest;
 | 
				
			||||||
 | 
					use Toby\Domain\Listeners\SendApprovedVacationRequestNotification;
 | 
				
			||||||
 | 
					use Toby\Domain\Listeners\SendCancelledVacationRequestNotification;
 | 
				
			||||||
use Toby\Domain\Listeners\SendCreatedVacationRequestNotification;
 | 
					use Toby\Domain\Listeners\SendCreatedVacationRequestNotification;
 | 
				
			||||||
use Toby\Domain\Listeners\SendRejectedVacationRequestNotification;
 | 
					use Toby\Domain\Listeners\SendRejectedVacationRequestNotification;
 | 
				
			||||||
 | 
					use Toby\Domain\Listeners\SendWaitedForAdministrativeVacationRequestNotification;
 | 
				
			||||||
 | 
					use Toby\Domain\Listeners\SendWaitedForTechnicalVacationRequestNotification;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class EventServiceProvider extends ServiceProvider
 | 
					class EventServiceProvider extends ServiceProvider
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
@@ -26,7 +33,10 @@ class EventServiceProvider extends ServiceProvider
 | 
				
			|||||||
        VacationRequestCreated::class => [HandleCreatedVacationRequest::class, SendCreatedVacationRequestNotification::class],
 | 
					        VacationRequestCreated::class => [HandleCreatedVacationRequest::class, SendCreatedVacationRequestNotification::class],
 | 
				
			||||||
        VacationRequestAcceptedByTechnical::class => [HandleAcceptedByTechnicalVacationRequest::class],
 | 
					        VacationRequestAcceptedByTechnical::class => [HandleAcceptedByTechnicalVacationRequest::class],
 | 
				
			||||||
        VacationRequestAcceptedByAdministrative::class => [HandleAcceptedByAdministrativeVacationRequest::class],
 | 
					        VacationRequestAcceptedByAdministrative::class => [HandleAcceptedByAdministrativeVacationRequest::class],
 | 
				
			||||||
        VacationRequestApproved::class => [HandleApprovedVacationRequest::class],
 | 
					        VacationRequestApproved::class => [HandleApprovedVacationRequest::class, SendApprovedVacationRequestNotification::class],
 | 
				
			||||||
        VacationRequestRejected::class => [SendRejectedVacationRequestNotification::class],
 | 
					        VacationRequestRejected::class => [SendRejectedVacationRequestNotification::class],
 | 
				
			||||||
 | 
					        VacationRequestCancelled::class => [SendCancelledVacationRequestNotification::class],
 | 
				
			||||||
 | 
					        VacationRequestWaitedForTechnical::class => [SendWaitedForTechnicalVacationRequestNotification::class],
 | 
				
			||||||
 | 
					        VacationRequestWaitedForAdministrative::class => [SendWaitedForAdministrativeVacationRequestNotification::class],
 | 
				
			||||||
    ];
 | 
					    ];
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										20
									
								
								app/Domain/Events/VacationRequestCancelled.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										20
									
								
								app/Domain/Events/VacationRequestCancelled.php
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,20 @@
 | 
				
			|||||||
 | 
					<?php
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					declare(strict_types=1);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace Toby\Domain\Events;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					use Illuminate\Foundation\Events\Dispatchable;
 | 
				
			||||||
 | 
					use Illuminate\Queue\SerializesModels;
 | 
				
			||||||
 | 
					use Toby\Eloquent\Models\VacationRequest;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class VacationRequestCancelled
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    use Dispatchable;
 | 
				
			||||||
 | 
					    use SerializesModels;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public function __construct(
 | 
				
			||||||
 | 
					        public VacationRequest $vacationRequest,
 | 
				
			||||||
 | 
					    ) {
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										20
									
								
								app/Domain/Events/VacationRequestWaitedForAdministrative.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										20
									
								
								app/Domain/Events/VacationRequestWaitedForAdministrative.php
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,20 @@
 | 
				
			|||||||
 | 
					<?php
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					declare(strict_types=1);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace Toby\Domain\Events;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					use Illuminate\Foundation\Events\Dispatchable;
 | 
				
			||||||
 | 
					use Illuminate\Queue\SerializesModels;
 | 
				
			||||||
 | 
					use Toby\Eloquent\Models\VacationRequest;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class VacationRequestWaitedForAdministrative
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    use Dispatchable;
 | 
				
			||||||
 | 
					    use SerializesModels;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public function __construct(
 | 
				
			||||||
 | 
					        public VacationRequest $vacationRequest,
 | 
				
			||||||
 | 
					    ) {
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										20
									
								
								app/Domain/Events/VacationRequestWaitedForTechnical.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										20
									
								
								app/Domain/Events/VacationRequestWaitedForTechnical.php
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,20 @@
 | 
				
			|||||||
 | 
					<?php
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					declare(strict_types=1);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace Toby\Domain\Events;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					use Illuminate\Foundation\Events\Dispatchable;
 | 
				
			||||||
 | 
					use Illuminate\Queue\SerializesModels;
 | 
				
			||||||
 | 
					use Toby\Eloquent\Models\VacationRequest;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class VacationRequestWaitedForTechnical
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    use Dispatchable;
 | 
				
			||||||
 | 
					    use SerializesModels;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public function __construct(
 | 
				
			||||||
 | 
					        public VacationRequest $vacationRequest,
 | 
				
			||||||
 | 
					    ) {
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -0,0 +1,34 @@
 | 
				
			|||||||
 | 
					<?php
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					declare(strict_types=1);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace Toby\Domain\Listeners;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					use Illuminate\Support\Collection;
 | 
				
			||||||
 | 
					use Toby\Domain\Enums\Role;
 | 
				
			||||||
 | 
					use Toby\Domain\Events\VacationRequestApproved;
 | 
				
			||||||
 | 
					use Toby\Domain\Notifications\VacationRequestApprovedNotification;
 | 
				
			||||||
 | 
					use Toby\Eloquent\Models\User;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class SendApprovedVacationRequestNotification
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    public function __construct(
 | 
				
			||||||
 | 
					    ) {
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public function handle(VacationRequestApproved $event): void
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        foreach ($this->getUsersForNotifications() as $user) {
 | 
				
			||||||
 | 
					            $user->notify(new VacationRequestApprovedNotification($event->vacationRequest, $user));
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        $event->vacationRequest->user->notify(new VacationRequestApprovedNotification($event->vacationRequest, $event->vacationRequest->user));
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    protected function getUsersForNotifications(): Collection
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        return User::query()
 | 
				
			||||||
 | 
					            ->whereIn("role", [Role::TechnicalApprover, Role::AdministrativeApprover])
 | 
				
			||||||
 | 
					            ->get();
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -0,0 +1,34 @@
 | 
				
			|||||||
 | 
					<?php
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					declare(strict_types=1);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace Toby\Domain\Listeners;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					use Illuminate\Support\Collection;
 | 
				
			||||||
 | 
					use Toby\Domain\Enums\Role;
 | 
				
			||||||
 | 
					use Toby\Domain\Events\VacationRequestCancelled;
 | 
				
			||||||
 | 
					use Toby\Domain\Notifications\VacationRequestCancelledNotification;
 | 
				
			||||||
 | 
					use Toby\Eloquent\Models\User;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class SendCancelledVacationRequestNotification
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    public function __construct(
 | 
				
			||||||
 | 
					    ) {
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public function handle(VacationRequestCancelled $event): void
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        foreach ($this->getUsersForNotifications() as $user) {
 | 
				
			||||||
 | 
					            $user->notify(new VacationRequestCancelledNotification($event->vacationRequest, $user));
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        $event->vacationRequest->user->notify(new VacationRequestCancelledNotification($event->vacationRequest, $event->vacationRequest->user));
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    protected function getUsersForNotifications(): Collection
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        return User::query()
 | 
				
			||||||
 | 
					            ->whereIn("role", [Role::TechnicalApprover, Role::AdministrativeApprover])
 | 
				
			||||||
 | 
					            ->get();
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -6,7 +6,6 @@ namespace Toby\Domain\Listeners;
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
use Illuminate\Support\Collection;
 | 
					use Illuminate\Support\Collection;
 | 
				
			||||||
use Toby\Domain\Enums\Role;
 | 
					use Toby\Domain\Enums\Role;
 | 
				
			||||||
use Toby\Domain\Events\VacationRequestCreated;
 | 
					 | 
				
			||||||
use Toby\Domain\Events\VacationRequestRejected;
 | 
					use Toby\Domain\Events\VacationRequestRejected;
 | 
				
			||||||
use Toby\Domain\Notifications\VacationRequestRejectedNotification;
 | 
					use Toby\Domain\Notifications\VacationRequestRejectedNotification;
 | 
				
			||||||
use Toby\Eloquent\Models\User;
 | 
					use Toby\Eloquent\Models\User;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -0,0 +1,32 @@
 | 
				
			|||||||
 | 
					<?php
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					declare(strict_types=1);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace Toby\Domain\Listeners;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					use Illuminate\Support\Collection;
 | 
				
			||||||
 | 
					use Toby\Domain\Enums\Role;
 | 
				
			||||||
 | 
					use Toby\Domain\Events\VacationRequestWaitedForAdministrative;
 | 
				
			||||||
 | 
					use Toby\Domain\Notifications\VacationRequestWaitedForAdministrativeNotification;
 | 
				
			||||||
 | 
					use Toby\Eloquent\Models\User;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class SendWaitedForAdministrativeVacationRequestNotification
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    public function __construct(
 | 
				
			||||||
 | 
					    ) {
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public function handle(VacationRequestWaitedForAdministrative $event): void
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        foreach ($this->getUsersForNotifications() as $user) {
 | 
				
			||||||
 | 
					            $user->notify(new VacationRequestWaitedForAdministrativeNotification($event->vacationRequest, $user));
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    protected function getUsersForNotifications(): Collection
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        return User::query()
 | 
				
			||||||
 | 
					            ->where("role", [Role::AdministrativeApprover])
 | 
				
			||||||
 | 
					            ->get();
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -0,0 +1,32 @@
 | 
				
			|||||||
 | 
					<?php
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					declare(strict_types=1);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace Toby\Domain\Listeners;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					use Illuminate\Support\Collection;
 | 
				
			||||||
 | 
					use Toby\Domain\Enums\Role;
 | 
				
			||||||
 | 
					use Toby\Domain\Events\VacationRequestWaitedForTechnical;
 | 
				
			||||||
 | 
					use Toby\Domain\Notifications\VacationRequestWaitedForTechnicalNotification;
 | 
				
			||||||
 | 
					use Toby\Eloquent\Models\User;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class SendWaitedForTechnicalVacationRequestNotification
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    public function __construct(
 | 
				
			||||||
 | 
					    ) {
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public function handle(VacationRequestWaitedForTechnical $event): void
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        foreach ($this->getUsersForNotifications() as $user) {
 | 
				
			||||||
 | 
					            $user->notify(new VacationRequestWaitedForTechnicalNotification($event->vacationRequest, $user));
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    protected function getUsersForNotifications(): Collection
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        return User::query()
 | 
				
			||||||
 | 
					            ->where("role", [Role::TechnicalApprover])
 | 
				
			||||||
 | 
					            ->get();
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -0,0 +1,75 @@
 | 
				
			|||||||
 | 
					<?php
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					declare(strict_types=1);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace Toby\Domain\Notifications;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					use Illuminate\Bus\Queueable;
 | 
				
			||||||
 | 
					use Illuminate\Notifications\Messages\MailMessage;
 | 
				
			||||||
 | 
					use Illuminate\Notifications\Notification;
 | 
				
			||||||
 | 
					use InvalidArgumentException;
 | 
				
			||||||
 | 
					use Toby\Eloquent\Models\User;
 | 
				
			||||||
 | 
					use Toby\Eloquent\Models\VacationRequest;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class VacationRequestApprovedNotification extends Notification
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    use Queueable;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public function __construct(
 | 
				
			||||||
 | 
					        protected VacationRequest $vacationRequest,
 | 
				
			||||||
 | 
					        protected User $user,
 | 
				
			||||||
 | 
					    ) {
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public function via(): array
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        return ["mail"];
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * @throws InvalidArgumentException
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    public function toMail(): MailMessage
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        $url = route(
 | 
				
			||||||
 | 
					            "vacation.requests.show",
 | 
				
			||||||
 | 
					            [
 | 
				
			||||||
 | 
					                "vacationRequest" => $this->vacationRequest,
 | 
				
			||||||
 | 
					            ],
 | 
				
			||||||
 | 
					        );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        return $this->buildMailMessage($url);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    protected function buildMailMessage(string $url): MailMessage
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        $user = $this->vacationRequest->user->first_name;
 | 
				
			||||||
 | 
					        $title = $this->vacationRequest->name;
 | 
				
			||||||
 | 
					        $type = $this->vacationRequest->type->label();
 | 
				
			||||||
 | 
					        $from = $this->vacationRequest->from->format("d.m.Y");
 | 
				
			||||||
 | 
					        $to = $this->vacationRequest->to->format("d.m.Y");
 | 
				
			||||||
 | 
					        $days = $this->vacationRequest->vacations()->count();
 | 
				
			||||||
 | 
					        $requester = $this->vacationRequest->user->fullName;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        return (new MailMessage())
 | 
				
			||||||
 | 
					            ->greeting(__("Hi :user!", [
 | 
				
			||||||
 | 
					                "user" => $user,
 | 
				
			||||||
 | 
					            ]))
 | 
				
			||||||
 | 
					            ->subject(__("Vacation request :title has been approved", [
 | 
				
			||||||
 | 
					                "title" => $title,
 | 
				
			||||||
 | 
					            ]))
 | 
				
			||||||
 | 
					            ->line(__("The vacation request :title for user :requester has been approved.", [
 | 
				
			||||||
 | 
					                "title" => $title,
 | 
				
			||||||
 | 
					                "requester" => $requester,
 | 
				
			||||||
 | 
					            ]))
 | 
				
			||||||
 | 
					            ->line(__("Vacation type: :type", [
 | 
				
			||||||
 | 
					                "type" => $type,
 | 
				
			||||||
 | 
					            ]))
 | 
				
			||||||
 | 
					            ->line(__("From :from to :to (number of days: :days)", [
 | 
				
			||||||
 | 
					                "from" => $from,
 | 
				
			||||||
 | 
					                "to" => $to,
 | 
				
			||||||
 | 
					                "days" => $days,
 | 
				
			||||||
 | 
					            ]))
 | 
				
			||||||
 | 
					            ->action(__("Click here for details"), $url);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -0,0 +1,75 @@
 | 
				
			|||||||
 | 
					<?php
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					declare(strict_types=1);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace Toby\Domain\Notifications;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					use Illuminate\Bus\Queueable;
 | 
				
			||||||
 | 
					use Illuminate\Notifications\Messages\MailMessage;
 | 
				
			||||||
 | 
					use Illuminate\Notifications\Notification;
 | 
				
			||||||
 | 
					use InvalidArgumentException;
 | 
				
			||||||
 | 
					use Toby\Eloquent\Models\User;
 | 
				
			||||||
 | 
					use Toby\Eloquent\Models\VacationRequest;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class VacationRequestCancelledNotification extends Notification
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    use Queueable;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public function __construct(
 | 
				
			||||||
 | 
					        protected VacationRequest $vacationRequest,
 | 
				
			||||||
 | 
					        protected User $user,
 | 
				
			||||||
 | 
					    ) {
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public function via(): array
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        return ["mail"];
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * @throws InvalidArgumentException
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    public function toMail(): MailMessage
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        $url = route(
 | 
				
			||||||
 | 
					            "vacation.requests.show",
 | 
				
			||||||
 | 
					            [
 | 
				
			||||||
 | 
					                "vacationRequest" => $this->vacationRequest,
 | 
				
			||||||
 | 
					            ],
 | 
				
			||||||
 | 
					        );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        return $this->buildMailMessage($url);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    protected function buildMailMessage(string $url): MailMessage
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        $user = $this->vacationRequest->user->first_name;
 | 
				
			||||||
 | 
					        $title = $this->vacationRequest->name;
 | 
				
			||||||
 | 
					        $type = $this->vacationRequest->type->label();
 | 
				
			||||||
 | 
					        $from = $this->vacationRequest->from->format("d.m.Y");
 | 
				
			||||||
 | 
					        $to = $this->vacationRequest->to->format("d.m.Y");
 | 
				
			||||||
 | 
					        $days = $this->vacationRequest->vacations()->count();
 | 
				
			||||||
 | 
					        $requester = $this->vacationRequest->user->fullName;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        return (new MailMessage())
 | 
				
			||||||
 | 
					            ->greeting(__("Hi :user!", [
 | 
				
			||||||
 | 
					                "user" => $user,
 | 
				
			||||||
 | 
					            ]))
 | 
				
			||||||
 | 
					            ->subject(__("Vacation request :title has been cancelled", [
 | 
				
			||||||
 | 
					                "title" => $title,
 | 
				
			||||||
 | 
					            ]))
 | 
				
			||||||
 | 
					            ->line(__("The vacation request :title for user :requester has been cancelled.", [
 | 
				
			||||||
 | 
					                "title" => $title,
 | 
				
			||||||
 | 
					                "requester" => $requester,
 | 
				
			||||||
 | 
					            ]))
 | 
				
			||||||
 | 
					            ->line(__("Vacation type: :type", [
 | 
				
			||||||
 | 
					                "type" => $type,
 | 
				
			||||||
 | 
					            ]))
 | 
				
			||||||
 | 
					            ->line(__("From :from to :to (number of days: :days)", [
 | 
				
			||||||
 | 
					                "from" => $from,
 | 
				
			||||||
 | 
					                "to" => $to,
 | 
				
			||||||
 | 
					                "days" => $days,
 | 
				
			||||||
 | 
					            ]))
 | 
				
			||||||
 | 
					            ->action(__("Click here for details"), $url);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -35,25 +35,38 @@ class VacationRequestCreatedNotification extends Notification
 | 
				
			|||||||
                "vacationRequest" => $this->vacationRequest,
 | 
					                "vacationRequest" => $this->vacationRequest,
 | 
				
			||||||
            ],
 | 
					            ],
 | 
				
			||||||
        );
 | 
					        );
 | 
				
			||||||
 | 
					 | 
				
			||||||
        return $this->buildMailMessage($url);
 | 
					        return $this->buildMailMessage($url);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    protected function buildMailMessage(string $url): MailMessage
 | 
					    protected function buildMailMessage(string $url): MailMessage
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
 | 
					        $user = $this->vacationRequest->user->first_name;
 | 
				
			||||||
        $title = $this->vacationRequest->name;
 | 
					        $title = $this->vacationRequest->name;
 | 
				
			||||||
 | 
					        $type = $this->vacationRequest->type->label();
 | 
				
			||||||
        $user = $this->vacationRequest->user;
 | 
					        $from = $this->vacationRequest->from->format("d.m.Y");
 | 
				
			||||||
 | 
					        $to = $this->vacationRequest->to->format("d.m.Y");
 | 
				
			||||||
 | 
					        $days = $this->vacationRequest->vacations()->count();
 | 
				
			||||||
 | 
					        $appName = config("app.name");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        return (new MailMessage())
 | 
					        return (new MailMessage())
 | 
				
			||||||
            ->greeting(__("Hi :user!", [
 | 
					            ->greeting(__("Hi :user!", [
 | 
				
			||||||
                "user" => $user->fullName,
 | 
					                "user" => $user,
 | 
				
			||||||
            ]))
 | 
					            ]))
 | 
				
			||||||
            ->subject(__("Vacation request :title", [
 | 
					            ->subject(__("Vacation request :title has been created", [
 | 
				
			||||||
                "title" => $title,
 | 
					                "title" => $title,
 | 
				
			||||||
            ]))
 | 
					            ]))
 | 
				
			||||||
            ->line(__("Vacation request has been created.", [
 | 
					            ->line(__("The vacation request :title has been created correctly in the :appName.", [
 | 
				
			||||||
 | 
					                "title" => $title,
 | 
				
			||||||
 | 
					                "appName" => $appName,
 | 
				
			||||||
            ]))
 | 
					            ]))
 | 
				
			||||||
            ->action(__("Show vacation request"), $url);
 | 
					            ->line(__("Vacation type: :type", [
 | 
				
			||||||
 | 
					                "type" => $type,
 | 
				
			||||||
 | 
					            ]))
 | 
				
			||||||
 | 
					            ->line(__("From :from to :to (number of days: :days)", [
 | 
				
			||||||
 | 
					                "from" => $from,
 | 
				
			||||||
 | 
					                "to" => $to,
 | 
				
			||||||
 | 
					                "days" => $days,
 | 
				
			||||||
 | 
					            ]))
 | 
				
			||||||
 | 
					            ->action(__("Click here for details"), $url);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -43,17 +43,33 @@ class VacationRequestRejectedNotification extends Notification
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    protected function buildMailMessage(string $url): MailMessage
 | 
					    protected function buildMailMessage(string $url): MailMessage
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
 | 
					        $user = $this->vacationRequest->user->first_name;
 | 
				
			||||||
        $title = $this->vacationRequest->name;
 | 
					        $title = $this->vacationRequest->name;
 | 
				
			||||||
 | 
					        $type = $this->vacationRequest->type->label();
 | 
				
			||||||
 | 
					        $from = $this->vacationRequest->from->format("d.m.Y");
 | 
				
			||||||
 | 
					        $to = $this->vacationRequest->to->format("d.m.Y");
 | 
				
			||||||
 | 
					        $days = $this->vacationRequest->vacations()->count();
 | 
				
			||||||
 | 
					        $requester = $this->vacationRequest->user->fullName;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        return (new MailMessage())
 | 
					        return (new MailMessage())
 | 
				
			||||||
            ->greeting(__("Hi :user!", [
 | 
					            ->greeting(__("Hi :user!", [
 | 
				
			||||||
                "user" => $this->user->fullName,
 | 
					                "user" => $user,
 | 
				
			||||||
            ]))
 | 
					            ]))
 | 
				
			||||||
            ->subject(__("Vacation request :title", [
 | 
					            ->subject(__("Vacation request :title has been rejected", [
 | 
				
			||||||
                "title" => $title,
 | 
					                "title" => $title,
 | 
				
			||||||
            ]))
 | 
					            ]))
 | 
				
			||||||
            ->line(__("Vacation request has been rejected.", [
 | 
					            ->line(__("The vacation request :title for user :requester has been rejected.", [
 | 
				
			||||||
 | 
					                "title" => $title,
 | 
				
			||||||
 | 
					                "requester" => $requester,
 | 
				
			||||||
            ]))
 | 
					            ]))
 | 
				
			||||||
            ->action(__("Show vacation request"), $url);
 | 
					            ->line(__("Vacation type: :type", [
 | 
				
			||||||
 | 
					                "type" => $type,
 | 
				
			||||||
 | 
					            ]))
 | 
				
			||||||
 | 
					            ->line(__("From :from to :to (number of days: :days)", [
 | 
				
			||||||
 | 
					                "from" => $from,
 | 
				
			||||||
 | 
					                "to" => $to,
 | 
				
			||||||
 | 
					                "days" => $days,
 | 
				
			||||||
 | 
					            ]))
 | 
				
			||||||
 | 
					            ->action(__("Click here for details"), $url);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -0,0 +1,75 @@
 | 
				
			|||||||
 | 
					<?php
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					declare(strict_types=1);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace Toby\Domain\Notifications;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					use Illuminate\Bus\Queueable;
 | 
				
			||||||
 | 
					use Illuminate\Notifications\Messages\MailMessage;
 | 
				
			||||||
 | 
					use Illuminate\Notifications\Notification;
 | 
				
			||||||
 | 
					use InvalidArgumentException;
 | 
				
			||||||
 | 
					use Toby\Eloquent\Models\User;
 | 
				
			||||||
 | 
					use Toby\Eloquent\Models\VacationRequest;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class VacationRequestWaitedForAdministrativeNotification extends Notification
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    use Queueable;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public function __construct(
 | 
				
			||||||
 | 
					        protected VacationRequest $vacationRequest,
 | 
				
			||||||
 | 
					        protected User $user,
 | 
				
			||||||
 | 
					    ) {
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public function via(): array
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        return ["mail"];
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * @throws InvalidArgumentException
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    public function toMail(): MailMessage
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        $url = route(
 | 
				
			||||||
 | 
					            "vacation.requests.show",
 | 
				
			||||||
 | 
					            [
 | 
				
			||||||
 | 
					                "vacationRequest" => $this->vacationRequest,
 | 
				
			||||||
 | 
					            ],
 | 
				
			||||||
 | 
					        );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        return $this->buildMailMessage($url);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    protected function buildMailMessage(string $url): MailMessage
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        $user = $this->user->first_name;
 | 
				
			||||||
 | 
					        $requester = $this->vacationRequest->user->fullName;
 | 
				
			||||||
 | 
					        $title = $this->vacationRequest->name;
 | 
				
			||||||
 | 
					        $type = $this->vacationRequest->type->label();
 | 
				
			||||||
 | 
					        $from = $this->vacationRequest->from->format("d.m.Y");
 | 
				
			||||||
 | 
					        $to = $this->vacationRequest->to->format("d.m.Y");
 | 
				
			||||||
 | 
					        $days = $this->vacationRequest->vacations()->count();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        return (new MailMessage())
 | 
				
			||||||
 | 
					            ->greeting(__("Hi :user!", [
 | 
				
			||||||
 | 
					                "user" => $user,
 | 
				
			||||||
 | 
					            ]))
 | 
				
			||||||
 | 
					            ->subject(__("Vacation request :title is waiting for your approval", [
 | 
				
			||||||
 | 
					                "title" => $title,
 | 
				
			||||||
 | 
					            ]))
 | 
				
			||||||
 | 
					            ->line(__("The vacation request :title from user: :requester is waiting for your approval.", [
 | 
				
			||||||
 | 
					                "title" => $title,
 | 
				
			||||||
 | 
					                "requester" => $requester,
 | 
				
			||||||
 | 
					            ]))
 | 
				
			||||||
 | 
					            ->line(__("Vacation type: :type", [
 | 
				
			||||||
 | 
					                "type" => $type,
 | 
				
			||||||
 | 
					            ]))
 | 
				
			||||||
 | 
					            ->line(__("From :from to :to (number of days: :days)", [
 | 
				
			||||||
 | 
					                "from" => $from,
 | 
				
			||||||
 | 
					                "to" => $to,
 | 
				
			||||||
 | 
					                "days" => $days,
 | 
				
			||||||
 | 
					            ]))
 | 
				
			||||||
 | 
					            ->action(__("Click here for details"), $url);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -0,0 +1,75 @@
 | 
				
			|||||||
 | 
					<?php
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					declare(strict_types=1);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					namespace Toby\Domain\Notifications;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					use Illuminate\Bus\Queueable;
 | 
				
			||||||
 | 
					use Illuminate\Notifications\Messages\MailMessage;
 | 
				
			||||||
 | 
					use Illuminate\Notifications\Notification;
 | 
				
			||||||
 | 
					use InvalidArgumentException;
 | 
				
			||||||
 | 
					use Toby\Eloquent\Models\User;
 | 
				
			||||||
 | 
					use Toby\Eloquent\Models\VacationRequest;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class VacationRequestWaitedForTechnicalNotification extends Notification
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    use Queueable;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public function __construct(
 | 
				
			||||||
 | 
					        protected VacationRequest $vacationRequest,
 | 
				
			||||||
 | 
					        protected User $user,
 | 
				
			||||||
 | 
					    ) {
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public function via(): array
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        return ["mail"];
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * @throws InvalidArgumentException
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    public function toMail(): MailMessage
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        $url = route(
 | 
				
			||||||
 | 
					            "vacation.requests.show",
 | 
				
			||||||
 | 
					            [
 | 
				
			||||||
 | 
					                "vacationRequest" => $this->vacationRequest,
 | 
				
			||||||
 | 
					            ],
 | 
				
			||||||
 | 
					        );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        return $this->buildMailMessage($url);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    protected function buildMailMessage(string $url): MailMessage
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        $user = $this->user->first_name;
 | 
				
			||||||
 | 
					        $requester = $this->vacationRequest->user->fullName;
 | 
				
			||||||
 | 
					        $title = $this->vacationRequest->name;
 | 
				
			||||||
 | 
					        $type = $this->vacationRequest->type->label();
 | 
				
			||||||
 | 
					        $from = $this->vacationRequest->from->format("d.m.Y");
 | 
				
			||||||
 | 
					        $to = $this->vacationRequest->to->format("d.m.Y");
 | 
				
			||||||
 | 
					        $days = $this->vacationRequest->vacations()->count();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        return (new MailMessage())
 | 
				
			||||||
 | 
					            ->greeting(__("Hi :user!", [
 | 
				
			||||||
 | 
					                "user" => $user,
 | 
				
			||||||
 | 
					            ]))
 | 
				
			||||||
 | 
					            ->subject(__("Vacation request :title is waiting for your approval", [
 | 
				
			||||||
 | 
					                "title" => $title,
 | 
				
			||||||
 | 
					            ]))
 | 
				
			||||||
 | 
					            ->line(__("The vacation request :title from user: :requester is waiting for your approval.", [
 | 
				
			||||||
 | 
					                "title" => $title,
 | 
				
			||||||
 | 
					                "requester" => $requester,
 | 
				
			||||||
 | 
					            ]))
 | 
				
			||||||
 | 
					            ->line(__("Vacation type: :type", [
 | 
				
			||||||
 | 
					                "type" => $type,
 | 
				
			||||||
 | 
					            ]))
 | 
				
			||||||
 | 
					            ->line(__("From :from to :to (number of days: :days)", [
 | 
				
			||||||
 | 
					                "from" => $from,
 | 
				
			||||||
 | 
					                "to" => $to,
 | 
				
			||||||
 | 
					                "days" => $days,
 | 
				
			||||||
 | 
					            ]))
 | 
				
			||||||
 | 
					            ->action(__("Click here for details"), $url);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -10,8 +10,11 @@ use Toby\Domain\Enums\VacationRequestState;
 | 
				
			|||||||
use Toby\Domain\Events\VacationRequestAcceptedByAdministrative;
 | 
					use Toby\Domain\Events\VacationRequestAcceptedByAdministrative;
 | 
				
			||||||
use Toby\Domain\Events\VacationRequestAcceptedByTechnical;
 | 
					use Toby\Domain\Events\VacationRequestAcceptedByTechnical;
 | 
				
			||||||
use Toby\Domain\Events\VacationRequestApproved;
 | 
					use Toby\Domain\Events\VacationRequestApproved;
 | 
				
			||||||
 | 
					use Toby\Domain\Events\VacationRequestCancelled;
 | 
				
			||||||
use Toby\Domain\Events\VacationRequestCreated;
 | 
					use Toby\Domain\Events\VacationRequestCreated;
 | 
				
			||||||
use Toby\Domain\Events\VacationRequestRejected;
 | 
					use Toby\Domain\Events\VacationRequestRejected;
 | 
				
			||||||
 | 
					use Toby\Domain\Events\VacationRequestWaitedForAdministrative;
 | 
				
			||||||
 | 
					use Toby\Domain\Events\VacationRequestWaitedForTechnical;
 | 
				
			||||||
use Toby\Eloquent\Models\VacationRequest;
 | 
					use Toby\Eloquent\Models\VacationRequest;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class VacationRequestStateManager
 | 
					class VacationRequestStateManager
 | 
				
			||||||
@@ -39,12 +42,15 @@ class VacationRequestStateManager
 | 
				
			|||||||
    public function reject(VacationRequest $vacationRequest): void
 | 
					    public function reject(VacationRequest $vacationRequest): void
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        $this->changeState($vacationRequest, VacationRequestState::Rejected);
 | 
					        $this->changeState($vacationRequest, VacationRequestState::Rejected);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        $this->dispatcher->dispatch(new VacationRequestRejected($vacationRequest));
 | 
					        $this->dispatcher->dispatch(new VacationRequestRejected($vacationRequest));
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public function cancel(VacationRequest $vacationRequest): void
 | 
					    public function cancel(VacationRequest $vacationRequest): void
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        $this->changeState($vacationRequest, VacationRequestState::Canceled);
 | 
					        $this->changeState($vacationRequest, VacationRequestState::Canceled);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        $this->dispatcher->dispatch(new VacationRequestCancelled($vacationRequest));
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public function acceptAsTechnical(VacationRequest $vacationRequest): void
 | 
					    public function acceptAsTechnical(VacationRequest $vacationRequest): void
 | 
				
			||||||
@@ -64,11 +70,15 @@ class VacationRequestStateManager
 | 
				
			|||||||
    public function waitForTechnical(VacationRequest $vacationRequest): void
 | 
					    public function waitForTechnical(VacationRequest $vacationRequest): void
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        $this->changeState($vacationRequest, VacationRequestState::WaitingForTechnical);
 | 
					        $this->changeState($vacationRequest, VacationRequestState::WaitingForTechnical);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        $this->dispatcher->dispatch(new VacationRequestWaitedForTechnical($vacationRequest));
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public function waitForAdministrative(VacationRequest $vacationRequest): void
 | 
					    public function waitForAdministrative(VacationRequest $vacationRequest): void
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        $this->changeState($vacationRequest, VacationRequestState::WaitingForAdministrative);
 | 
					        $this->changeState($vacationRequest, VacationRequestState::WaitingForAdministrative);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        $this->dispatcher->dispatch(new VacationRequestWaitedForAdministrative($vacationRequest));
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    protected function changeState(VacationRequest $vacationRequest, VacationRequestState $state): void
 | 
					    protected function changeState(VacationRequest $vacationRequest, VacationRequestState $state): void
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -42,6 +42,7 @@
 | 
				
			|||||||
  "Vacation limits have been updated.": "Limity urlopów zostały zaktualizowane.",
 | 
					  "Vacation limits have been updated.": "Limity urlopów zostały zaktualizowane.",
 | 
				
			||||||
  "Vacation request has been created.": "Wniosek urlopowy został utworzony.",
 | 
					  "Vacation request has been created.": "Wniosek urlopowy został utworzony.",
 | 
				
			||||||
  "Vacation request has been accepted.": "Wniosek urlopowy został zaakceptowany.",
 | 
					  "Vacation request has been accepted.": "Wniosek urlopowy został zaakceptowany.",
 | 
				
			||||||
 | 
					  "Vacation request has been approved.": "Wniosek urlopowy został zatwierdzony.",
 | 
				
			||||||
  "Vacation request has been rejected.": "Wniosek urlopowy został odrzucony.",
 | 
					  "Vacation request has been rejected.": "Wniosek urlopowy został odrzucony.",
 | 
				
			||||||
  "Vacation request has been canceled.": "Wniosek urlopowy został anulowany.",
 | 
					  "Vacation request has been canceled.": "Wniosek urlopowy został anulowany.",
 | 
				
			||||||
  "Hi :user!": "Cześć :user!",
 | 
					  "Hi :user!": "Cześć :user!",
 | 
				
			||||||
@@ -50,5 +51,18 @@
 | 
				
			|||||||
  "Regards": "Z poważaniem",
 | 
					  "Regards": "Z poważaniem",
 | 
				
			||||||
  "If you're having trouble clicking the \":actionText\" button, copy and paste the URL below\ninto your web browser:": "Jeżeli masz problemy z kliknięciem przycisku \":actionText\", skopiuj i wklej poniższy adres w pasek przeglądarki:",
 | 
					  "If you're having trouble clicking the \":actionText\" button, copy and paste the URL below\ninto your web browser:": "Jeżeli masz problemy z kliknięciem przycisku \":actionText\", skopiuj i wklej poniższy adres w pasek przeglądarki:",
 | 
				
			||||||
  "All rights reserved.": "Wszelkie prawa zastrzeżone",
 | 
					  "All rights reserved.": "Wszelkie prawa zastrzeżone",
 | 
				
			||||||
  "Show vacation request": "Pokaż wniosek"
 | 
					  "Show vacation request": "Pokaż wniosek",
 | 
				
			||||||
 | 
					  "Vacation request :title has been created" : "Wniosek :title został utworzony",
 | 
				
			||||||
 | 
					  "The vacation request :title has been created correctly in the :appName.": "W systemie :appName został poprawnie utworzony wniosek urlopowy :title.",
 | 
				
			||||||
 | 
					  "Vacation type: :type": "Rodzaj wniosku: :type",
 | 
				
			||||||
 | 
					  "From :from to :to (number of days: :days)": "Od :from do :to (liczba dni: :days)",
 | 
				
			||||||
 | 
					  "Click here for details": "Kliknij, aby zobaczyć szczegóły",
 | 
				
			||||||
 | 
					  "Vacation request :title is waiting for your approval": "Wniosek urlopowy :title czeka na zaakceptowanie",
 | 
				
			||||||
 | 
					  "The vacation request :title from user: :requester is waiting for your approval.": "Wniosek urlopowy :title od użytkownika :requester czeka na Twoją akceptację.",
 | 
				
			||||||
 | 
					  "Vacation request :title has been approved": "Wniosek urlopowy :title został zatwierdzony",
 | 
				
			||||||
 | 
					  "The vacation request :title for user :requester has been approved.": "Wniosek urlopowy :title od użytkownika :requester został zatwierdzony.",
 | 
				
			||||||
 | 
					  "Vacation request :title has been cancelled": "WNiosek urlopowy :title został anulowany",
 | 
				
			||||||
 | 
					  "The vacation request :title for user :requester has been cancelled.": "Wniosek urlopowy :title  od użytkownika :requester został anulowany.",
 | 
				
			||||||
 | 
					  "Vacation request :title has been rejected": "Wniosek urlopowy :title został odrzucony",
 | 
				
			||||||
 | 
					  "The vacation request :title for user :requester has been rejected.": "Wniosek urlopowy :title od użytkownika :requester został odrzucony."
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user