diff --git a/app/Http/Controllers/Api/TourismController.php b/app/Http/Controllers/Api/TourismController.php
index 3a20e69..5a2a50c 100644
--- a/app/Http/Controllers/Api/TourismController.php
+++ b/app/Http/Controllers/Api/TourismController.php
@@ -39,7 +39,7 @@ class TourismController extends Controller
$tourisms->village_name = $village ? $village->village_name : null;
$district = DB::table('districts')->where('district_code', $tourisms->district_code)->first();
- $tourisms->district_name = $village ? $village->village_name : null;
+ $tourisms->district_name = $district ? $district->district_name : null;
return $tourisms;
});
diff --git a/app/Http/Controllers/Api/UsersController.php b/app/Http/Controllers/Api/UsersController.php
index c5fff64..abffb5a 100644
--- a/app/Http/Controllers/Api/UsersController.php
+++ b/app/Http/Controllers/Api/UsersController.php
@@ -11,6 +11,7 @@ use App\Traits\GlobalApiResponse;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Hash;
use Illuminate\Http\Request;
+use Illuminate\Support\Facades\Log;
class UsersController extends Controller
{
diff --git a/app/Http/Controllers/Auth/AuthenticatedSessionController.php b/app/Http/Controllers/Auth/AuthenticatedSessionController.php
index 9b638b8..4164ee6 100755
--- a/app/Http/Controllers/Auth/AuthenticatedSessionController.php
+++ b/app/Http/Controllers/Auth/AuthenticatedSessionController.php
@@ -38,8 +38,6 @@ class AuthenticatedSessionController extends Controller
// Buat token untuk API
$token = $user->createToken(env('APP_KEY'))->plainTextToken;
-
- // Simpan token di session (bisa digunakan di JavaScript)
session(['api_token' => $token]);
return redirect()->intended(RouteServiceProvider::HOME);
diff --git a/app/Http/Controllers/BusinessOrIndustriesController.php b/app/Http/Controllers/BusinessOrIndustriesController.php
index b2d5b92..4252c35 100644
--- a/app/Http/Controllers/BusinessOrIndustriesController.php
+++ b/app/Http/Controllers/BusinessOrIndustriesController.php
@@ -4,15 +4,36 @@ namespace App\Http\Controllers;
use App\Models\BusinessOrIndustry;
use Illuminate\Http\Request;
+use Illuminate\Support\Facades\DB;
+use Illuminate\Support\Facades\Auth;
class BusinessOrIndustriesController extends Controller
{
/**
* Display a listing of the resource.
*/
- public function index()
+ public function index(Request $request)
{
- return view('business-industries.index');
+ $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('business-industries.index', compact('creator', 'updater', 'destroyer'));
}
/**
diff --git a/app/Http/Controllers/CustomersController.php b/app/Http/Controllers/CustomersController.php
index 9c0c8ec..d7c7793 100644
--- a/app/Http/Controllers/CustomersController.php
+++ b/app/Http/Controllers/CustomersController.php
@@ -4,12 +4,33 @@ namespace App\Http\Controllers;
use App\Models\Customer;
use Illuminate\Http\Request;
+use Illuminate\Support\Facades\Auth;
class CustomersController extends Controller
{
- public function index()
+ public function index(Request $request)
{
- return view('customers.index');
+ $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('customers.index', compact('creator', 'updater', 'destroyer'));
}
public function create()
{
diff --git a/app/Http/Controllers/Data/AdvertisementController.php b/app/Http/Controllers/Data/AdvertisementController.php
index 8140ad2..65275f9 100644
--- a/app/Http/Controllers/Data/AdvertisementController.php
+++ b/app/Http/Controllers/Data/AdvertisementController.php
@@ -6,15 +6,36 @@ use App\Http\Controllers\Controller;
use App\Models\Advertisement;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
+use Illuminate\Support\Facades\Auth;
class AdvertisementController extends Controller
{
/**
* Display a listing of the resource.
*/
- public function index()
+ public function index(Request $request)
{
- return view('data.advertisements.index');
+ $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.advertisements.index', compact('creator', 'updater', 'destroyer'));
}
/**
diff --git a/app/Http/Controllers/Data/SpatialPlanningController.php b/app/Http/Controllers/Data/SpatialPlanningController.php
index cfbb1f2..09c8b9b 100644
--- a/app/Http/Controllers/Data/SpatialPlanningController.php
+++ b/app/Http/Controllers/Data/SpatialPlanningController.php
@@ -5,15 +5,37 @@ namespace App\Http\Controllers\Data;
use App\Http\Controllers\Controller;
use App\Models\SpatialPlanning;
use Illuminate\Http\Request;
+use Illuminate\Support\Facades\DB;
+use Illuminate\Support\Facades\Auth;
class SpatialPlanningController extends Controller
{
/**
* Display a listing of the resource.
*/
- public function index()
+ public function index(Request $request)
{
- return view('data.spatialPlannings.index');
+ $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.spatialPlannings.index', compact('creator', 'updater', 'destroyer'));
}
/**
diff --git a/app/Http/Controllers/Data/TourismController.php b/app/Http/Controllers/Data/TourismController.php
index a36f11e..0809eef 100644
--- a/app/Http/Controllers/Data/TourismController.php
+++ b/app/Http/Controllers/Data/TourismController.php
@@ -6,15 +6,35 @@ use App\Http\Controllers\Controller;
use App\Models\Tourism;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
+use Illuminate\Support\Facades\Auth;
class TourismController extends Controller
{
/**
* Display a listing of the resource
*/
- public function index()
+ public function index(Request $request)
{
- return view('data.tourisms.index');
+ $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.tourisms.index', compact('creator', 'updater', 'destroyer'));
}
/**
diff --git a/app/Http/Controllers/Data/UmkmController.php b/app/Http/Controllers/Data/UmkmController.php
index 01bdef8..27f2cf3 100644
--- a/app/Http/Controllers/Data/UmkmController.php
+++ b/app/Http/Controllers/Data/UmkmController.php
@@ -6,15 +6,35 @@ use App\Http\Controllers\Controller;
use App\Models\Umkm;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
+use Illuminate\Support\Facades\Auth;
class UmkmController extends Controller
{
/**
* Display a listing of the resource.
*/
- public function index()
+ public function index(Request $request)
{
- return view('data.umkm.index');
+ $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.umkm.index', compact('creator', 'updater', 'destroyer'));
}
/**
diff --git a/app/Http/Controllers/DataSettingController.php b/app/Http/Controllers/DataSettingController.php
index 1ed4ab4..9d69e13 100644
--- a/app/Http/Controllers/DataSettingController.php
+++ b/app/Http/Controllers/DataSettingController.php
@@ -8,15 +8,36 @@ use Exception;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Log;
use Illuminate\Support\Facades\Request;
+use Illuminate\Support\Facades\Auth;
+use Illuminate\Http\Request as IndexRequest;
class DataSettingController extends Controller
{
/**
* Display a listing of the resource.
*/
- public function index()
+ public function index(IndexRequest $request)
{
- return view("data-settings.index");
+ $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'));
}
/**
diff --git a/app/Http/Controllers/Master/UsersController.php b/app/Http/Controllers/Master/UsersController.php
index 2e50f99..5fa9a60 100644
--- a/app/Http/Controllers/Master/UsersController.php
+++ b/app/Http/Controllers/Master/UsersController.php
@@ -13,6 +13,7 @@ use Illuminate\Support\Facades\Hash;
use App\Models\User;
use App\Traits\GlobalApiResponse;
use Illuminate\Auth\Events\Registered;
+use Illuminate\Support\Facades\Auth;
class UsersController extends Controller
{
@@ -21,9 +22,29 @@ class UsersController extends Controller
$users = User::all();
return $this->resSuccess($users);
}
- public function index(){
+ public function index(Request $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;
+
$users = User::paginate();
- return view('master.users.index', compact('users'));
+ return view('master.users.index', compact('users', 'creator', 'updater', 'destroyer'));
}
public function create(){
$roles = Role::all();
diff --git a/app/Http/Controllers/MenusController.php b/app/Http/Controllers/MenusController.php
index 0550a35..caf8446 100644
--- a/app/Http/Controllers/MenusController.php
+++ b/app/Http/Controllers/MenusController.php
@@ -6,15 +6,36 @@ use App\Http\Requests\MenuRequest;
use App\Models\Menu;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
+use Illuminate\Support\Facades\Auth;
class MenusController extends Controller
{
/**
* Display a listing of the resource.
*/
- public function index()
+ public function index(Request $request)
{
- return view('menus.index');
+ $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('menus.index', compact('creator', 'updater', 'destroyer'));
}
/**
diff --git a/app/Http/Controllers/RequestAssignment/PbgTaskController.php b/app/Http/Controllers/RequestAssignment/PbgTaskController.php
index b19b8f7..830fa64 100644
--- a/app/Http/Controllers/RequestAssignment/PbgTaskController.php
+++ b/app/Http/Controllers/RequestAssignment/PbgTaskController.php
@@ -5,15 +5,37 @@ namespace App\Http\Controllers\RequestAssignment;
use App\Http\Controllers\Controller;
use App\Models\PbgTask;
use Illuminate\Http\Request;
+use Illuminate\Support\Facades\DB;
+use Illuminate\Support\Facades\Auth;
class PbgTaskController extends Controller
{
/**
* Display a listing of the resource.
*/
- public function index()
+ public function index(Request $request)
{
- return view('pbg_task.index');
+ $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('pbg_task.index', compact('creator', 'updater', 'destroyer'));
}
/**
diff --git a/app/Http/Controllers/RolesController.php b/app/Http/Controllers/RolesController.php
index ceff492..2547ef1 100644
--- a/app/Http/Controllers/RolesController.php
+++ b/app/Http/Controllers/RolesController.php
@@ -10,15 +10,36 @@ use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Log;
use Illuminate\Support\Facades\Schema;
+use Illuminate\Support\Facades\Auth;
class RolesController extends Controller
{
/**
* Display a listing of the resource.
*/
- public function index()
+ public function index(Request $request)
{
- return view("roles.index");
+ $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("roles.index", compact('creator', 'updater', 'destroyer'));
}
/**
diff --git a/app/Http/Controllers/Settings/SyncronizeController.php b/app/Http/Controllers/Settings/SyncronizeController.php
index f50d5a5..dba436d 100644
--- a/app/Http/Controllers/Settings/SyncronizeController.php
+++ b/app/Http/Controllers/Settings/SyncronizeController.php
@@ -13,7 +13,27 @@ class SyncronizeController extends Controller
$this->service_simbg = $service_simbg;
}
public function index(Request $request){
- return view('settings.syncronize.index');
+ $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('settings.syncronize.index', compact('creator', 'updater', 'destroyer'));
}
public function syncPbgTask(){
diff --git a/resources/js/business-industries/index.js b/resources/js/business-industries/index.js
index 53c0ed2..81409f6 100644
--- a/resources/js/business-industries/index.js
+++ b/resources/js/business-industries/index.js
@@ -31,6 +31,11 @@ class BusinessIndustries {
let tableContainer = document.getElementById(
"table-business-industries"
);
+
+ tableContainer.innerHTML = "";
+ let canUpdate = tableContainer.getAttribute("data-updater") === "1";
+ let canDelete = tableContainer.getAttribute("data-destroyer") === "1";
+
// Create a new Grid.js instance only if it doesn't exist
this.table = new Grid({
columns: [
@@ -50,17 +55,30 @@ class BusinessIndustries {
{ name: "Created", width: "180px" },
{
name: "Action",
- formatter: (cell) =>
- gridjs.html(`
-
- `),
+ formatter: (cell) => {
+
+ let buttons = ``;
+
+ if (canUpdate) {
+ buttons += `
+
+
+
+ `;
+ }
+
+ if (canDelete) {
+ buttons += `
+
+
+
+ `;
+ }
+
+ buttons += `
`;
+
+ return gridjs.html(buttons);
+ },
},
],
pagination: {
diff --git a/resources/js/customers/index.js b/resources/js/customers/index.js
index ac75c35..a19bced 100644
--- a/resources/js/customers/index.js
+++ b/resources/js/customers/index.js
@@ -28,6 +28,10 @@ class Customers {
initTableCustomers() {
let tableContainer = document.getElementById("table-customers");
// Create a new Grid.js instance only if it doesn't exist
+
+ tableContainer.innerHTML = "";
+ let canUpdate = tableContainer.getAttribute("data-updater") === "1";
+ let canDelete = tableContainer.getAttribute("data-destroyer") === "1";
this.table = new Grid({
columns: [
"ID",
@@ -39,17 +43,31 @@ class Customers {
"Longitude",
{
name: "Action",
- formatter: (cell) =>
- gridjs.html(`
-
- `),
+ formatter: (cell) => {
+ let buttons = "";
+
+ if (canUpdate) {
+ buttons += `
+
+
+
+ `;
+ }
+
+ if (canDelete) {
+ buttons += `
+
+
+
+ `;
+ }
+
+ if (!canUpdate && !canDelete) {
+ buttons = `No Privilege `;
+ }
+
+ return gridjs.html(`${buttons}
`);
+ },
},
],
pagination: {
diff --git a/resources/js/data-settings/index.js b/resources/js/data-settings/index.js
index b4344e5..33e515e 100644
--- a/resources/js/data-settings/index.js
+++ b/resources/js/data-settings/index.js
@@ -29,6 +29,10 @@ class DataSettings {
initTableDataSettings() {
let tableContainer = document.getElementById("table-data-settings");
+
+ tableContainer.innerHTML = "";
+ let canUpdate = tableContainer.getAttribute("data-updater") === "1";
+ let canDelete = tableContainer.getAttribute("data-destroyer") === "1"
// Create a new Grid.js instance only if it doesn't exist
this.table = new Grid({
columns: [
@@ -40,16 +44,29 @@ class DataSettings {
name: "Actions",
width: "120px",
formatter: function (cell) {
- return gridjs.html(`
-
+ let buttons = "";
+
+ if (canUpdate) {
+ buttons += `
-
-
+ `;
+ }
+
+ if (canDelete) {
+ buttons += `
+
+
-
- `);
+ `;
+ }
+
+ if (!canUpdate && !canDelete) {
+ buttons = `No Privilege `;
+ }
+
+ return gridjs.html(`${buttons}
`);
},
},
],
diff --git a/resources/js/data/advertisements/data-advertisements.js b/resources/js/data/advertisements/data-advertisements.js
index bade5e5..ce7c0cc 100644
--- a/resources/js/data/advertisements/data-advertisements.js
+++ b/resources/js/data/advertisements/data-advertisements.js
@@ -4,6 +4,11 @@ import "gridjs/dist/gridjs.umd.js";
import GlobalConfig from "../../global-config.js";
import GeneralTable from "../../table-generator.js";
+// Ambil hak akses dari data-attribute
+const tableElement = document.getElementById("reklame-data-table");
+const canUpdate = tableElement.getAttribute("data-updater") === "1";
+const canDelete = tableElement.getAttribute("data-destroyer") === "1";
+
const dataAdvertisementsColumns = [
"No",
"Nama Wajib Pajak",
@@ -17,21 +22,39 @@ const dataAdvertisementsColumns = [
"Kontak",
{
name: "Actions",
- widht: "120px",
+ width: "120px",
formatter: function(cell, row) {
const id = row.cells[10].data;
const model = "data/advertisements";
- return gridjs.html(`
-
+
+ let actionButtons = '
';
+ let hasPrivilege = false;
+
+ // Tampilkan tombol Edit jika user punya akses update
+ if (canUpdate) {
+ hasPrivilege = true;
+ actionButtons += `
-
+
+ `;
+ }
+
+ // Tampilkan tombol Delete jika user punya akses delete
+ if (canDelete) {
+ hasPrivilege = true;
+ actionButtons += `
-
-
- `);
+ data-id="${id}">
+
+ `;
+ }
+
+ actionButtons += '
';
+
+ // Jika tidak memiliki akses, tampilkan teks "No Privilege"
+ return gridjs.html(hasPrivilege ? actionButtons : 'No Privilege ');
}
}
];
diff --git a/resources/js/data/spatialPlannings/data-spatialPlannings.js b/resources/js/data/spatialPlannings/data-spatialPlannings.js
index b766e32..cba1aa2 100644
--- a/resources/js/data/spatialPlannings/data-spatialPlannings.js
+++ b/resources/js/data/spatialPlannings/data-spatialPlannings.js
@@ -4,6 +4,11 @@ import "gridjs/dist/gridjs.umd.js";
import GlobalConfig from "../../global-config.js";
import GeneralTable from "../../table-generator.js";
+// Ambil hak akses dari data-attribute
+const tableElement = document.getElementById("spatial-planning-data-table");
+const canUpdate = tableElement.getAttribute("data-updater") === "1";
+const canDelete = tableElement.getAttribute("data-destroyer") === "1";
+
const dataSpatialPlanningColumns = [
"No",
"Nama",
@@ -19,18 +24,35 @@ const dataSpatialPlanningColumns = [
formatter: function (cell, row) {
const id = row.cells[8].data;
const model = "data/spatial-plannings";
- return gridjs.html(`
-
+
+ let actionButtons = '
';
+ let hasPrivilege = false;
+
+ // Tampilkan tombol Edit jika user punya akses update
+ if (canUpdate) {
+ hasPrivilege = true;
+ actionButtons += `
-
-
+
+ `;
+ }
+
+ // Tampilkan tombol Delete jika user punya akses delete
+ if (canDelete) {
+ hasPrivilege = true;
+ actionButtons += `
-
-
- `);
+
+ `;
+ }
+
+ actionButtons += '
';
+
+ // Jika tidak memiliki akses, tampilkan teks "No Privilege"
+ return gridjs.html(hasPrivilege ? actionButtons : 'No Privilege ');
},
},
];
diff --git a/resources/js/data/tourisms/data-tourisms.js b/resources/js/data/tourisms/data-tourisms.js
index 728cba1..0106273 100644
--- a/resources/js/data/tourisms/data-tourisms.js
+++ b/resources/js/data/tourisms/data-tourisms.js
@@ -3,6 +3,14 @@ import gridjs from "gridjs/dist/gridjs.umd.js";
import "gridjs/dist/gridjs.umd.js";
import GlobalConfig from "../../global-config.js";
import GeneralTable from "../../table-generator.js";
+import L from "leaflet";
+import "leaflet/dist/leaflet.css";
+
+// Ambil hak akses dari data-attribute
+const tableElement = document.getElementById("tourisms-data-table");
+const canView = "1";
+const canUpdate = tableElement.getAttribute("data-updater") === "1";
+const canDelete = tableElement.getAttribute("data-destroyer") === "1";
const dataTourismsColumns = [
"No",
@@ -21,26 +29,49 @@ const dataTourismsColumns = [
widht: "120px",
formatter: function (cell, row) {
const id = row.cells[11].data;
+ const district = row.cells[4].data;
const long = row.cells[9].data;
const lat = row.cells[10].data;
const model = "data/tourisms";
- return gridjs.html(`
-
-
-
-
-
-
+
+ let actionButtons = '
';
+ let hasPrivilege = false;
+
+ // Tampilkan tombol View jika user punya akses view
+ if (canView) {
+ hasPrivilege = true;
+ actionButtons += `
+
+
+ `
+ }
+ // Tampilkan tombol Edit jika user punya akses update
+ if (canUpdate) {
+ hasPrivilege = true;
+ actionButtons += `
+
+
+ `;
+ }
+
+ // Tampilkan tombol Delete jika user punya akses delete
+ if (canDelete) {
+ hasPrivilege = true;
+ actionButtons += `
-
-
- `);
- },
+
+ `
+ }
+
+ actionButtons += '
';
+ // Jika tidak memiliki akses, tampilkan teks "No Privilege"
+ return gridjs.html(hasPrivilege ? actionButtons : 'No Privilege ');
+ }
},
];
@@ -74,24 +105,117 @@ document.addEventListener("DOMContentLoaded", () => {
table.init();
// Event listener untuk tombol "View" yang memunculkan modal
+ // document.addEventListener("click", function (e) {
+ // if (e.target && e.target.classList.contains("btn-view")) {
+ // const long = e.target.getAttribute("data-long");
+ // const lat = e.target.getAttribute("data-lat");
+
+ // // Menyiapkan URL iframe dengan koordinat yang didapatkan
+ // const iframeSrc = `https://www.google.com/maps?q=${lat},${long}&hl=es;z=14&output=embed`;
+
+ // // Menemukan modal dan iframe di dalam modal
+ // const modal = document.querySelector(".modalGMaps");
+ // const iframe = modal.querySelector("iframe");
+
+ // // Set src iframe untuk menampilkan peta dengan koordinat yang relevan
+ // iframe.src = iframeSrc;
+
+ // // Menampilkan modal
+ // var modalInstance = new bootstrap.Modal(modal);
+ // modalInstance.show();
+ // }
+ // });
+
+ let map;
+ let geoLayer;
+ // Event listener untuk tombol "View" yang memunculkan modal dengan Leaflet
document.addEventListener("click", function (e) {
if (e.target && e.target.classList.contains("btn-view")) {
- const long = e.target.getAttribute("data-long");
- const lat = e.target.getAttribute("data-lat");
+ const long = parseFloat(e.target.getAttribute("data-long"));
+ const lat = parseFloat(e.target.getAttribute("data-lat"));
+ const district = e.target.getAttribute("data-district");
- // Menyiapkan URL iframe dengan koordinat yang didapatkan
- const iframeSrc = `https://www.google.com/maps?q=${lat},${long}&hl=es;z=14&output=embed`;
-
- // Menemukan modal dan iframe di dalam modal
const modal = document.querySelector(".modalGMaps");
- const iframe = modal.querySelector("iframe");
-
- // Set src iframe untuk menampilkan peta dengan koordinat yang relevan
- iframe.src = iframeSrc;
-
- // Menampilkan modal
var modalInstance = new bootstrap.Modal(modal);
modalInstance.show();
+
+ setTimeout(() => {
+ if (!map) {
+ map = L.map("map").setView([lat, long], 14);
+
+ // Tambahkan tile layer (peta dasar)
+ L.tileLayer("https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png", {
+ attribution: '© OpenStreetMap contributors'
+ }).addTo(map);
+ } else {
+ map.setView([lat, long], 14);
+ }
+
+ if (geoLayer) {
+ map.removeLayer(geoLayer);
+ }
+
+ // Tambahkan marker untuk lokasi
+ L.marker([lat, long]).addTo(map)
+ .bindPopup(`${district} Lat: ${lat}, Long: ${long}`)
+ .openPopup();
+
+ // Tambahkan GeoJSON ke dalam peta
+ fetch(`/storage/maps/tourisms/${district.toUpperCase()}.json`)
+ .then((res) => res.json())
+ .then((geojson) => {
+ let colorMapping = {
+ BJ: "rgb(235, 30, 30)",
+ BA: "rgb(151, 219, 242)",
+ CA: "rgb(70, 70, 165)",
+ "P-2": "rgb(230, 255, 75)",
+ HL: "rgb(50, 95, 40)",
+ HPT: "rgb(75, 155, 55)",
+ HP: "rgb(125, 180, 55)",
+ W: "rgb(255, 165, 255)",
+ PTL: "rgb(0, 255, 205)",
+ "IK-2": "rgb(130, 185, 210)",
+ "P-3": "rgb(175, 175, 55)",
+ PS: "rgb(5, 215, 215)",
+ PD: "rgb(235, 155, 60)",
+ PK: "rgb(245, 155, 30)",
+ HK: "rgb(155, 0, 255)",
+ KPI: "rgb(105, 0, 0)",
+ MBT: "rgb(95, 115, 145)",
+ "P-4": "rgb(185, 235, 185)",
+ TB: "rgb(70, 150, 255)",
+ "P-1": "rgb(200, 245, 70)",
+ TR: "rgb(215, 55, 0)",
+ THR: "rgb(185, 165, 255)",
+ TWA: "rgb(210, 190, 255)",
+ };
+ var geoLayer = L.geoJSON(geojson, {
+ style: function (feature) {
+ let htmlString = feature.properties.description.toString();
+ let match = htmlString.match(
+ /Kode Zona<\/td>\s* (.*?)<\/td>/
+ );
+
+ let color_code = match[1];
+ return {
+ color: colorMapping[color_code],
+ fillColor: colorMapping[color_code] || "#cccccc",
+ fillOpacity: 0.6,
+ weight: 1.5,
+ };
+ },
+ onEachFeature: function(feature, layer) {
+ if (feature.properties && feature.properties.name) {
+ layer.bindPopup(feature.properties.name);
+ }
+ },
+ }).addTo(map);
+ map.fitBounds(geoLayer.getBounds());
+ })
+ .catch((error) => {
+ console.error("Error loading GeoJSON:", error);
+ });
+ }, 500);
}
});
});
diff --git a/resources/js/data/umkm/data-umkm.js b/resources/js/data/umkm/data-umkm.js
index e3f70c5..b087b0d 100644
--- a/resources/js/data/umkm/data-umkm.js
+++ b/resources/js/data/umkm/data-umkm.js
@@ -3,6 +3,11 @@ import "gridjs/dist/gridjs.umd.js";
import GlobalConfig from "../../global-config.js";
import GeneralTable from "../../table-generator.js";
+// Ambil hak akses dari data-attribute
+const tableElement = document.getElementById("umkm-data-table");
+const canUpdate = tableElement.getAttribute("data-updater") === "1";
+const canDelete = tableElement.getAttribute("data-destroyer") === "1";
+
const dataUMKMColumns = [
"No",
"Nama Usaha",
@@ -29,17 +34,35 @@ const dataUMKMColumns = [
formatter: function(cell, row) {
const id = row.cells[19].data;
const model = "data/umkm";
- return gridjs.html(`
-
+
+ let actionButtons = '
';
+ let hasPrivilege = false;
+
+ // Tampilkan tombol Edit jika user punya akses update
+ if (canUpdate) {
+ hasPrivilege = true;
+ actionButtons += `
-
+
+ `;
+ }
+
+ // Tampilkan tombol Delete jika user punya akses delete
+ if (canDelete) {
+ hasPrivilege = true;
+ actionButtons += `
-
-
- `);
+ data-id="${id}">
+
+ `;
+ }
+
+ actionButtons += '
';
+
+ // Jika tidak memiliki akses, tampilkan teks "No Privilege"
+ return gridjs.html(hasPrivilege ? actionButtons : 'No Privilege ');
}
}
];
diff --git a/resources/js/master/users/users.js b/resources/js/master/users/users.js
index 9f9a903..3707809 100644
--- a/resources/js/master/users/users.js
+++ b/resources/js/master/users/users.js
@@ -9,6 +9,12 @@ class UsersTable {
}
initTableUsers() {
+ let tableContainer = document.getElementById(
+ "table-users"
+ );
+
+ tableContainer.innerHTML = "";
+ let canUpdate = tableContainer.getAttribute("data-updater") === "1";
new Grid({
columns: [
"ID",
@@ -20,14 +26,18 @@ class UsersTable {
"Roles",
{
name: "Action",
- formatter: (cell) =>
- gridjs.html(`
+ formatter: (cell) =>{
+ if (!canUpdate) {
+ return gridjs.html(`No Privilege `);
+ }
+ return gridjs.html(`
- `),
+ `);
+ },
},
],
pagination: {
diff --git a/resources/js/menus/index.js b/resources/js/menus/index.js
index 7bf5ff7..1755cd3 100644
--- a/resources/js/menus/index.js
+++ b/resources/js/menus/index.js
@@ -28,35 +28,9 @@ class Menus {
initTableMenus() {
let tableContainer = document.getElementById("table-menus");
- // if (this.table) {
- // // If table exists, update its data instead of recreating
- // this.table
- // .updateConfig({
- // server: {
- // url: `${GlobalConfig.apiHost}/api/menus`,
- // credentials: "include",
- // headers: {
- // Authorization: `Bearer ${document
- // .querySelector('meta[name="api-token"]')
- // .getAttribute("content")}`,
- // "Content-Type": "application/json",
- // },
- // then: (data) =>
- // data.data.map((item) => [
- // item.id,
- // item.name,
- // item.url,
- // item.icon,
- // item.parent_id,
- // item.sort_order,
- // item.id,
- // ]),
- // total: (data) => data.total,
- // },
- // })
- // .forceRender();
- // return;
- // }
+ tableContainer.innerHTML = "";
+ let canUpdate = tableContainer.getAttribute("data-updater") === "1";
+ let canDelete = tableContainer.getAttribute("data-destroyer") === "1";
this.table = new Grid({
columns: [
@@ -68,18 +42,33 @@ class Menus {
"Sort Order",
{
name: "Action",
- formatter: (cell) =>
- gridjs.html(`
-
- `),
+ formatter: (cell) => {
+ let buttons = ``;
+
+ if (canUpdate) {
+ buttons += `
+
+
+
+ `;
+ }
+
+ if (canDelete) {
+ buttons += `
+
+ `;
+ }
+
+ if (!canUpdate && !canDelete) {
+ buttons += `
No Privilege `;
+ }
+
+ buttons += `
`;
+
+ return gridjs.html(buttons);
+ },
},
],
pagination: {
diff --git a/resources/js/pbg-task/index.js b/resources/js/pbg-task/index.js
index 031812a..3b91531 100644
--- a/resources/js/pbg-task/index.js
+++ b/resources/js/pbg-task/index.js
@@ -9,6 +9,11 @@ class PbgTasks {
}
initTableRequestAssignment() {
+ let tableContainer = document.getElementById("table-pbg-tasks");
+
+ // Pastikan kontainer kosong sebelum merender ulang Grid.js
+ tableContainer.innerHTML = "";
+ let canUpdate = tableContainer.getAttribute("data-updater") === "1";
new Grid({
columns: [
"ID",
@@ -24,13 +29,24 @@ class PbgTasks {
{
name: "Action",
formatter: function (cell) {
+ let tableContainer = document.getElementById("table-pbg-tasks");
+ let canUpdate = tableContainer.getAttribute("data-updater") === "1";
+
+ if (!canUpdate) {
+ return gridjs.html(`
+ No Privilege
+ `);
+ }
+
return gridjs.html(`
`);
},
- },
+ }
],
search: {
server: {
diff --git a/resources/js/roles/index.js b/resources/js/roles/index.js
index 68d1235..9baa86a 100644
--- a/resources/js/roles/index.js
+++ b/resources/js/roles/index.js
@@ -27,6 +27,10 @@ class Roles {
initTableRoles() {
let tableContainer = document.getElementById("table-roles");
+
+ tableContainer.innerHTML = "";
+ let canUpdate = tableContainer.getAttribute("data-updater") === "1";
+ let canDelete = tableContainer.getAttribute("data-destroyer") === "1";
// Create a new Grid.js instance only if it doesn't exist
this.table = new gridjs.Grid({
columns: [
@@ -34,22 +38,38 @@ class Roles {
"Name",
"Description",
{
- name: "Action",
- formatter: (cell) =>
- gridjs.html(`
-
- `),
+ name: "Action",
+ formatter: (cell) => {
+ let buttons = ``;
+
+ if (canUpdate) {
+ buttons += `
+
+
+
+
+ Role Menu
+
+ `;
+ }
+
+ if (canDelete) {
+ buttons += `
+
+
+
+ `;
+ }
+
+ if (!canUpdate && !canDelete) {
+ buttons += `
No Privilege `;
+ }
+
+ buttons += `
`;
+
+ return gridjs.html(buttons);
},
+ },
],
pagination: {
limit: 50,
diff --git a/resources/js/table-generator.js b/resources/js/table-generator.js
index 6314113..f5d3caf 100644
--- a/resources/js/table-generator.js
+++ b/resources/js/table-generator.js
@@ -12,6 +12,11 @@ class GeneralTable {
}
init() {
+ const tableContainer = document.getElementById(this.tableId);
+
+ // Kosongkan container sebelum render ulang
+ tableContainer.innerHTML = "";
+
const table = new Grid({
columns: this.columns,
search: this.options.search || {
@@ -42,8 +47,8 @@ class GeneralTable {
total: (data) => data.meta.total,
},
});
-
- table.render(document.getElementById(this.tableId));
+
+ table.render(tableContainer);
this.handleActions();
}
diff --git a/resources/views/business-industries/index.blade.php b/resources/views/business-industries/index.blade.php
index 4dca21c..edab41c 100644
--- a/resources/views/business-industries/index.blade.php
+++ b/resources/views/business-industries/index.blade.php
@@ -15,9 +15,14 @@
diff --git a/resources/views/customers/index.blade.php b/resources/views/customers/index.blade.php
index bab6ebf..22c20a5 100644
--- a/resources/views/customers/index.blade.php
+++ b/resources/views/customers/index.blade.php
@@ -15,10 +15,15 @@
diff --git a/resources/views/data-settings/index.blade.php b/resources/views/data-settings/index.blade.php
index 8d3d09c..ec005aa 100644
--- a/resources/views/data-settings/index.blade.php
+++ b/resources/views/data-settings/index.blade.php
@@ -15,9 +15,14 @@
diff --git a/resources/views/data/advertisements/index.blade.php b/resources/views/data/advertisements/index.blade.php
index da7898b..dfab65a 100644
--- a/resources/views/data/advertisements/index.blade.php
+++ b/resources/views/data/advertisements/index.blade.php
@@ -16,16 +16,21 @@
-
-
- Create
-
-
- Bulk Create
-
+ @if ($creator)
+
+
+ Create
+
+
+ Bulk Create
+
+ @endif
diff --git a/resources/views/data/spatialPlannings/index.blade.php b/resources/views/data/spatialPlannings/index.blade.php
index da2e4b0..b7a18b3 100644
--- a/resources/views/data/spatialPlannings/index.blade.php
+++ b/resources/views/data/spatialPlannings/index.blade.php
@@ -14,16 +14,21 @@
-
-
- Create
-
-
- Bulk Create
-
+ @if ($creator)
+
+
+ Create
+
+
+ Bulk Create
+
+ @endif
diff --git a/resources/views/data/tourisms/index.blade.php b/resources/views/data/tourisms/index.blade.php
index a17452e..c5687d6 100644
--- a/resources/views/data/tourisms/index.blade.php
+++ b/resources/views/data/tourisms/index.blade.php
@@ -14,16 +14,21 @@
-
-
- Create
-
-
- Bulk Create
-
+ @if ($creator)
+
+
+ Create
+
+
+ Bulk Create
+
+ @endif
@@ -39,14 +44,15 @@
aria-label="Close">
diff --git a/resources/views/data/umkm/index.blade.php b/resources/views/data/umkm/index.blade.php
index 6f8977d..8ab20d8 100644
--- a/resources/views/data/umkm/index.blade.php
+++ b/resources/views/data/umkm/index.blade.php
@@ -14,16 +14,21 @@
-
-
- Create
-
-
- Bulk Create
-
+ @if ($creator)
+
+
+ Create
+
+
+ Bulk Create
+
+ @endif
diff --git a/resources/views/layouts/partials/sidebar.blade.php b/resources/views/layouts/partials/sidebar.blade.php
index d796620..44c710e 100644
--- a/resources/views/layouts/partials/sidebar.blade.php
+++ b/resources/views/layouts/partials/sidebar.blade.php
@@ -56,9 +56,13 @@
+
@for ($i = 0; $i < 20; $i++)
@endfor
+ @for ($i = 0; $i < 20; $i++)
+
+ @endfor
\ No newline at end of file
diff --git a/resources/views/master/users/index.blade.php b/resources/views/master/users/index.blade.php
index 193f81f..09a3e44 100644
--- a/resources/views/master/users/index.blade.php
+++ b/resources/views/master/users/index.blade.php
@@ -13,11 +13,16 @@
diff --git a/resources/views/menus/index.blade.php b/resources/views/menus/index.blade.php
index 5884013..f7ea0b4 100644
--- a/resources/views/menus/index.blade.php
+++ b/resources/views/menus/index.blade.php
@@ -16,10 +16,15 @@
diff --git a/resources/views/pbg_task/index.blade.php b/resources/views/pbg_task/index.blade.php
index c650ea0..db1cdcd 100644
--- a/resources/views/pbg_task/index.blade.php
+++ b/resources/views/pbg_task/index.blade.php
@@ -13,9 +13,14 @@
diff --git a/resources/views/roles/index.blade.php b/resources/views/roles/index.blade.php
index 42d4684..66090b4 100644
--- a/resources/views/roles/index.blade.php
+++ b/resources/views/roles/index.blade.php
@@ -16,9 +16,14 @@
diff --git a/resources/views/settings/syncronize/index.blade.php b/resources/views/settings/syncronize/index.blade.php
index 8287666..2511709 100644
--- a/resources/views/settings/syncronize/index.blade.php
+++ b/resources/views/settings/syncronize/index.blade.php
@@ -13,10 +13,12 @@
-
-
- Sync SIMBG
-
+ @if ($creator)
+
+
+ Sync SIMBG
+
+ @endif