diff --git a/app/Http/Controllers/CustomersController.php b/app/Http/Controllers/CustomersController.php index 8285d13..d319b73 100644 --- a/app/Http/Controllers/CustomersController.php +++ b/app/Http/Controllers/CustomersController.php @@ -11,38 +11,27 @@ class CustomersController extends Controller { public function index(Request $request) { - $menuId = $request->query('menu_id'); - $user = Auth::user(); - $userId = $user->id; + $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; - // 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('customers.index', compact('creator', 'updater', 'destroyer')); + return view('customers.index', compact('creator', 'updater', 'destroyer', 'menuId')); } - public function create() + public function create(Request $request) { - return view('customers.create'); + $menuId = $request->query('menu_id'); + return view('customers.create', compact('menuId')); } - public function edit(string $id) + public function edit(Request $request, string $id) { $data = Customer::findOrFail($id); - return view('customers.edit', compact('data')); + $menuId = $request->query('menu_id'); + return view('customers.edit', compact('data', 'menuId')); } - public function upload(){ - return view('customers.upload'); + public function upload(Request $request){ + $menuId = $request->query('menu_id'); + return view('customers.upload', compact('menuId')); } } diff --git a/app/Http/Controllers/Data/AdvertisementController.php b/app/Http/Controllers/Data/AdvertisementController.php index 65275f9..d95c9bd 100644 --- a/app/Http/Controllers/Data/AdvertisementController.php +++ b/app/Http/Controllers/Data/AdvertisementController.php @@ -15,27 +15,14 @@ class AdvertisementController extends Controller */ public function index(Request $request) { - $menuId = $request->query('menu_id'); - $user = Auth::user(); - $userId = $user->id; + $menuId = (int) $request->query('menu_id', 0); + $permissions = $this->permissions[$menuId] ?? []; // Avoid undefined index error - // Ambil role_id yang dimiliki user - $roleIds = DB::table('user_role') - ->where('user_id', $userId) - ->pluck('role_id'); + $creator = $permissions['allow_create'] ?? 0; + $updater = $permissions['allow_update'] ?? 0; + $destroyer = $permissions['allow_destroy'] ?? 0; - // 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.advertisements.index', compact('creator', 'updater', 'destroyer')); + return view('data.advertisements.index', compact('creator', 'updater', 'destroyer','menuId')); } /** @@ -50,8 +37,9 @@ class AdvertisementController extends Controller /** * Show the form for creating a new resource. */ - public function create() + public function create(Request $request) { + $menuId = (int) $request->query('menu_id', 0); $title = 'Advertisement'; $subtitle = 'Create Data'; @@ -68,14 +56,15 @@ class AdvertisementController extends Controller // $route = 'advertisements.create'; // info("AdvertisementController@edit diakses dengan ID: $title"); - return view('data.advertisements.form', compact('title', 'subtitle', 'fields', 'fieldTypes', 'apiUrl', 'dropdownOptions')); + return view('data.advertisements.form', compact('title', 'subtitle', 'fields', 'fieldTypes', 'apiUrl', 'dropdownOptions','menuId')); } /** * Show the form for editing the specified resource. */ - public function edit($id) + public function edit(Request $request, $id) { + $menuId = (int) $request->query('menu_id', 0); info("AdvertisementController@edit diakses dengan ID: $id"); $title = 'Advertisement'; $subtitle = 'Update Data'; @@ -107,7 +96,7 @@ class AdvertisementController extends Controller // $route = 'advertisements.update'; // Menggunakan route update untuk form edit // info("AdvertisementController@edit diakses dengan route: $route"); - return view('data.advertisements.form', compact('title', 'subtitle', 'modelInstance', 'fields', 'fieldTypes', 'apiUrl', 'dropdownOptions')); + return view('data.advertisements.form', compact('title', 'subtitle', 'modelInstance', 'fields', 'fieldTypes', 'apiUrl', 'dropdownOptions', 'menuId')); } private function getFields() diff --git a/resources/js/customers/create.js b/resources/js/customers/create.js index 23aa7af..f28b7bd 100644 --- a/resources/js/customers/create.js +++ b/resources/js/customers/create.js @@ -6,6 +6,7 @@ class CreateCustomer { initCreateCustomer() { const toastNotification = document.getElementById("toastNotification"); const toast = new bootstrap.Toast(toastNotification); + let menuId = document.getElementById("menuId").value; document .getElementById("btnCreateCustomer") .addEventListener("click", async function () { @@ -41,7 +42,7 @@ class CreateCustomer { result.message; toast.show(); setTimeout(() => { - window.location.href = "/data/customers"; + window.location.href = `/data/customers?menu_id=${menuId}`; }, 2000); } else { let error = await response.json(); diff --git a/resources/js/customers/edit.js b/resources/js/customers/edit.js index 5e1df45..a9aaadf 100644 --- a/resources/js/customers/edit.js +++ b/resources/js/customers/edit.js @@ -6,6 +6,7 @@ class UpdateCustomer { initUpdateCustomer() { const toastNotification = document.getElementById("toastNotification"); const toast = new bootstrap.Toast(toastNotification); + let menuId = document.getElementById("menuId").value; document .getElementById("btnUpdateCustomer") .addEventListener("click", async function () { @@ -41,7 +42,7 @@ class UpdateCustomer { result.message; toast.show(); setTimeout(() => { - window.location.href = "/data/customers"; + window.location.href = `/data/customers?menu_id=${menuId}`; }, 2000); } else { let error = await response.json(); diff --git a/resources/js/customers/index.js b/resources/js/customers/index.js index a19bced..6fdd4ca 100644 --- a/resources/js/customers/index.js +++ b/resources/js/customers/index.js @@ -32,6 +32,7 @@ class Customers { tableContainer.innerHTML = ""; let canUpdate = tableContainer.getAttribute("data-updater") === "1"; let canDelete = tableContainer.getAttribute("data-destroyer") === "1"; + let menuId = tableContainer.getAttribute("data-menuId"); this.table = new Grid({ columns: [ "ID", @@ -45,15 +46,15 @@ class Customers { name: "Action", formatter: (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/customers/upload.js b/resources/js/customers/upload.js index 8133c35..11a6b04 100644 --- a/resources/js/customers/upload.js +++ b/resources/js/customers/upload.js @@ -20,6 +20,7 @@ class UploadCustomers { initDropzone() { const toastNotification = document.getElementById("toastNotification"); const toast = new bootstrap.Toast(toastNotification); + let menuId = document.getElementById("menuId").value; var previewTemplate, dropzonePreviewNode = document.querySelector( "#dropzone-preview-list" @@ -46,7 +47,7 @@ class UploadCustomers { response.message; toast.show(); setTimeout(() => { - window.location.href = "/data/customers"; + window.location.href = `/data/customers?menu_id=${menuId}`; }, 2000); }); this.on("error", function (file, errorMessage) { diff --git a/resources/js/data/advertisements/data-advertisements.js b/resources/js/data/advertisements/data-advertisements.js index ce7c0cc..b3737de 100644 --- a/resources/js/data/advertisements/data-advertisements.js +++ b/resources/js/data/advertisements/data-advertisements.js @@ -8,6 +8,7 @@ import GeneralTable from "../../table-generator.js"; const tableElement = document.getElementById("reklame-data-table"); const canUpdate = tableElement.getAttribute("data-updater") === "1"; const canDelete = tableElement.getAttribute("data-destroyer") === "1"; +let menuId = document.getElementById("menuId").value; const dataAdvertisementsColumns = [ "No", @@ -23,13 +24,13 @@ const dataAdvertisementsColumns = [ { name: "Actions", width: "120px", - formatter: function(cell, row) { + formatter: function (cell, row) { const id = row.cells[10].data; - const model = "data/advertisements"; - + const model = `data/web-advertisements`; + let actionButtons = '
'; let hasPrivilege = false; - + // Tampilkan tombol Edit jika user punya akses update if (canUpdate) { hasPrivilege = true; @@ -40,7 +41,7 @@ const dataAdvertisementsColumns = [ `; } - + // Tampilkan tombol Delete jika user punya akses delete if (canDelete) { hasPrivilege = true; @@ -50,13 +51,17 @@ const dataAdvertisementsColumns = [ `; } - - actionButtons += '
'; - + + actionButtons += ""; + // Jika tidak memiliki akses, tampilkan teks "No Privilege" - return gridjs.html(hasPrivilege ? actionButtons : 'No Privilege'); - } - } + return gridjs.html( + hasPrivilege + ? actionButtons + : 'No Privilege' + ); + }, + }, ]; document.addEventListener("DOMContentLoaded", () => { @@ -86,4 +91,4 @@ document.addEventListener("DOMContentLoaded", () => { }; table.init(); -}); \ No newline at end of file +}); diff --git a/resources/js/data/advertisements/form-create-update.js b/resources/js/data/advertisements/form-create-update.js index 8a110da..633da45 100644 --- a/resources/js/data/advertisements/form-create-update.js +++ b/resources/js/data/advertisements/form-create-update.js @@ -5,6 +5,7 @@ document.addEventListener("DOMContentLoaded", function () { const modalButton = document.querySelector(".btn-modal"); const form = document.querySelector("form#create-update-form"); var authLogo = document.querySelector(".auth-logo"); + let menuId = document.getElementById("menuId").value; if (!saveButton || !form) return; @@ -73,7 +74,7 @@ document.addEventListener("DOMContentLoaded", function () { }, 2000); setTimeout(() => { - window.location.href = "/data/web-advertisements"; + window.location.href = `/data/web-advertisements?menu_id=${menuId}`; }, 1000); } else { if (authLogo) { diff --git a/resources/views/customers/create.blade.php b/resources/views/customers/create.blade.php index 33cac97..68d5433 100644 --- a/resources/views/customers/create.blade.php +++ b/resources/views/customers/create.blade.php @@ -5,11 +5,12 @@ @include('layouts.partials/page-title', ['title' => 'Data', 'subtitle' => 'PDAM']) +
- Back + Back
diff --git a/resources/views/customers/edit.blade.php b/resources/views/customers/edit.blade.php index 1cff9ae..cff087a 100644 --- a/resources/views/customers/edit.blade.php +++ b/resources/views/customers/edit.blade.php @@ -5,11 +5,12 @@ @include('layouts.partials/page-title', ['title' => 'Data', 'subtitle' => 'PDAM']) +
- Back + Back
diff --git a/resources/views/customers/index.blade.php b/resources/views/customers/index.blade.php index 22c20a5..849e570 100644 --- a/resources/views/customers/index.blade.php +++ b/resources/views/customers/index.blade.php @@ -16,13 +16,14 @@
@if ($creator) - Create - Upload + Create + Upload @endif
+ data-destroyer="{{ $destroyer }}" + data-menuId="{{ $menuId }}">
diff --git a/resources/views/customers/upload.blade.php b/resources/views/customers/upload.blade.php index a6fa821..c53c67e 100644 --- a/resources/views/customers/upload.blade.php +++ b/resources/views/customers/upload.blade.php @@ -5,6 +5,7 @@ @include('layouts.partials/page-title', ['title' => 'Data', 'subtitle' => 'PDAM']) +
diff --git a/resources/views/data/advertisements/form.blade.php b/resources/views/data/advertisements/form.blade.php index 3482aa2..c180ad1 100644 --- a/resources/views/data/advertisements/form.blade.php +++ b/resources/views/data/advertisements/form.blade.php @@ -3,7 +3,7 @@ @section('content') @include('layouts.partials/page-title', ['title' => $title, 'subtitle' => $subtitle]) - +
@if (session('error'))
diff --git a/resources/views/data/advertisements/index.blade.php b/resources/views/data/advertisements/index.blade.php index dfab65a..b02d376 100644 --- a/resources/views/data/advertisements/index.blade.php +++ b/resources/views/data/advertisements/index.blade.php @@ -8,7 +8,7 @@ @include('layouts.partials/page-title', ['title' => 'Data', 'subtitle' => 'Reklame']) - +
Daftar Reklame