From 738d53a67a651bf40f982fb2ee3038e23fdb53bf Mon Sep 17 00:00:00 2001 From: Jagad R R Date: Mon, 21 Jul 2025 19:33:16 +0700 Subject: [PATCH] fix filter cabang by role --- .../Controllers/Master/CabangController.php | 40 +++++++++++++++++-- 1 file changed, 37 insertions(+), 3 deletions(-) diff --git a/app/Http/Controllers/Master/CabangController.php b/app/Http/Controllers/Master/CabangController.php index e4313d1..375fa72 100644 --- a/app/Http/Controllers/Master/CabangController.php +++ b/app/Http/Controllers/Master/CabangController.php @@ -23,10 +23,44 @@ class CabangController extends Controller ]); } - public function getCabangByRegion($regionCode) + public function getCabangByRegion($regionCode = null) { - $region_id = Region::where('code', $regionCode)->first()->id; - $cabang = Cabang::where('region_id', $region_id)->get(['code', 'name']); + // Get the authenticated user's role + $role = auth()->user()->getRoleNames()->first(); // Assuming you're using Spatie's Laravel-permission package + + $cabangQuery = Cabang::query(); // Start a new query builder instance + + if ($role == 'Admin Region' || $role == 'Marketing Operational Manager Region') { + $region_id = auth()->user()->getMyCabangAndRegionId()['region']; + if ($region_id) { + $cabangQuery->where('region_id', $region_id); + } else { + // If no region is found for the user, return an empty array + return response()->json([]); + } + } elseif ($role == 'Area Manager Cabang') { + $cabang_id = auth()->user()->getMyCabangAndRegionId()['cabang']; + if ($cabang_id) { + $cabangQuery->where('id', $cabang_id); + } else { + // If no cabang is found for the user, return an empty array + return response()->json([]); + } + } else { + // If $regionCode is provided, filter by it for other roles or if no specific role-based filtering applies + if ($regionCode) { + $region = Region::where('code', $regionCode)->first(); + if ($region) { + $cabangQuery->where('region_id', $region->id); + } else { + // If region code is provided but not found, return empty + return response()->json([]); + } + } + // If no regionCode and no specific role, all cabangs will be returned (as no `where` clause is added) + } + + $cabang = $cabangQuery->get(['code', 'name']); return response()->json($cabang); }