diff --git a/app/Infrastructure/Http/Controllers/AnnualSummaryController.php b/app/Infrastructure/Http/Controllers/AnnualSummaryController.php
new file mode 100644
index 0000000..bc2a2d7
--- /dev/null
+++ b/app/Infrastructure/Http/Controllers/AnnualSummaryController.php
@@ -0,0 +1,46 @@
+selected();
+
+ $startDate = Carbon::createFromDate($yearPeriod->year)->startOfYear()->startOfWeek();
+ $endDate = Carbon::createFromDate($yearPeriod->year)->endOfYear()->endOfWeek();
+
+ $holidays = $yearPeriod->holidays()
+ ->whereBetween("date", [$startDate, $endDate])
+ ->get();
+
+ $vacations = $request->user()
+ ->vacations()
+ ->with("vacationRequest")
+ ->whereBetween("date", [$startDate, $endDate])
+ ->approved()
+ ->get();
+
+ $pendingVacations = $request->user()
+ ->vacations()
+ ->with("vacationRequest")
+ ->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]),
+ ]);
+ }
+}
diff --git a/resources/js/Pages/Test.vue b/resources/js/Pages/AnnualSummary.vue
similarity index 69%
rename from resources/js/Pages/Test.vue
rename to resources/js/Pages/AnnualSummary.vue
index eb7c03d..028568a 100644
--- a/resources/js/Pages/Test.vue
+++ b/resources/js/Pages/AnnualSummary.vue
@@ -24,18 +24,35 @@
Nd
-
-
-
+
+
+
+
+
-
+
+
+
+
+
+
diff --git a/resources/js/Shared/MainMenu.vue b/resources/js/Shared/MainMenu.vue
index a594833..89c9bd2 100644
--- a/resources/js/Shared/MainMenu.vue
+++ b/resources/js/Shared/MainMenu.vue
@@ -335,6 +335,14 @@ const navigation = computed(() =>
icon: SunIcon,
can: props.auth.can.manageVacationLimits,
},
+ {
+
+ name: 'Podsumowanie roczne',
+ href: '/vacation/annual-summary',
+ component: 'AnnualSummary',
+ icon: SunIcon,
+ can: true,
+ },
{
name: 'Użytkownicy',
href: '/users',
diff --git a/routes/web.php b/routes/web.php
index 9292b82..33f8720 100644
--- a/routes/web.php
+++ b/routes/web.php
@@ -2,12 +2,8 @@
declare(strict_types=1);
-use Illuminate\Http\Request;
-use Illuminate\Support\Carbon;
use Illuminate\Support\Facades\Route;
-use Toby\Eloquent\Helpers\YearPeriodRetriever;
-use Toby\Eloquent\Models\Holiday;
-use Toby\Eloquent\Models\Vacation;
+use Toby\Infrastructure\Http\Controllers\AnnualSummaryController;
use Toby\Infrastructure\Http\Controllers\DashboardController;
use Toby\Infrastructure\Http\Controllers\GoogleController;
use Toby\Infrastructure\Http\Controllers\HolidayController;
@@ -33,72 +29,44 @@ Route::middleware("auth")->group(function (): void {
Route::post("year-periods/{yearPeriod}/select", SelectYearPeriodController::class)
->name("year-periods.select");
- Route::prefix("/vacation")->group(function (): void {
+ Route::prefix("/vacation")->as("vacation.")->group(function (): void {
Route::get("/limits", [VacationLimitController::class, "edit"])
- ->name("vacation.limits");
+ ->name("limits");
Route::get("/calendar/{month?}", [VacationCalendarController::class, "index"])
- ->name("vacation.calendar");
+ ->name("calendar");
Route::get("/timesheet/{month}", TimesheetController::class)
->name("timesheet");
Route::get("/limits", [VacationLimitController::class, "edit"])
- ->name("vacation.limits");
+ ->name("limits");
Route::put("/limits", [VacationLimitController::class, "update"]);
Route::get("/requests", [VacationRequestController::class, "indexForApprovers"])
- ->name("vacation.requests.indexForApprovers");
+ ->name("requests.indexForApprovers");
Route::get("/requests/me", [VacationRequestController::class, "index"])
- ->name("vacation.requests.index");
+ ->name("requests.index");
Route::get("/requests/create", [VacationRequestController::class, "create"])
- ->name("vacation.requests.create");
+ ->name("requests.create");
Route::post("/requests", [VacationRequestController::class, "store"])
- ->name("vacation.requests.store");
+ ->name("requests.store");
Route::get("/requests/{vacationRequest}", [VacationRequestController::class, "show"])
- ->name("vacation.requests.show");
+ ->name("requests.show");
Route::get("/requests/{vacationRequest}/download", [VacationRequestController::class, "download"])
- ->name("vacation.requests.download");
+ ->name("requests.download");
Route::post("/requests/{vacationRequest}/reject", [VacationRequestController::class, "reject"])
- ->name("vacation.requests.reject");
+ ->name("requests.reject");
Route::post("/requests/{vacationRequest}/cancel", [VacationRequestController::class, "cancel"])
- ->name("vacation.requests.cancel");
+ ->name("requests.cancel");
Route::post("/requests/{vacationRequest}/accept-as-technical", [VacationRequestController::class, "acceptAsTechnical"], )
- ->name("vacation.requests.accept-as-technical");
+ ->name("requests.accept-as-technical");
Route::post("/requests/{vacationRequest}/accept-as-administrative", [VacationRequestController::class, "acceptAsAdministrative"], )
- ->name("vacation.requests.accept-as-administrative");
+ ->name("requests.accept-as-administrative");
Route::get("/monthly-usage", MonthlyUsageController::class)
- ->name("vacation.monthly-usage");
- });
+ ->name("monthly-usage");
+ Route::get("/annual-summary", AnnualSummaryController::class)
+ ->name("annual-summmary");
- Route::get("/test", function (Request $request, YearPeriodRetriever $yearPeriodRetriever) {
- $yearPeriod = $yearPeriodRetriever->selected();
-
- $startDate = Carbon::createFromDate($yearPeriod->year)->startOfYear()->startOfWeek();
- $endDate = Carbon::createFromDate($yearPeriod->year)->endOfYear()->endOfWeek();
-
- $holidays = $yearPeriod->holidays()
- ->whereBetween("date", [$startDate, $endDate])
- ->get();
-
- $vacations = $request->user()
- ->vacations()
- ->with("vacationRequest")
- ->whereBetween("date", [$startDate, $endDate])
- ->approved()
- ->get();
-
- $pendingVacations = $request->user()
- ->vacations()
- ->with("vacationRequest")
- ->whereBetween("date", [$startDate, $endDate])
- ->pending()
- ->get();
-
- return inertia("Test", [
- "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]),
- ]);
});
});