diff --git a/app/Infrastructure/Http/Controllers/DashboardController.php b/app/Infrastructure/Http/Controllers/DashboardController.php index 9f164a9..317fd22 100644 --- a/app/Infrastructure/Http/Controllers/DashboardController.php +++ b/app/Infrastructure/Http/Controllers/DashboardController.php @@ -12,8 +12,11 @@ use Toby\Domain\UserVacationStatsRetriever; use Toby\Domain\VacationRequestStatesRetriever; use Toby\Domain\VacationTypeConfigRetriever; use Toby\Eloquent\Helpers\YearPeriodRetriever; +use Toby\Eloquent\Models\Holiday; +use Toby\Eloquent\Models\Vacation; use Toby\Eloquent\Models\VacationRequest; use Toby\Infrastructure\Http\Resources\HolidayResource; +use Toby\Infrastructure\Http\Resources\SimpleVacationRequestResource; use Toby\Infrastructure\Http\Resources\VacationRequestResource; use Toby\Infrastructure\Http\Resources\VacationResource; @@ -54,6 +57,22 @@ class DashboardController extends Controller ->limit(3) ->get(); + $allHolidays = $yearPeriod->holidays; + + $approvedVacations = $request->user() + ->vacations() + ->with("vacationRequest.vacations") + ->whereBelongsTo($yearPeriod) + ->approved() + ->get(); + + $pendingVacations = $request->user() + ->vacations() + ->with("vacationRequest.vacations") + ->whereBelongsTo($yearPeriod) + ->pending() + ->get(); + $limit = $vacationStatsRetriever->getVacationDaysLimit($user, $yearPeriod); $used = $vacationStatsRetriever->getUsedVacationDays($user, $yearPeriod); $pending = $vacationStatsRetriever->getPendingVacationDays($user, $yearPeriod); @@ -66,6 +85,19 @@ class DashboardController extends Controller "remoteDays" => VacationResource::collection($remoteDays), "vacationRequests" => VacationRequestResource::collection($vacationRequests), "holidays" => HolidayResource::collection($holidays), + "allHolidays" => $allHolidays->mapWithKeys( + fn(Holiday $holiday): array => [$holiday->date->toDateString() => $holiday->name], + ), + "approvedVacations" => $approvedVacations->mapWithKeys( + fn(Vacation $vacation): array => [ + $vacation->date->toDateString() => new SimpleVacationRequestResource($vacation->vacationRequest), + ], + ), + "pendingVacations" => $pendingVacations->mapWithKeys( + fn(Vacation $vacation): array => [ + $vacation->date->toDateString() => new SimpleVacationRequestResource($vacation->vacationRequest), + ], + ), "stats" => [ "limit" => $limit, "remaining" => $remaining, diff --git a/resources/js/Pages/Dashboard.vue b/resources/js/Pages/Dashboard.vue index 1188c6d..b6968ba 100644 --- a/resources/js/Pages/Dashboard.vue +++ b/resources/js/Pages/Dashboard.vue @@ -3,7 +3,11 @@