This commit is contained in:
Adrian Hopek
2022-04-06 14:27:04 +02:00
parent 2a574bec62
commit aeb43fe448
7 changed files with 205 additions and 18 deletions

View File

@@ -10,6 +10,7 @@ use Inertia\Response;
use Toby\Eloquent\Helpers\YearPeriodRetriever;
use Toby\Eloquent\Models\Holiday;
use Toby\Eloquent\Models\Vacation;
use Toby\Infrastructure\Http\Resources\SimpleVacationRequestResource;
class AnnualSummaryController extends Controller
{
@@ -25,22 +26,22 @@ class AnnualSummaryController extends Controller
$vacations = $request->user()
->vacations()
->with("vacationRequest")
->with("vacationRequest.vacations")
->whereBetween("date", [$startDate, $endDate])
->approved()
->get();
$pendingVacations = $request->user()
->vacations()
->with("vacationRequest")
->with("vacationRequest.vacations")
->whereBetween("date", [$startDate, $endDate])
->pending()
->get();
return inertia("AnnualSummary", [
"holidays" => $holidays->mapWithKeys(fn(Holiday $holiday) => [$holiday->date->toDateString() => $holiday->name]),
"vacations" => $vacations->mapWithKeys(fn(Vacation $vacation) => [$vacation->date->toDateString() => $vacation->vacationRequest->type]),
"pendingVacations" => $pendingVacations->mapWithKeys(fn(Vacation $vacation) => [$vacation->date->toDateString() => $vacation->vacationRequest->type]),
"vacations" => $vacations->mapWithKeys(fn(Vacation $vacation) => [$vacation->date->toDateString() => new SimpleVacationRequestResource($vacation->vacationRequest)]),
"pendingVacations" => $pendingVacations->mapWithKeys(fn(Vacation $vacation) => [$vacation->date->toDateString() => new SimpleVacationRequestResource($vacation->vacationRequest)]),
]);
}
}

View File

@@ -0,0 +1,25 @@
<?php
declare(strict_types=1);
namespace Toby\Infrastructure\Http\Resources;
use Illuminate\Http\Resources\Json\JsonResource;
class SimpleVacationRequestResource extends JsonResource
{
public static $wrap = null;
public function toArray($request): array
{
return [
"id" => $this->id,
"name" => $this->name,
"type" => $this->type,
"state" => $this->state,
"from" => $this->from->toDisplayString(),
"to" => $this->to->toDisplayString(),
"days" => $this->vacations->count(),
];
}
}