diff --git a/app/Http/Controllers/Backend/AdminsController.php b/app/Http/Controllers/Backend/AdminsController.php index 679f6d0..480560b 100644 --- a/app/Http/Controllers/Backend/AdminsController.php +++ b/app/Http/Controllers/Backend/AdminsController.php @@ -17,6 +17,8 @@ use App\Models\FormEntertaimentPresentation; use App\Models\FormVehicleRunningCost; use App\Models\FormOthers; use App\Models\FormMeetingSeminar; +use App\Models\UserHasCabang; +use App\Models\Cabang; class AdminsController extends Controller { @@ -24,6 +26,7 @@ class AdminsController extends Controller public function index(): Renderable { $this->checkAuthorization(auth()->user(), ['admin.view']); + session()->put('redirect_url', route('admin.admins.index')); $pageInfo = [ 'title' => 'User Access List', @@ -33,7 +36,7 @@ class AdminsController extends Controller return view('backend.pages.admins.index', [ 'admins' => Admin::all(), - 'pageInfo' => $pageInfo + 'pageInfo' => $pageInfo, ]); } @@ -49,7 +52,8 @@ class AdminsController extends Controller return view('backend.pages.admins.create', [ 'roles' => Role::all(), - 'pageInfo' => $pageInfo + 'pageInfo' => $pageInfo, + 'cabangs' => Cabang::all() ]); } @@ -65,6 +69,14 @@ class AdminsController extends Controller $admin->phone = $request->phone; $admin->save(); + // Assign the user to a cabang + if($request->cabang_id) { + UserHasCabang::create([ + 'user_id' => $admin->id, + 'cabang_id' => $request->cabang_id + ]); + } + if ($request->roles) { $admin->assignRole($request->roles); } @@ -81,7 +93,7 @@ class AdminsController extends Controller // } session()->flash('success', 'Admin has been created.'); - return redirect()->route('admin.admins.index'); + return redirect()->back(); } public function edit(int $id): Renderable @@ -99,7 +111,8 @@ class AdminsController extends Controller return view('backend.pages.admins.edit', [ 'admin' => $admin, 'roles' => Role::all(), - 'pageInfo' => $pageInfo + 'pageInfo' => $pageInfo, + 'cabangs' => Cabang::all() ]); } @@ -122,8 +135,14 @@ class AdminsController extends Controller $admin->assignRole($request->roles); } + // Update the user's cabang + if($request->cabang_id) { + $userHasCabang = UserHasCabang::where('user_id', $admin->id)->first(); + $userHasCabang ? $userHasCabang->update(['cabang_id' => $request->cabang_id]) : UserHasCabang::create(['user_id' => $admin->id, 'cabang_id' => $request->cabang_id]); + } + session()->flash('success', 'Admin has been updated.'); - return redirect()->route('admin.admins.index'); + return redirect()->back(); } public function expense($user_id) @@ -162,6 +181,6 @@ class AdminsController extends Controller $admin = Admin::findOrFail($id); $admin->delete(); session()->flash('success', 'Admin has been deleted.'); - return redirect()->route('admin.admins.index'); + return redirect()->back(); } } \ No newline at end of file diff --git a/app/Http/Controllers/Backend/RolesController.php b/app/Http/Controllers/Backend/RolesController.php index 07affb2..914d67b 100644 --- a/app/Http/Controllers/Backend/RolesController.php +++ b/app/Http/Controllers/Backend/RolesController.php @@ -17,6 +17,8 @@ class RolesController extends Controller public function index(): Renderable { $this->checkAuthorization(auth()->user(), ['role.view']); + session()->put('redirect_url', route('admin.roles.index')); + $pageInfo = [ 'title' => 'List Roles', 'sub_title' => 'List All User Roles', @@ -59,7 +61,7 @@ class RolesController extends Controller } session()->flash('success', 'Role has been created.'); - return redirect()->route('admin.roles.index'); + return redirect()->back(); } public function edit(int $id): Renderable|RedirectResponse @@ -104,7 +106,7 @@ class RolesController extends Controller } session()->flash('success', 'Role has been updated.'); - return redirect()->route('admin.roles.index'); + return redirect()->back(); } public function destroy(int $id): RedirectResponse @@ -119,6 +121,6 @@ class RolesController extends Controller $role->delete(); session()->flash('success', 'Role has been deleted.'); - return redirect()->route('admin.roles.index'); + return redirect()->back(); } } \ No newline at end of file diff --git a/app/Http/Controllers/Forms/FormEntertainmentPresentationController.php b/app/Http/Controllers/Forms/FormEntertainmentPresentationController.php index a1a84b0..17a0ad3 100644 --- a/app/Http/Controllers/Forms/FormEntertainmentPresentationController.php +++ b/app/Http/Controllers/Forms/FormEntertainmentPresentationController.php @@ -26,14 +26,25 @@ class FormEntertainmentPresentationController extends Controller { $this->checkAuthorization(auth()->user(), ['forms.entertainment.view']); + // get user role // get user role $role = auth()->user()->getRoleNames()[0]; - $forms = null; + $forms = FormEntertaimentPresentation::get(); - if($role == 'Marketing Information System' || $role == 'superadmin') { - $forms = FormEntertaimentPresentation::get(); - } else { - $forms = FormEntertaimentPresentation::where('user_id', auth()->user()->id)->get(); + if ($role == 'Admin Region') { + $region_id = auth()->user()->getMyCabangAndRegionId()['region']; + + if ($region_id) { + $users = UserHasCabang::whereHas('cabang', function ($query) use ($region_id) { + $query->where('region_id', $region_id); + })->get(); + + $userIds = $users->pluck('user_id')->toArray(); + $forms = $forms->whereIn('user_id', $userIds); + } + } + else { + $forms = $forms->where('user_id', auth()->user()->id); } session()->put('redirect_url', route('forms.entertainment')); @@ -61,7 +72,7 @@ class FormEntertainmentPresentationController extends Controller 'name' => 'required', 'alamat' => 'required', 'nik_or_npwp' => 'required', - 'bukti1' => 'nullable|image|mimes:jpeg,png,jpg,gif,svg|max:2048', + 'bukti1' => 'nullable|image|mimes:jpeg,png,jpg,gif,svg,heic,heif|max:2048', 'bukti2' => 'nullable|file|mimes:xlsx,xls,csv', 'bukti3' => 'nullable|file|mimes:pdf', ]); @@ -165,7 +176,7 @@ class FormEntertainmentPresentationController extends Controller 'name' => 'required', 'alamat' => 'required', 'nik_or_npwp' => 'required', - 'bukti1' => 'nullable|image|mimes:jpeg,png,jpg,gif,svg|max:2048', + 'bukti1' => 'nullable|image|mimes:jpeg,png,jpg,gif,svg,heic,heif|max:2048', 'bukti2' => 'nullable|file|mimes:xlsx,xls,csv', 'bukti3' => 'nullable|file|mimes:pdf', ]); diff --git a/app/Http/Controllers/Forms/FormMeetingSeminarController.php b/app/Http/Controllers/Forms/FormMeetingSeminarController.php index 68eaeb0..b80c013 100644 --- a/app/Http/Controllers/Forms/FormMeetingSeminarController.php +++ b/app/Http/Controllers/Forms/FormMeetingSeminarController.php @@ -26,14 +26,25 @@ class FormMeetingSeminarController extends Controller { $this->checkAuthorization(auth()->user(), ['forms.meeting.view']); + // get user role // get user role $role = auth()->user()->getRoleNames()[0]; - $forms = null; + $forms = FormMeetingSeminar::get(); - if($role == 'Marketing Information System' || $role == 'superadmin') { - $forms = FormMeetingSeminar::get(); - } else { - $forms = FormMeetingSeminar::where('user_id', auth()->user()->id)->get(); + if ($role == 'Admin Region') { + $region_id = auth()->user()->getMyCabangAndRegionId()['region']; + + if ($region_id) { + $users = UserHasCabang::whereHas('cabang', function ($query) use ($region_id) { + $query->where('region_id', $region_id); + })->get(); + + $userIds = $users->pluck('user_id')->toArray(); + $forms = $forms->whereIn('user_id', $userIds); + } + } + else { + $forms = $forms->where('user_id', auth()->user()->id); } session()->put('redirect_url', route('forms.meeting')); @@ -57,7 +68,7 @@ class FormMeetingSeminarController extends Controller 'allowance' => 'required', 'transport_ankot' => 'required', 'hotel' => 'required', - 'bukti1' => 'nullable|image|mimes:jpeg,png,jpg,gif,svg|max:2048', + 'bukti1' => 'nullable|image|mimes:jpeg,png,jpg,gif,svg,heic,heif|max:2048', 'bukti2' => 'nullable|file|mimes:xlsx,xls,csv', 'bukti3' => 'nullable|file|mimes:pdf', ]); @@ -154,7 +165,7 @@ class FormMeetingSeminarController extends Controller 'allowance' => 'required', 'transport_ankot' => 'required', 'hotel' => 'required', - 'bukti1' => 'nullable|image|mimes:jpeg,png,jpg,gif,svg|max:2048', + 'bukti1' => 'nullable|image|mimes:jpeg,png,jpg,gif,svg,heic,heif|max:2048', 'bukti2' => 'nullable|file|mimes:xlsx,xls,csv', 'bukti3' => 'nullable|file|mimes:pdf', ]); diff --git a/app/Http/Controllers/Forms/FormOtherController.php b/app/Http/Controllers/Forms/FormOtherController.php index b7d1ec8..a9f4a96 100644 --- a/app/Http/Controllers/Forms/FormOtherController.php +++ b/app/Http/Controllers/Forms/FormOtherController.php @@ -30,10 +30,24 @@ class FormOtherController extends Controller $role = auth()->user()->getRoleNames()[0]; $forms = null; - if($role == 'Marketing Information System' || $role == 'superadmin') { - $forms = FormOthers::get(); - } else { - $forms = FormOthers::where('user_id', auth()->user()->id)->get(); + // get user role + $role = auth()->user()->getRoleNames()[0]; + $forms = FormOthers::get(); + + if ($role == 'Admin Region') { + $region_id = auth()->user()->getMyCabangAndRegionId()['region']; + + if ($region_id) { + $users = UserHasCabang::whereHas('cabang', function ($query) use ($region_id) { + $query->where('region_id', $region_id); + })->get(); + + $userIds = $users->pluck('user_id')->toArray(); + $forms = $forms->whereIn('user_id', $userIds); + } + } + else { + $forms = $forms->where('user_id', auth()->user()->id); } session()->put('redirect_url', route('forms.other')); @@ -60,7 +74,7 @@ class FormOtherController extends Controller 'tanggal' => 'required|date', 'keterangan' => 'required', 'total' => 'required', - 'bukti1' => 'nullable|image|mimes:jpeg,png,jpg,gif,svg|max:2048', + 'bukti1' => 'nullable|image|mimes:jpeg,png,jpg,gif,svg,heic,heif|max:2048', 'bukti2' => 'nullable|file|mimes:xlsx,xls,csv', 'bukti3' => 'nullable|file|mimes:pdf', ]); @@ -159,7 +173,7 @@ class FormOtherController extends Controller 'tanggal' => 'required|date', 'keterangan' => 'required', 'total' => 'required', - 'bukti1' => 'nullable|image|mimes:jpeg,png,jpg,gif,svg|max:2048', + 'bukti1' => 'nullable|image|mimes:jpeg,png,jpg,gif,svg,heic,heif|max:2048', 'bukti2' => 'nullable|file|mimes:xlsx,xls,csv', 'bukti3' => 'nullable|file|mimes:pdf', ]); diff --git a/app/Http/Controllers/Forms/FormUpCountryController.php b/app/Http/Controllers/Forms/FormUpCountryController.php index 707b4b9..b2b62eb 100644 --- a/app/Http/Controllers/Forms/FormUpCountryController.php +++ b/app/Http/Controllers/Forms/FormUpCountryController.php @@ -28,12 +28,22 @@ class FormUpCountryController extends Controller // get user role $role = auth()->user()->getRoleNames()[0]; - $forms = null; + $forms = FormUpCountry::get(); - if($role == 'Marketing Information System' || $role == 'superadmin') { - $forms = FormUpCountry::with('rayon')->get(); - } else { - $forms = FormUpCountry::with('rayon')->where('user_id', auth()->user()->id)->get(); + if ($role == 'Admin Region') { + $region_id = auth()->user()->getMyCabangAndRegionId()['region']; + + if ($region_id) { + $users = UserHasCabang::whereHas('cabang', function ($query) use ($region_id) { + $query->where('region_id', $region_id); + })->get(); + + $userIds = $users->pluck('user_id')->toArray(); + $forms = $forms->whereIn('user_id', $userIds); + } + } + else { + $forms = $forms->where('user_id', auth()->user()->id); } session()->put('redirect_url', route('forms.up-country')); @@ -63,7 +73,7 @@ class FormUpCountryController extends Controller 'allowance' => 'required', 'transport_dalkot' => 'required', 'transport_ankot' => 'required', - 'bukti1' => 'nullable|image|mimes:jpeg,png,jpg,gif,svg|max:2048', + 'bukti1' => 'nullable|image|mimes:jpeg,png,jpg,gif,svg,heic,heif|max:2048', 'bukti2' => 'nullable|file|mimes:xlsx,xls,csv', 'bukti3' => 'nullable|file|mimes:pdf', ]); @@ -171,7 +181,7 @@ class FormUpCountryController extends Controller 'transport_dalkot' => 'required', 'transport_ankot' => 'required', 'hotel' => 'required', - 'bukti1' => 'nullable|image|mimes:jpeg,png,jpg,gif,svg|max:2048', + 'bukti1' => 'nullable|image|mimes:jpeg,png,jpg,gif,svg,heic,heif|max:2048', 'bukti2' => 'nullable|file|mimes:xlsx,xls,csv', 'bukti3' => 'nullable|file|mimes:pdf', ]); diff --git a/app/Http/Controllers/Forms/FormVehicleController.php b/app/Http/Controllers/Forms/FormVehicleController.php index fbe6b7f..c5fb717 100644 --- a/app/Http/Controllers/Forms/FormVehicleController.php +++ b/app/Http/Controllers/Forms/FormVehicleController.php @@ -28,12 +28,22 @@ class FormVehicleController extends Controller // get user role $role = auth()->user()->getRoleNames()[0]; - $forms = null; + $forms = FormVehicleRunningCost::get(); - if($role == 'Marketing Information System' || $role == 'superadmin') { - $forms = FormVehicleRunningCost::get(); - } else { - $forms = FormVehicleRunningCost::where('user_id', auth()->user()->id)->get(); + if ($role == 'Admin Region') { + $region_id = auth()->user()->getMyCabangAndRegionId()['region']; + + if ($region_id) { + $users = UserHasCabang::whereHas('cabang', function ($query) use ($region_id) { + $query->where('region_id', $region_id); + })->get(); + + $userIds = $users->pluck('user_id')->toArray(); + $forms = $forms->whereIn('user_id', $userIds); + } + } + else { + $forms = $forms->where('user_id', auth()->user()->id); } session()->put('redirect_url', route('forms.vehicle')); @@ -61,7 +71,7 @@ class FormVehicleController extends Controller 'tipe_bensin' => 'required|in:pertalite,pertamax', 'nopol' => 'required', 'keterangan' => 'required', - 'bukti1' => 'nullable|image|mimes:jpeg,png,jpg,gif,svg|max:2048', + 'bukti1' => 'nullable|image|mimes:jpeg,png,jpg,gif,svg,heic,heif|max:2048', 'bukti2' => 'nullable|file|mimes:xlsx,xls,csv', 'bukti3' => 'nullable|file|mimes:pdf', ]); @@ -165,7 +175,7 @@ class FormVehicleController extends Controller 'tipe_bensin' => 'required|in:pertalite,pertamax', 'nopol' => 'required', 'keterangan' => 'required', - 'bukti1' => 'nullable|image|mimes:jpeg,png,jpg,gif,svg|max:2048', + 'bukti1' => 'nullable|image|mimes:jpeg,png,jpg,gif,svg,heic,heif|max:2048', 'bukti2' => 'nullable|file|mimes:xlsx,xls,csv', 'bukti3' => 'nullable|file|mimes:pdf', ]); diff --git a/app/Http/Controllers/Master/CategoryController.php b/app/Http/Controllers/Master/CategoryController.php index 8f16487..7d09f3e 100644 --- a/app/Http/Controllers/Master/CategoryController.php +++ b/app/Http/Controllers/Master/CategoryController.php @@ -11,6 +11,8 @@ class CategoryController extends Controller public function index() { $this->checkAuthorization(auth()->user(), ['category.view']); + session()->put('redirect_url', route('admin.category.index')); + return view('backend.pages.master.category.index', [ 'categories' => Kategori::all() ]); @@ -36,7 +38,7 @@ class CategoryController extends Controller ]); session()->flash('success', 'Category has been created.'); - return redirect()->route('admin.category.index'); + return redirect()->back(); } public function edit($id) @@ -61,7 +63,7 @@ class CategoryController extends Controller ]); session()->flash('success', 'Category has been updated.'); - return redirect()->route('admin.category.index'); + return redirect()->back(); } public function destroy($id) @@ -70,6 +72,6 @@ class CategoryController extends Controller Kategori::findOrfail($id)->delete(); session()->flash('success', 'Category has been deleted.'); - return redirect()->route('admin.category.index'); + return redirect()->back(); } } \ No newline at end of file diff --git a/app/Http/Controllers/Master/CostCentreController.php b/app/Http/Controllers/Master/CostCentreController.php index 93900e9..0e8eefa 100644 --- a/app/Http/Controllers/Master/CostCentreController.php +++ b/app/Http/Controllers/Master/CostCentreController.php @@ -11,6 +11,8 @@ class CostCentreController extends Controller public function index() { $this->checkAuthorization(auth()->user(), ['cost.view']); + session()->put('redirect_url', route('admin.cost.index')); + return view('backend.pages.master.cost.index', [ 'costs' => CostCentre::all() ]); @@ -36,7 +38,7 @@ class CostCentreController extends Controller ]); session()->flash('success', 'Cost Centre has been created.'); - return redirect()->route('admin.cost.index'); + return redirect()->back(); } public function edit($id) @@ -61,7 +63,7 @@ class CostCentreController extends Controller ]); session()->flash('success', 'Cost has been updated.'); - return redirect()->route('admin.cost.index'); + return redirect()->back(); } public function destroy($id) @@ -70,6 +72,6 @@ class CostCentreController extends Controller CostCentre::findOrfail($id)->delete(); session()->flash('success', 'Cost has been deleted.'); - return redirect()->route('admin.cost.index'); + return redirect()->back(); } } \ No newline at end of file diff --git a/app/Http/Controllers/Master/RayonController.php b/app/Http/Controllers/Master/RayonController.php index b4873bc..ebb1a5e 100644 --- a/app/Http/Controllers/Master/RayonController.php +++ b/app/Http/Controllers/Master/RayonController.php @@ -11,6 +11,8 @@ class RayonController extends Controller public function index() { $this->checkAuthorization(auth()->user(), ['rayon.view']); + session()->put('redirect_url', route('admin.rayon.index')); + return view('backend.pages.master.rayon.index', [ 'rayons' => Rayon::all() ]); @@ -36,7 +38,7 @@ class RayonController extends Controller ]); session()->flash('success', 'Rayon has been created.'); - return redirect()->route('admin.rayon.index'); + return redirect()->back(); } public function edit($id) @@ -61,7 +63,7 @@ class RayonController extends Controller ]); session()->flash('success', 'Rayon has been updated.'); - return redirect()->route('admin.rayon.index'); + return redirect()->back(); } public function destroy($id) @@ -70,6 +72,6 @@ class RayonController extends Controller Rayon::findOrfail($id)->delete(); session()->flash('success', 'Rayon has been deleted.'); - return redirect()->route('admin.rayon.index'); + return redirect()->back(); } } \ No newline at end of file diff --git a/app/Models/Admin.php b/app/Models/Admin.php index 67a2d23..4530d43 100644 --- a/app/Models/Admin.php +++ b/app/Models/Admin.php @@ -104,4 +104,55 @@ class Admin extends Authenticatable 'region_head' => null, ]; } + + public function getMyCabangAndRegion() + { + // Fetch the UserHasCabang entry for this admin + $userHasCabang = $this->hasOne(UserHasCabang::class, 'user_id')->with('cabang')->first(); + + if ($userHasCabang && $userHasCabang->cabang) { + $cabang = $userHasCabang->cabang; + + // Fetch the region + $region = $cabang->region; + + return [ + 'cabang' => $cabang ? $cabang->name : '-', + 'region' => $region ? $region->name : '-', + ]; + } + + return [ + 'cabang' => '-', + 'region' => '-', + ]; + } + + public function getMyCabangAndRegionId() + { + // Fetch the UserHasCabang entry for this admin + $userHasCabang = $this->hasOne(UserHasCabang::class, 'user_id')->with('cabang')->first(); + + if ($userHasCabang && $userHasCabang->cabang) { + $cabang = $userHasCabang->cabang; + + // Fetch the region + $region = $cabang->region; + + return [ + 'cabang' => $cabang ? $cabang->id : '-', + 'region' => $region ? $region->id : '-', + ]; + } + + return [ + 'cabang' => '-', + 'region' => '-', + ]; + } + + public function cabang() + { + return $this->hasOne(UserHasCabang::class, 'user_id')->with('cabang'); + } } diff --git a/resources/views/backend/layouts/partials/messages.blade.php b/resources/views/backend/layouts/partials/messages.blade.php index db13ad7..fdca323 100644 --- a/resources/views/backend/layouts/partials/messages.blade.php +++ b/resources/views/backend/layouts/partials/messages.blade.php @@ -21,9 +21,6 @@ }).then(() => { if ("{{ Session::get('redirect_url') }}") { window.location.href = "{{ Session::get('redirect_url') }}"; - @php - Session::forget('redirect_url'); - @endphp } }); @@ -39,9 +36,6 @@ }).then(() => { if ("{{ Session::get('redirect_url') }}") { window.location.href = "{{ Session::get('redirect_url') }}"; - @php - Session::forget('redirect_url'); - @endphp } }); diff --git a/resources/views/backend/pages/admins/create.blade.php b/resources/views/backend/pages/admins/create.blade.php index 66d3fc5..f39e539 100644 --- a/resources/views/backend/pages/admins/create.blade.php +++ b/resources/views/backend/pages/admins/create.blade.php @@ -89,8 +89,19 @@ - +