diff --git a/app/Infrastructure/Http/Controllers/VacationRequestController.php b/app/Infrastructure/Http/Controllers/VacationRequestController.php index 84ce8e5..80a2cca 100644 --- a/app/Infrastructure/Http/Controllers/VacationRequestController.php +++ b/app/Infrastructure/Http/Controllers/VacationRequestController.php @@ -43,8 +43,32 @@ class VacationRequestController extends Controller ->states(VacationRequestStatesRetriever::filterByStatusGroup($status, $request->user())) ->paginate(); + $pending = $request->user() + ->vacationRequests() + ->where("year_period_id", $yearPeriodRetriever->selected()->id) + ->states(VacationRequestStatesRetriever::pendingStates()) + ->count(); + + $success = $request->user() + ->vacationRequests() + ->where("year_period_id", $yearPeriodRetriever->selected()->id) + ->states(VacationRequestStatesRetriever::successStates()) + ->count(); + + $failed = $request->user() + ->vacationRequests() + ->where("year_period_id", $yearPeriodRetriever->selected()->id) + ->states(VacationRequestStatesRetriever::failedStates()) + ->count(); + return inertia("VacationRequest/Index", [ "requests" => VacationRequestResource::collection($vacationRequests), + "stats" => [ + "all" => $pending + $success + $failed, + "pending" => $pending, + "success" => $success, + "failed" => $failed, + ], "filters" => [ "status" => $status, ], diff --git a/resources/js/Pages/VacationRequest/Index.vue b/resources/js/Pages/VacationRequest/Index.vue index cd42557..dcdad8a 100644 --- a/resources/js/Pages/VacationRequest/Index.vue +++ b/resources/js/Pages/VacationRequest/Index.vue @@ -25,6 +25,12 @@ :class="[status.value === filters.status ? 'text-blumilk-600 font-semibold' : 'hover:bg-blumilk-25 text-gray-700 focus:z-10', 'group relative min-w-0 flex-1 overflow-hidden bg-white py-4 px-4 text-sm font-medium text-center']" > {{ status.name }} + + {{ stats[status.value] }} + @@ -210,6 +216,15 @@ export default { type: Object, default: () => null, }, + stats: { + type: Object, + default: () => ({ + all: 0, + pending: 0, + success: 0, + failed: 0, + }), + }, filters: { type: Object, default: () => null,