From e265e2ec3505114b1ec29488d860df7a3d8c4aa3 Mon Sep 17 00:00:00 2001 From: arifal Date: Fri, 12 Sep 2025 11:22:18 +0700 Subject: [PATCH] fix sort order sidebar menu and percentage bigdata resume --- .../Api/BigDataResumeController.php | 24 +++++++++---------- app/Http/Resources/MenuResource.php | 5 ++++ app/Providers/AppServiceProvider.php | 3 ++- database/seeders/UsersRoleMenuSeeder.php | 6 ++--- 4 files changed, 22 insertions(+), 16 deletions(-) diff --git a/app/Http/Controllers/Api/BigDataResumeController.php b/app/Http/Controllers/Api/BigDataResumeController.php index 3fa0099..e0fd3b8 100644 --- a/app/Http/Controllers/Api/BigDataResumeController.php +++ b/app/Http/Controllers/Api/BigDataResumeController.php @@ -76,19 +76,19 @@ class BigDataResumeController extends Controller $total_potensi_percentage = $big_data_resume->potention_sum > 0 && $target_pad > 0 ? round(($big_data_resume->potention_sum / $target_pad) * 100, 2) : 0; - // percentage verified document (verified_sum / potention_sum) - by value/amount - $verified_percentage = $big_data_resume->potention_sum > 0 && $big_data_resume->verified_sum >= 0 - ? round(($big_data_resume->verified_sum / $big_data_resume->potention_sum) * 100, 2) : 0; + // // percentage verified document (verified_sum / potention_sum) - by value/amount + // $verified_percentage = $big_data_resume->potention_sum > 0 && $big_data_resume->verified_sum >= 0 + // ? round(($big_data_resume->verified_sum / $big_data_resume->potention_sum) * 100, 2) : 0; - // percentage non-verified document (non_verified_sum / potention_sum) - by value/amount - $non_verified_percentage = $big_data_resume->potention_sum > 0 && $big_data_resume->non_verified_sum >= 0 - ? round(($big_data_resume->non_verified_sum / $big_data_resume->potention_sum) * 100, 2) : 0; + // // percentage non-verified document (non_verified_sum / potention_sum) - by value/amount + // $non_verified_percentage = $big_data_resume->potention_sum > 0 && $big_data_resume->non_verified_sum >= 0 + // ? round(($big_data_resume->non_verified_sum / $big_data_resume->potention_sum) * 100, 2) : 0; // Alternative: percentage by count (if needed) - // $verified_count_percentage = $big_data_resume->potention_count > 0 - // ? round(($big_data_resume->verified_count / $big_data_resume->potention_count) * 100, 2) : 0; - // $non_verified_count_percentage = $big_data_resume->potention_count > 0 - // ? round(($big_data_resume->non_verified_count / $big_data_resume->potention_count) * 100, 2) : 0; + $verified_count_percentage = $big_data_resume->potention_count > 0 && $big_data_resume->verified_count > 0 + ? round(($big_data_resume->verified_count / $big_data_resume->potention_count) * 100, 2) : 0; + $non_verified_count_percentage = $big_data_resume->potention_count > 0 && $big_data_resume->non_verified_count > 0 + ? round(($big_data_resume->non_verified_count / $big_data_resume->potention_count) * 100, 2) : 0; // percentage business document (business / non_verified) $business_percentage = $big_data_resume->non_verified_sum > 0 && $big_data_resume->business_sum >= 0 @@ -146,12 +146,12 @@ class BigDataResumeController extends Controller 'verified_document' => [ 'sum' => (float) $big_data_resume->verified_sum, 'count' => $big_data_resume->verified_count, - 'percentage' => $verified_percentage + 'percentage' => $verified_count_percentage ], 'non_verified_document' => [ 'sum' => (float) $big_data_resume->non_verified_sum, 'count' => $big_data_resume->non_verified_count, - 'percentage' => $non_verified_percentage + 'percentage' => $non_verified_count_percentage ], 'business_document' => [ 'sum' => (float) $big_data_resume->business_sum, diff --git a/app/Http/Resources/MenuResource.php b/app/Http/Resources/MenuResource.php index 72cb9d0..2ffcaa7 100644 --- a/app/Http/Resources/MenuResource.php +++ b/app/Http/Resources/MenuResource.php @@ -22,6 +22,11 @@ class MenuResource extends JsonResource 'url' => $this->url, 'sort_order' => $this->sort_order, 'parent' => $this->parent ? new MenuResource($this->parent) : null, + 'children' => $this->when($this->relationLoaded('children'), function () { + return $this->children->sortBy('sort_order')->map(function ($child) { + return new MenuResource($child); + }); + }), 'created_at' => $this->created_at, 'updated_at' => $this->updated_at ]; diff --git a/app/Providers/AppServiceProvider.php b/app/Providers/AppServiceProvider.php index 2dd445b..cb4925e 100644 --- a/app/Providers/AppServiceProvider.php +++ b/app/Providers/AppServiceProvider.php @@ -64,7 +64,8 @@ class AppServiceProvider extends ServiceProvider $query->whereHas('roles', function ($subQuery) use ($user) { $subQuery->whereIn('roles.id', $user->roles->pluck('id')) ->where('role_menu.allow_show', 1); - }); + }) + ->orderBy('sort_order', 'asc'); }]) ->whereNull('parent_id') // Ambil hanya menu utama ->orderBy('sort_order', 'asc') diff --git a/database/seeders/UsersRoleMenuSeeder.php b/database/seeders/UsersRoleMenuSeeder.php index 294dd01..796cfec 100644 --- a/database/seeders/UsersRoleMenuSeeder.php +++ b/database/seeders/UsersRoleMenuSeeder.php @@ -21,7 +21,7 @@ class UsersRoleMenuSeeder extends Seeder // Fetch all menus in a single query and index by name $menus = Menu::whereIn('name', [ 'Dashboard', 'Master', 'Settings', 'Data Settings', 'Data', 'Laporan', 'Neng Bedas', - 'Approval', 'Tools', 'Dashboard PBG', 'Users', 'Syncronize', + 'Approval', 'Tools', 'Users', 'Syncronize', 'Dashboard Pimpinan (SIMBG)', 'Menu', 'Role', 'Setting Dashboard', 'PBG', 'Reklame', 'Usaha atau Industri', 'Pariwisata', 'Lap Pariwisata', 'UMKM', 'Dashboard Potensi', 'Tata Ruang', 'PDAM', 'PETA', 'Lap Pimpinan', 'Dalam Sistem', 'Luar Sistem', 'Google Sheets', 'TPA TPT', 'Pajak', @@ -32,14 +32,14 @@ class UsersRoleMenuSeeder extends Seeder $permissions = [ 'superadmin' => [ 'Dashboard', 'Master', 'Settings', 'Data Settings', 'Data', 'Laporan', 'Neng Bedas', - 'Approval', 'Tools', 'Dashboard PBG', 'Users', 'Syncronize', + 'Approval', 'Tools', 'Users', 'Syncronize', 'Dashboard Pimpinan (SIMBG)', 'Menu', 'Role', 'Setting Dashboard', 'PBG', 'Reklame', 'Usaha atau Industri', 'Pariwisata', 'Lap Pariwisata', 'UMKM', 'Dashboard Potensi', 'Tata Ruang', 'PDAM', 'Dalam Sistem', 'Luar Sistem', 'Lap Pimpinan', 'Google Sheets', 'TPA TPT', 'Approval Pejabat', 'Undangan', 'Rekap Pembayaran', 'Lap Rekap Data Pembayaran', 'Lap PBG (PTSP)', 'Lap Pertumbuhan', 'Pajak' ], 'user' => ['Dashboard', 'Data', 'Laporan', 'Neng Bedas', - 'Approval', 'Tools', 'Dashboard PBG', 'Users', 'Syncronize', + 'Approval', 'Tools', 'Users', 'Syncronize', 'Dashboard Pimpinan (SIMBG)', 'Menu', 'Role', 'Setting Dashboard', 'PBG', 'Reklame', 'Usaha atau Industri', 'Pariwisata', 'Lap Pariwisata', 'UMKM', 'Dashboard Potensi', 'Tata Ruang', 'PDAM', 'Dalam Sistem', 'Luar Sistem', 'Lap Pimpinan', 'Google Sheets', 'TPA TPT', 'Approval Pejabat',