From 7f38095a1a3bacf856a5c49cd4b429679ed2d2a8 Mon Sep 17 00:00:00 2001 From: Jagad R R Date: Fri, 10 Jan 2025 13:38:11 +0700 Subject: [PATCH] add region on filter generate report --- .../Controllers/Backend/ReportController.php | 276 ++++++++++++------ app/Models/Admin.php | 5 + .../pages/report/entertainment.blade.php | 21 +- .../backend/pages/report/meeting.blade.php | 21 +- .../backend/pages/report/others.blade.php | 21 +- .../backend/pages/report/upcountry.blade.php | 21 +- .../backend/pages/report/vehicle.blade.php | 21 +- 7 files changed, 281 insertions(+), 105 deletions(-) diff --git a/app/Http/Controllers/Backend/ReportController.php b/app/Http/Controllers/Backend/ReportController.php index 877800c..7dea482 100644 --- a/app/Http/Controllers/Backend/ReportController.php +++ b/app/Http/Controllers/Backend/ReportController.php @@ -13,6 +13,7 @@ use App\Models\FormVehicleRunningCost; use App\Models\FormOthers; use App\Models\UserHasCabang; use App\Models\Cabang; +use App\Models\Region; class ReportController extends Controller { @@ -20,6 +21,7 @@ class ReportController extends Controller { $role = auth()->user()->getRoleNames()[0]; $cabangs = []; + $regions = []; $forms = null; if ($role == 'Admin Region' || $role == 'Marketing Operational Manager Region') { @@ -33,6 +35,7 @@ class ReportController extends Controller $userIds = $users->pluck('user_id')->toArray(); $cabangs = Cabang::where('region_id', $region_id)->get(); + $regions = Region::where('id', $region_id)->get(); $forms = FormUpCountry::whereIn('user_id', $userIds)->get(); } } else if ($role == 'Area Manager Cabang') { @@ -43,53 +46,70 @@ class ReportController extends Controller $userIds = $users->pluck('user_id')->toArray(); $cabangs = Cabang::where('id', $cabang_id)->get(); + $regions = Region::where('id', $cabangs[0]->region_id)->get(); $forms = FormUpCountry::whereIn('user_id', $userIds)->get(); } } else if ($role == 'Medical Representatif') { $userId = auth()->user()->id; $cabangs = null; + $regions = null; $forms = FormUpCountry::where('user_id', $userId)->get(); } else { $cabangs = Cabang::all(); + $regions = Region::all(); $forms = FormUpCountry::all(); } // get all params in url $params = request()->all(); + if ($params) { + // Filter by region + if (isset($params['region'])) { + $region = Region::where('code', $params['region'])->first(); + if ($region) { + $userIds = UserHasCabang::whereIn('cabang_id', Cabang::where('region_id', $region->id)->pluck('id'))->pluck('user_id')->toArray(); + $forms = $forms->whereIn('user_id', $userIds); + } + } - if($params) { - if ($params['cabang']) { + // Filter by cabang + if (isset($params['cabang'])) { $cabang = Cabang::where('code', $params['cabang'])->first(); - $users = UserHasCabang::where('cabang_id', $cabang->id)->get(); - $userIds = $users->pluck('user_id')->toArray(); - - $forms = $forms->whereIn('user_id', $userIds); + if ($cabang) { + $userIds = UserHasCabang::where('cabang_id', $cabang->id)->pluck('user_id')->toArray(); + $forms = $forms->whereIn('user_id', $userIds); + } } - if($params['start_date'] && $params['end_date']) { - $forms = $forms->whereBetween('tanggal', [$params['start_date'], $params['end_date']]); + // Filter by date range + if (isset($params['start_date']) || isset($params['end_date'])) { + $startDate = $params['start_date'] ?? null; + $endDate = $params['end_date'] ?? null; + + if ($startDate && $endDate) { + $forms = $forms->whereBetween('tanggal', [$startDate, $endDate]); + } elseif ($startDate) { + $forms = $forms->where('tanggal', '>=', $startDate); + } elseif ($endDate) { + $forms = $forms->where('tanggal', '<=', $endDate); + } } - if($params['start_date'] && !$params['end_date']) { - $forms = $forms->where('tanggal', $params['start_date']); - } - - if(!$params['start_date'] && $params['end_date']) { - $forms = $forms->where('tanggal', $params['end_date']); - } - - if($params['status']) { + // Filter by status + if (isset($params['status'])) { $forms = $forms->where('status', $params['status']); } } + return view('backend.pages.report.upcountry', [ 'pageInfo' => [ 'title' => 'Generate Reports For Form Up Country', ], 'forms' => $forms, - 'cabang' => $cabangs + 'cabang' => $cabangs, + 'regions' => $regions ]); } @@ -97,6 +117,7 @@ class ReportController extends Controller { $role = auth()->user()->getRoleNames()[0]; $cabangs = []; + $regions = []; $forms = null; if ($role == 'Admin Region' || $role == 'Marketing Operational Manager Region') { @@ -110,6 +131,7 @@ class ReportController extends Controller $userIds = $users->pluck('user_id')->toArray(); $cabangs = Cabang::where('region_id', $region_id)->get(); + $regions = Region::where('id', $region_id)->get(); $forms = FormVehicleRunningCost::whereIn('user_id', $userIds)->get(); } } else if ($role == 'Area Manager Cabang') { @@ -120,43 +142,59 @@ class ReportController extends Controller $userIds = $users->pluck('user_id')->toArray(); $cabangs = Cabang::where('id', $cabang_id)->get(); + $regions = Region::where('id', $cabangs[0]->region_id)->get(); $forms = FormVehicleRunningCost::whereIn('user_id', $userIds)->get(); } } else if ($role == 'Medical Representatif') { $userId = auth()->user()->id; $cabangs = null; + $regions = null; $forms = FormVehicleRunningCost::where('user_id', $userId)->get(); } else { $cabangs = Cabang::all(); + $regions = Region::all(); $forms = FormVehicleRunningCost::all(); } // get all params in url $params = request()->all(); - if($params) { - if ($params['cabang']) { + if ($params) { + // Filter by region + if (isset($params['region'])) { + $region = Region::where('code', $params['region'])->first(); + if ($region) { + $userIds = UserHasCabang::whereIn('cabang_id', Cabang::where('region_id', $region->id)->pluck('id'))->pluck('user_id')->toArray(); + $forms = $forms->whereIn('user_id', $userIds); + } + } + + // Filter by cabang + if (isset($params['cabang'])) { $cabang = Cabang::where('code', $params['cabang'])->first(); - $users = UserHasCabang::where('cabang_id', $cabang->id)->get(); - $userIds = $users->pluck('user_id')->toArray(); - - $forms = $forms->whereIn('user_id', $userIds); + if ($cabang) { + $userIds = UserHasCabang::where('cabang_id', $cabang->id)->pluck('user_id')->toArray(); + $forms = $forms->whereIn('user_id', $userIds); + } } - if($params['start_date'] && $params['end_date']) { - $forms = $forms->whereBetween('tanggal', [$params['start_date'], $params['end_date']]); + // Filter by date range + if (isset($params['start_date']) || isset($params['end_date'])) { + $startDate = $params['start_date'] ?? null; + $endDate = $params['end_date'] ?? null; + + if ($startDate && $endDate) { + $forms = $forms->whereBetween('tanggal', [$startDate, $endDate]); + } elseif ($startDate) { + $forms = $forms->where('tanggal', '>=', $startDate); + } elseif ($endDate) { + $forms = $forms->where('tanggal', '<=', $endDate); + } } - if($params['start_date'] && !$params['end_date']) { - $forms = $forms->where('tanggal', $params['start_date']); - } - - if(!$params['start_date'] && $params['end_date']) { - $forms = $forms->where('tanggal', $params['end_date']); - } - - if($params['status']) { + // Filter by status + if (isset($params['status'])) { $forms = $forms->where('status', $params['status']); } } @@ -166,7 +204,8 @@ class ReportController extends Controller 'title' => 'Generate Reports For Form Vehicle Running Cost', ], 'forms' => $forms, - 'cabang' => $cabangs + 'cabang' => $cabangs, + 'regions' => $regions ]); } @@ -174,6 +213,7 @@ class ReportController extends Controller { $role = auth()->user()->getRoleNames()[0]; $cabangs = []; + $regions = []; $forms = null; if ($role == 'Admin Region' || $role == 'Marketing Operational Manager Region') { @@ -187,6 +227,7 @@ class ReportController extends Controller $userIds = $users->pluck('user_id')->toArray(); $cabangs = Cabang::where('region_id', $region_id)->get(); + $regions = Region::where('id', $region_id)->get(); $forms = FormEntertaimentPresentation::whereIn('user_id', $userIds)->get(); } } else if ($role == 'Area Manager Cabang') { @@ -197,43 +238,59 @@ class ReportController extends Controller $userIds = $users->pluck('user_id')->toArray(); $cabangs = Cabang::where('id', $cabang_id)->get(); + $regions = Region::where('id', $cabangs[0]->region_id)->get(); $forms = FormEntertaimentPresentation::whereIn('user_id', $userIds)->get(); } } else if ($role == 'Medical Representatif') { $userId = auth()->user()->id; $cabangs = null; + $regions = null; $forms = FormEntertaimentPresentation::where('user_id', $userId)->get(); } else { $cabangs = Cabang::all(); + $regions = Region::all(); $forms = FormEntertaimentPresentation::all(); } // get all params in url $params = request()->all(); - if($params) { - if ($params['cabang']) { + if ($params) { + // Filter by region + if (isset($params['region'])) { + $region = Region::where('code', $params['region'])->first(); + if ($region) { + $userIds = UserHasCabang::whereIn('cabang_id', Cabang::where('region_id', $region->id)->pluck('id'))->pluck('user_id')->toArray(); + $forms = $forms->whereIn('user_id', $userIds); + } + } + + // Filter by cabang + if (isset($params['cabang'])) { $cabang = Cabang::where('code', $params['cabang'])->first(); - $users = UserHasCabang::where('cabang_id', $cabang->id)->get(); - $userIds = $users->pluck('user_id')->toArray(); - - $forms = $forms->whereIn('user_id', $userIds); + if ($cabang) { + $userIds = UserHasCabang::where('cabang_id', $cabang->id)->pluck('user_id')->toArray(); + $forms = $forms->whereIn('user_id', $userIds); + } } - if($params['start_date'] && $params['end_date']) { - $forms = $forms->whereBetween('tanggal', [$params['start_date'], $params['end_date']]); + // Filter by date range + if (isset($params['start_date']) || isset($params['end_date'])) { + $startDate = $params['start_date'] ?? null; + $endDate = $params['end_date'] ?? null; + + if ($startDate && $endDate) { + $forms = $forms->whereBetween('tanggal', [$startDate, $endDate]); + } elseif ($startDate) { + $forms = $forms->where('tanggal', '>=', $startDate); + } elseif ($endDate) { + $forms = $forms->where('tanggal', '<=', $endDate); + } } - if($params['start_date'] && !$params['end_date']) { - $forms = $forms->where('tanggal', $params['start_date']); - } - - if(!$params['start_date'] && $params['end_date']) { - $forms = $forms->where('tanggal', $params['end_date']); - } - - if($params['status']) { + // Filter by status + if (isset($params['status'])) { $forms = $forms->where('status', $params['status']); } } @@ -243,7 +300,8 @@ class ReportController extends Controller 'title' => 'Generate Reports For Form Entertainment & Presentation', ], 'forms' => $forms, - 'cabang' => $cabangs + 'cabang' => $cabangs, + 'regions' => $regions ]); } @@ -251,6 +309,7 @@ class ReportController extends Controller { $role = auth()->user()->getRoleNames()[0]; $cabangs = []; + $regions = []; $forms = null; if ($role == 'Admin Region' || $role == 'Marketing Operational Manager Region') { @@ -264,6 +323,7 @@ class ReportController extends Controller $userIds = $users->pluck('user_id')->toArray(); $cabangs = Cabang::where('region_id', $region_id)->get(); + $regions = Region::where('id', $region_id)->get(); $forms = FormMeetingSeminar::whereIn('user_id', $userIds)->get(); } } else if ($role == 'Area Manager Cabang') { @@ -274,43 +334,59 @@ class ReportController extends Controller $userIds = $users->pluck('user_id')->toArray(); $cabangs = Cabang::where('id', $cabang_id)->get(); + $regions = Region::where('id', $cabangs[0]->region_id)->get(); $forms = FormMeetingSeminar::whereIn('user_id', $userIds)->get(); } } else if ($role == 'Medical Representatif') { $userId = auth()->user()->id; $cabangs = null; + $regions = null; $forms = FormMeetingSeminar::where('user_id', $userId)->get(); } else { $cabangs = Cabang::all(); + $regions = Region::all(); $forms = FormMeetingSeminar::all(); } // get all params in url $params = request()->all(); - if($params) { - if ($params['cabang']) { + if ($params) { + // Filter by region + if (isset($params['region'])) { + $region = Region::where('code', $params['region'])->first(); + if ($region) { + $userIds = UserHasCabang::whereIn('cabang_id', Cabang::where('region_id', $region->id)->pluck('id'))->pluck('user_id')->toArray(); + $forms = $forms->whereIn('user_id', $userIds); + } + } + + // Filter by cabang + if (isset($params['cabang'])) { $cabang = Cabang::where('code', $params['cabang'])->first(); - $users = UserHasCabang::where('cabang_id', $cabang->id)->get(); - $userIds = $users->pluck('user_id')->toArray(); - - $forms = $forms->whereIn('user_id', $userIds); + if ($cabang) { + $userIds = UserHasCabang::where('cabang_id', $cabang->id)->pluck('user_id')->toArray(); + $forms = $forms->whereIn('user_id', $userIds); + } } - if($params['start_date'] && $params['end_date']) { - $forms = $forms->whereBetween('tanggal', [$params['start_date'], $params['end_date']]); + // Filter by date range + if (isset($params['start_date']) || isset($params['end_date'])) { + $startDate = $params['start_date'] ?? null; + $endDate = $params['end_date'] ?? null; + + if ($startDate && $endDate) { + $forms = $forms->whereBetween('tanggal', [$startDate, $endDate]); + } elseif ($startDate) { + $forms = $forms->where('tanggal', '>=', $startDate); + } elseif ($endDate) { + $forms = $forms->where('tanggal', '<=', $endDate); + } } - if($params['start_date'] && !$params['end_date']) { - $forms = $forms->where('tanggal', $params['start_date']); - } - - if(!$params['start_date'] && $params['end_date']) { - $forms = $forms->where('tanggal', $params['end_date']); - } - - if($params['status']) { + // Filter by status + if (isset($params['status'])) { $forms = $forms->where('status', $params['status']); } } @@ -320,7 +396,8 @@ class ReportController extends Controller 'title' => 'Generate Reports For Form Meeting & Seminar', ], 'forms' => $forms, - 'cabang' => $cabangs + 'cabang' => $cabangs, + 'regions' => $regions ]); } @@ -328,6 +405,7 @@ class ReportController extends Controller { $role = auth()->user()->getRoleNames()[0]; $cabangs = []; + $regions = []; $forms = null; if ($role == 'Admin Region' || $role == 'Marketing Operational Manager Region') { @@ -341,6 +419,7 @@ class ReportController extends Controller $userIds = $users->pluck('user_id')->toArray(); $cabangs = Cabang::where('region_id', $region_id)->get(); + $regions = Region::where('id', $region_id)->get(); $forms = FormOthers::whereIn('user_id', $userIds)->get(); } } else if ($role == 'Area Manager Cabang') { @@ -351,43 +430,59 @@ class ReportController extends Controller $userIds = $users->pluck('user_id')->toArray(); $cabangs = Cabang::where('id', $cabang_id)->get(); + $regions = Region::where('id', $cabangs[0]->region_id)->get(); $forms = FormOthers::whereIn('user_id', $userIds)->get(); } } else if ($role == 'Medical Representatif') { $userId = auth()->user()->id; $cabangs = null; + $regions = null; $forms = FormOthers::where('user_id', $userId)->get(); } else { $cabangs = Cabang::all(); + $regions = Region::all(); $forms = FormOthers::all(); } // get all params in url $params = request()->all(); - if($params) { - if ($params['cabang']) { + if ($params) { + // Filter by region + if (isset($params['region'])) { + $region = Region::where('code', $params['region'])->first(); + if ($region) { + $userIds = UserHasCabang::whereIn('cabang_id', Cabang::where('region_id', $region->id)->pluck('id'))->pluck('user_id')->toArray(); + $forms = $forms->whereIn('user_id', $userIds); + } + } + + // Filter by cabang + if (isset($params['cabang'])) { $cabang = Cabang::where('code', $params['cabang'])->first(); - $users = UserHasCabang::where('cabang_id', $cabang->id)->get(); - $userIds = $users->pluck('user_id')->toArray(); - - $forms = $forms->whereIn('user_id', $userIds); + if ($cabang) { + $userIds = UserHasCabang::where('cabang_id', $cabang->id)->pluck('user_id')->toArray(); + $forms = $forms->whereIn('user_id', $userIds); + } } - if($params['start_date'] && $params['end_date']) { - $forms = $forms->whereBetween('tanggal', [$params['start_date'], $params['end_date']]); + // Filter by date range + if (isset($params['start_date']) || isset($params['end_date'])) { + $startDate = $params['start_date'] ?? null; + $endDate = $params['end_date'] ?? null; + + if ($startDate && $endDate) { + $forms = $forms->whereBetween('tanggal', [$startDate, $endDate]); + } elseif ($startDate) { + $forms = $forms->where('tanggal', '>=', $startDate); + } elseif ($endDate) { + $forms = $forms->where('tanggal', '<=', $endDate); + } } - if($params['start_date'] && !$params['end_date']) { - $forms = $forms->where('tanggal', $params['start_date']); - } - - if(!$params['start_date'] && $params['end_date']) { - $forms = $forms->where('tanggal', $params['end_date']); - } - - if($params['status']) { + // Filter by status + if (isset($params['status'])) { $forms = $forms->where('status', $params['status']); } } @@ -397,7 +492,8 @@ class ReportController extends Controller 'title' => 'Generate Reports For Form Others', ], 'forms' => $forms, - 'cabang' => $cabangs + 'cabang' => $cabangs, + 'regions' => $regions ]); } } diff --git a/app/Models/Admin.php b/app/Models/Admin.php index f510f68..1993d2d 100644 --- a/app/Models/Admin.php +++ b/app/Models/Admin.php @@ -157,6 +157,11 @@ class Admin extends Authenticatable return $this->hasOne(UserHasCabang::class, 'user_id')->with('cabang'); } + public function region() + { + return $this->hasOne(UserHasCabang::class, 'user_id')->with('cabang.region'); + } + public static function getUserByRoleName($roleName) { $role = Role::where('name', $roleName)->first(); diff --git a/resources/views/backend/pages/report/entertainment.blade.php b/resources/views/backend/pages/report/entertainment.blade.php index 3a2da01..019995e 100644 --- a/resources/views/backend/pages/report/entertainment.blade.php +++ b/resources/views/backend/pages/report/entertainment.blade.php @@ -24,6 +24,19 @@
+
+
+ + +
+
@@ -37,19 +50,19 @@
-
+
-
+
-
+
+ + @foreach ($regions as $region) + + @endforeach + +
+
@@ -37,19 +50,19 @@
-
+
-
+
-
+
+ + @foreach ($regions as $region) + + @endforeach + +
+
@@ -37,19 +50,19 @@
-
+
-
+
-
+
+ + @foreach ($regions as $region) + + @endforeach + +
+
@@ -37,19 +50,19 @@
-
+
-
+
-
+
+ + @foreach ($regions as $region) + + @endforeach + +
+
@@ -37,19 +50,19 @@
-
+
-
+
-
+