From 41ee835f1f2424f0ec3efb4bbae77028abfecd62 Mon Sep 17 00:00:00 2001 From: Yoga Pangestu Date: Tue, 23 Jun 2026 14:15:32 +0700 Subject: [PATCH] feat: implement analysis module with dedicated controller, view, and role-based permissions --- app/Enums/Permission.php | 3 + app/Enums/Role.php | 2 + .../Controllers/Admin/AnalysisController.php | 21 +++++ resources/js/components/AppSidebar.vue | 3 +- resources/js/pages/admin/Analysis.vue | 85 +++++++++++++++++++ routes/web.php | 5 ++ 6 files changed, 118 insertions(+), 1 deletion(-) create mode 100644 app/Http/Controllers/Admin/AnalysisController.php create mode 100644 resources/js/pages/admin/Analysis.vue diff --git a/app/Enums/Permission.php b/app/Enums/Permission.php index 94aa1c9..906f665 100644 --- a/app/Enums/Permission.php +++ b/app/Enums/Permission.php @@ -9,6 +9,7 @@ enum Permission: string use ProvidesEnumOptions; case DASHBOARD_VIEW = 'dashboard.view'; + case ANALYSIS_VIEW = 'analysis.view'; case EMPLOYEES_VIEW = 'employees.view'; case EMPLOYEES_CREATE = 'employees.create'; @@ -117,6 +118,7 @@ public function label(): string { return match ($this) { self::DASHBOARD_VIEW => 'Lihat Dashboard', + self::ANALYSIS_VIEW => 'Lihat Analisa', self::EMPLOYEES_VIEW => 'Lihat Pegawai', self::EMPLOYEES_CREATE => 'Tambah Pegawai', @@ -227,6 +229,7 @@ public function group(): string { return match ($this) { self::DASHBOARD_VIEW => 'Umum', + self::ANALYSIS_VIEW => 'Umum', self::EMPLOYEES_VIEW, self::EMPLOYEES_CREATE, self::EMPLOYEES_UPDATE, self::EMPLOYEES_DELETE, self::EMPLOYEES_RESET_PASSWORD, self::EMPLOYEES_TOGGLE_STATUS => 'Pegawai', self::ATTENDANCES_VIEW, self::ATTENDANCES_CREATE, self::ATTENDANCES_DELETE, diff --git a/app/Enums/Role.php b/app/Enums/Role.php index 9243b8e..0720df5 100644 --- a/app/Enums/Role.php +++ b/app/Enums/Role.php @@ -44,6 +44,7 @@ public function permissions(): array self::DIREKTUR => [ Permission::DASHBOARD_VIEW, + Permission::ANALYSIS_VIEW, Permission::EMPLOYEES_VIEW, @@ -90,6 +91,7 @@ public function permissions(): array self::ADMIN_TOKO => [ Permission::DASHBOARD_VIEW, + Permission::ANALYSIS_VIEW, Permission::STOCKS_VIEW, diff --git a/app/Http/Controllers/Admin/AnalysisController.php b/app/Http/Controllers/Admin/AnalysisController.php new file mode 100644 index 0000000..2782f51 --- /dev/null +++ b/app/Http/Controllers/Admin/AnalysisController.php @@ -0,0 +1,21 @@ + [ + 'search' => $request->query('search', ''), + 'status' => $request->query('status', ''), + ], + ]); + } +} diff --git a/resources/js/components/AppSidebar.vue b/resources/js/components/AppSidebar.vue index a8c9d0d..4946428 100644 --- a/resources/js/components/AppSidebar.vue +++ b/resources/js/components/AppSidebar.vue @@ -1,6 +1,6 @@ + + diff --git a/routes/web.php b/routes/web.php index dd78d3b..1841990 100644 --- a/routes/web.php +++ b/routes/web.php @@ -5,6 +5,7 @@ use App\Http\Controllers\Admin\Account\PasswordController; use App\Http\Controllers\Admin\Account\PermissionsController; use App\Http\Controllers\Admin\Account\ProfileController; +use App\Http\Controllers\Admin\AnalysisController; use App\Http\Controllers\Admin\DashboardController; use App\Http\Controllers\Admin\Finance\CashController; use App\Http\Controllers\Admin\Finance\EmployeeAdvanceController; @@ -53,6 +54,10 @@ Route::get('/dashboard', [DashboardController::class, 'index']) ->name('dashboard'); + Route::get('/analysis', [AnalysisController::class, 'index']) + ->middleware('permission:'.Permission::ANALYSIS_VIEW->value) + ->name('analysis'); + Route::prefix('master')->name('master.')->group(function () { Route::prefix('categories')->name('categories.') ->middleware('permission:'.Permission::CATEGORIES_VIEW->value)