Merge branch 'main' into #41-email-notifications

This commit is contained in:
EwelinaLasowy
2022-02-16 09:33:15 +01:00
10 changed files with 660 additions and 7 deletions

View File

@@ -4,9 +4,9 @@ declare(strict_types=1);
namespace Toby\Domain\Listeners;
use Illuminate\Support\Facades\Log;
use Toby\Domain\Events\VacationRequestApproved;
use Toby\Domain\VacationTypeConfigRetriever;
use Toby\Infrastructure\Jobs\SendVacationRequestDaysToGoogleCalendar;
class HandleApprovedVacationRequest
{
@@ -17,8 +17,6 @@ class HandleApprovedVacationRequest
public function handle(VacationRequestApproved $event): void
{
$vacationRequest = $event->vacationRequest;
Log::info("approved! {$vacationRequest->id}");
SendVacationRequestDaysToGoogleCalendar::dispatch($event->vacationRequest);
}
}

View File

@@ -12,6 +12,7 @@ use Illuminate\Support\Carbon;
/**
* @property int $id
* @property Carbon $date
* @property string $event_id
* @property User $user
* @property VacationRequest $vacationRequest
* @property YearPeriod $yearPeriod

View File

@@ -0,0 +1,43 @@
<?php
declare(strict_types=1);
namespace Toby\Infrastructure\Jobs;
use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable;
use Spatie\GoogleCalendar\Event;
use Toby\Eloquent\Models\Vacation;
use Toby\Eloquent\Models\VacationRequest;
class SendVacationRequestDaysToGoogleCalendar implements ShouldQueue
{
use Dispatchable;
use Queueable;
public function __construct(
protected VacationRequest $vacationRequest,
) {
}
public function handle(): void
{
$vacations = $this->vacationRequest->vacations()
->whereNull("event_id")
->get();
/** @var Vacation $vacation */
foreach ($vacations as $vacation) {
$event = Event::create([
"name" => "{$this->vacationRequest->type->label()} - {$this->vacationRequest->user->fullName}",
"startDate" => $vacation->date,
"endDate" => $vacation->date,
]);
$vacation->update([
"event_id" => $event->id,
]);
}
}
}