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,