user(); $now = Carbon::now(); $yearPeriod = $yearPeriodRetriever->selected(); $absences = $dailySummaryRetriever->getAbsences($now); $remoteDays = $dailySummaryRetriever->getRemoteDays($now); if ($user->can("listAll", VacationRequest::class)) { $vacationRequests = $yearPeriod->vacationRequests() ->states(VacationRequestStatesRetriever::waitingForUserActionStates($user)) ->latest("updated_at") ->limit(3) ->get(); } else { $vacationRequests = $user->vacationRequests() ->whereBelongsTo($yearPeriod) ->latest("updated_at") ->limit(3) ->get(); } $holidays = $yearPeriod ->holidays() ->whereDate("date", ">=", $now) ->orderBy("date") ->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); $homeOffice = $vacationStatsRetriever->getHomeOfficeDays($user, $yearPeriod); $other = $vacationStatsRetriever->getOtherApprovedVacationDays($user, $yearPeriod); $remaining = $limit - $used - $pending; return inertia("Dashboard", [ "absences" => VacationResource::collection($absences), "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, "used" => $used, "pending" => $pending, "homeOffice" => $homeOffice, "other" => $other, ], "can" => [ "listAllVacationRequests" => $user->can("listAll", VacationRequest::class), ], ]); } }