From e5db2294b4658fde50031ac322e37f332617530c Mon Sep 17 00:00:00 2001 From: arifal Date: Wed, 12 Mar 2025 21:39:52 +0700 Subject: [PATCH] fix redirect back data settings --- .../Controllers/DataSettingController.php | 36 +++++++------------ resources/js/data-settings/create.js | 3 +- resources/js/data-settings/index.js | 17 +++++---- resources/js/data-settings/update.js | 3 +- .../views/data-settings/create.blade.php | 3 +- resources/views/data-settings/edit.blade.php | 3 +- resources/views/data-settings/index.blade.php | 5 +-- 7 files changed, 33 insertions(+), 37 deletions(-) diff --git a/app/Http/Controllers/DataSettingController.php b/app/Http/Controllers/DataSettingController.php index 9d69e13..2adf021 100644 --- a/app/Http/Controllers/DataSettingController.php +++ b/app/Http/Controllers/DataSettingController.php @@ -18,34 +18,21 @@ class DataSettingController extends Controller */ public function index(IndexRequest $request) { - $menuId = $request->query('menu_id'); - $user = Auth::user(); - $userId = $user->id; - - // Ambil role_id yang dimiliki user - $roleIds = DB::table('user_role') - ->where('user_id', $userId) - ->pluck('role_id'); - - // Ambil data akses berdasarkan role_id dan menu_id - $roleAccess = DB::table('role_menu') - ->whereIn('role_id', $roleIds) - ->where('menu_id', $menuId) - ->first(); - - // Pastikan roleAccess tidak null sebelum mengakses properti - $creator = $roleAccess->allow_create ?? 0; - $updater = $roleAccess->allow_update ?? 0; - $destroyer = $roleAccess->allow_destroy ?? 0; - return view("data-settings.index", compact('creator', 'updater', 'destroyer')); + $menuId = $request->query('menu_id') ?? $request->input('menu_id'); + $permissions = $this->permissions[$menuId]?? []; // Avoid undefined index error + $creator = $permissions['allow_create'] ?? 0; + $updater = $permissions['allow_update'] ?? 0; + $destroyer = $permissions['allow_destroy'] ?? 0; + return view("data-settings.index", compact('creator', 'updater', 'destroyer','menuId')); } /** * Show the form for creating a new resource. */ - public function create() + public function create(IndexRequest $request) { - return view("data-settings.create"); + $menuId = $request->query('menu_id') ?? $request->input('menu_id'); + return view("data-settings.create", compact('menuId')); } /** @@ -78,14 +65,15 @@ class DataSettingController extends Controller /** * Show the form for editing the specified resource. */ - public function edit(string $id) + public function edit(IndexRequest $request,string $id) { try{ $data = DataSetting::findOrFail($id); + $menuId = $request->query('menu_id') ?? $request->input('menu_id'); if(empty($data)){ return redirect()->route('data-settings.index')->with('error', 'Invalid id'); } - return view("data-settings.edit", compact("data")); + return view("data-settings.edit", compact("data", 'menuId')); }catch(Exception $ex){ return redirect()->route("data-settings.index")->with("error", "Invalid id"); } diff --git a/resources/js/data-settings/create.js b/resources/js/data-settings/create.js index cb94db2..4098a4d 100644 --- a/resources/js/data-settings/create.js +++ b/resources/js/data-settings/create.js @@ -1,6 +1,7 @@ document.addEventListener("DOMContentLoaded", function (e) { const toastNotification = document.getElementById("toastNotification"); const toast = new bootstrap.Toast(toastNotification); + let menuId = document.getElementById("menuId").value; document .getElementById("btnCreateDataSettings") .addEventListener("click", async function () { @@ -37,7 +38,7 @@ document.addEventListener("DOMContentLoaded", function (e) { result.data.message; toast.show(); setTimeout(() => { - window.location.href = "/data-settings"; + window.location.href = `/data-settings?menu_id=${menuId}`; }, 2000); } else { let error = await response.json(); diff --git a/resources/js/data-settings/index.js b/resources/js/data-settings/index.js index 33e515e..8ff6721 100644 --- a/resources/js/data-settings/index.js +++ b/resources/js/data-settings/index.js @@ -32,7 +32,8 @@ class DataSettings { tableContainer.innerHTML = ""; let canUpdate = tableContainer.getAttribute("data-updater") === "1"; - let canDelete = tableContainer.getAttribute("data-destroyer") === "1" + let canDelete = tableContainer.getAttribute("data-destroyer") === "1"; + let menuId = tableContainer.getAttribute("data-menuId"); // Create a new Grid.js instance only if it doesn't exist this.table = new Grid({ columns: [ @@ -45,15 +46,15 @@ class DataSettings { width: "120px", formatter: function (cell) { let buttons = ""; - + if (canUpdate) { buttons += ` - + `; } - + if (canDelete) { buttons += ` `; } - + if (!canUpdate && !canDelete) { buttons = `No Privilege`; } - - return gridjs.html(`
${buttons}
`); + + return gridjs.html( + `
${buttons}
` + ); }, }, ], diff --git a/resources/js/data-settings/update.js b/resources/js/data-settings/update.js index b3c4269..ade16a6 100644 --- a/resources/js/data-settings/update.js +++ b/resources/js/data-settings/update.js @@ -6,6 +6,7 @@ document.addEventListener("DOMContentLoaded", function (e) { let toast = new bootstrap.Toast( document.getElementById("toastNotification") ); + let menuId = document.getElementById("menuId").value; submitButton.addEventListener("click", async function () { let submitButton = this; @@ -36,7 +37,7 @@ document.addEventListener("DOMContentLoaded", function (e) { toastMessage.innerText = result.data.message; toast.show(); setTimeout(() => { - window.location.href = "/data-settings"; + window.location.href = `/data-settings?menu_id=${menuId}`; }, 2000); } else { let error = await response.json(); diff --git a/resources/views/data-settings/create.blade.php b/resources/views/data-settings/create.blade.php index 5ed3cb8..eebbeff 100644 --- a/resources/views/data-settings/create.blade.php +++ b/resources/views/data-settings/create.blade.php @@ -5,11 +5,12 @@ @include('layouts.partials/page-title', ['title' => 'Data Settings', 'subtitle' => 'Setting Dashboard']) +
- Back + Back
diff --git a/resources/views/data-settings/edit.blade.php b/resources/views/data-settings/edit.blade.php index 659ec72..4ffbc77 100644 --- a/resources/views/data-settings/edit.blade.php +++ b/resources/views/data-settings/edit.blade.php @@ -5,11 +5,12 @@ @include('layouts.partials/page-title', ['title' => 'Data Settings', 'subtitle' => 'Setting Dashboard']) +
- Back + Back
diff --git a/resources/views/data-settings/index.blade.php b/resources/views/data-settings/index.blade.php index ec005aa..6192749 100644 --- a/resources/views/data-settings/index.blade.php +++ b/resources/views/data-settings/index.blade.php @@ -16,12 +16,13 @@
@if ($creator) - Create + Create @endif
+ data-destroyer="{{ $destroyer }}" + data-menuId="{{ $menuId }}">