#6 - Google calendar (#52)

* change layout

* change layout

* #22 - wip

* wip

* wip

* #22 - wip

* #22 - wip

* #22 - wip

* #22 - wip

* #22 - fix

* #22 - wip

* #22 - added some tests

* #22 - wip

* #22 - wip

* #22 - fix

* #22 - wip

* #22 - wip

* #22 - wip

* #22 - fix

* #22 - fix

* #22 - fix

* #22 - fix

* #22 - fix

* #22 - fix

* #6 - wip

* #6 - update readme

* #6 - fix

Co-authored-by: EwelinaLasowy <ewelina.lasowy@blumilk.pl>
This commit is contained in:
Adrian Hopek
2022-02-16 09:01:11 +01:00
committed by GitHub
parent f81c7ca8fa
commit 026dd87a44
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,
]);
}
}
}