From 84b1805015d25b0a35247aa4b69f919ec1b2a249 Mon Sep 17 00:00:00 2001 From: Adrian Hopek Date: Wed, 6 Apr 2022 10:01:22 +0200 Subject: [PATCH] wip --- .../Controllers/AnnualSummaryController.php | 46 +++++++++++++ .../js/Pages/{Test.vue => AnnualSummary.vue} | 33 ++++++--- resources/js/Shared/MainMenu.vue | 8 +++ routes/web.php | 68 +++++-------------- 4 files changed, 97 insertions(+), 58 deletions(-) create mode 100644 app/Infrastructure/Http/Controllers/AnnualSummaryController.php rename resources/js/Pages/{Test.vue => AnnualSummary.vue} (69%) 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]), - ]); }); });