From ada0c442b932b19e396a38c1b51f1d31214bccef Mon Sep 17 00:00:00 2001 From: ilhamwara Date: Mon, 23 Jun 2025 10:08:28 +0700 Subject: [PATCH] update --- app/Http/Controllers/AjaxController.php | 22 +++ .../Auth/CustomLoginController.php | 2 + .../Controllers/Management/UserController.php | 5 + .../Opendata/DatasetController.php | 7 +- app/Models/User.php | 5 + ..._23_020319_add_column_ms_instansi_user.php | 30 +++ database/seeders/DatabaseSeeder.php | 171 ++++++++++++++++++ .../modules/management/user/form.blade.php | 78 ++++++-- .../modules/opendata/dataset/index.blade.php | 2 + routes/web.php | 3 + 10 files changed, 308 insertions(+), 17 deletions(-) create mode 100644 app/Http/Controllers/AjaxController.php create mode 100644 database/migrations/2025_06_23_020319_add_column_ms_instansi_user.php diff --git a/app/Http/Controllers/AjaxController.php b/app/Http/Controllers/AjaxController.php new file mode 100644 index 0000000..206aa8d --- /dev/null +++ b/app/Http/Controllers/AjaxController.php @@ -0,0 +1,22 @@ +get(); + + foreach ($instansi as $key => $value) { + $data[$key]['id'] = encode_id($value->MsInstansiId); + $data[$key]['name'] = $value->name; + } + + return response()->json(['data' => $data,'status' => true]); + } +} diff --git a/app/Http/Controllers/Auth/CustomLoginController.php b/app/Http/Controllers/Auth/CustomLoginController.php index ad9248f..5d8094b 100644 --- a/app/Http/Controllers/Auth/CustomLoginController.php +++ b/app/Http/Controllers/Auth/CustomLoginController.php @@ -42,6 +42,7 @@ class CustomLoginController extends Controller 'email' => $user->email, 'currYear' => date('Y'), 'group_id' => @$user->ms_group_id, + 'instansi_id' => @$user->ms_instansi_id, 'group_alias' => @$user->group->alias, 'group_name' => @$user->group->name, ]; @@ -70,6 +71,7 @@ class CustomLoginController extends Controller 'email' => $user->email, 'currYear' => date('Y'), 'group_id' => @$user->ms_group_id, + 'instansi_id' => @$user->ms_instansi_id, 'group_alias' => @$user->group->alias, 'group_name' => @$user->group->name, ]; diff --git a/app/Http/Controllers/Management/UserController.php b/app/Http/Controllers/Management/UserController.php index 4b3ea4b..80b128e 100644 --- a/app/Http/Controllers/Management/UserController.php +++ b/app/Http/Controllers/Management/UserController.php @@ -97,6 +97,7 @@ class UserController extends Controller 'email' => 'required|unique:users,email,'.$keyId.'|email', 'name' => 'required|max:50', 'group' => 'required', + 'ms_instansi_id' => 'required', 'username' => 'required|unique:users,username,'.$keyId, 'password' => 'nullable|min:8|max:15|regex:/[a-z]/|regex:/[A-Z]/|regex:/[0-9]/|regex:/[@$!%*#?&]/', //min 8 char, maks 15 char, min 1 symbol, min 1 uppercase, min 1 lowercase, 1 number ],[ @@ -109,6 +110,7 @@ class UserController extends Controller $user->email = $request->email; $user->username = $request->username; $user->ms_group_id = decode_id($request->group); + $user->ms_instansi_id = decode_id($request->ms_instansi_id); if(@$request->password){ $user->password = Hash::make($request->password); } @@ -119,6 +121,7 @@ class UserController extends Controller 'email' => 'required|unique:users,email|email', 'name' => 'required|max:50', 'group' => 'required', + 'ms_instansi_id' => 'required', 'username' => 'required|unique:users,username', 'password' => 'required|min:8|max:15|regex:/[a-z]/|regex:/[A-Z]/|regex:/[0-9]/|regex:/[@$!%*#?&]/', //min 8 char, maks 15 char, min 1 symbol, min 1 uppercase, min 1 lowercase, 1 number ],[ @@ -131,6 +134,7 @@ class UserController extends Controller $user->email = $request->email; $user->username = $request->username; $user->ms_group_id = decode_id($request->group); + $user->ms_instansi_id = decode_id($request->ms_instansi_id); if(@$request->password){ $user->password = Hash::make($request->password); } @@ -226,6 +230,7 @@ class UserController extends Controller 'email' => $user->email, 'currYear' => date('Y'), 'group_id' => @$user->ms_group_id, + 'instansi_id' => @$user->ms_instansi_id, 'group_alias' => @$user->group->alias, 'group_name' => @$user->group->name, ]; diff --git a/app/Http/Controllers/Opendata/DatasetController.php b/app/Http/Controllers/Opendata/DatasetController.php index ac67fcf..430235f 100644 --- a/app/Http/Controllers/Opendata/DatasetController.php +++ b/app/Http/Controllers/Opendata/DatasetController.php @@ -261,7 +261,12 @@ class DatasetController extends Controller $data['route'] = $this->route; $data['keyId'] = $id; $data['item'] = Dataset::find($keyId); - $data['instansi'] = Instansi::all(); + if(session('group_alias') == 'administrator'){ + $data['instansi'] = Instansi::all(); + }else{ + $data['instansi'] = Instansi::where('MsInstansiId',session('instansi_id'))->get(); + } + $data['topik'] = Topik::all(); $data['template'] = Template::all(); return view($this->template.'.form',$data); diff --git a/app/Models/User.php b/app/Models/User.php index 4db43a0..7a5ad82 100644 --- a/app/Models/User.php +++ b/app/Models/User.php @@ -47,4 +47,9 @@ class User extends Authenticatable { return $this->belongsTo(\App\Models\Master\Group::class,'ms_group_id','MsGroupId'); } + + public function instansi() + { + return $this->belongsTo(\App\Models\Master\Instansi::class,'ms_instansi_id','MsInstansiId'); + } } diff --git a/database/migrations/2025_06_23_020319_add_column_ms_instansi_user.php b/database/migrations/2025_06_23_020319_add_column_ms_instansi_user.php new file mode 100644 index 0000000..ee91d06 --- /dev/null +++ b/database/migrations/2025_06_23_020319_add_column_ms_instansi_user.php @@ -0,0 +1,30 @@ +integer('ms_instansi_id')->after('id')->default(1); + + $table->foreign('ms_instansi_id')->references('MsInstansiId')->on('ms_instansi')->cascadeOnDelete(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::table('users', function (Blueprint $table) { + // + }); + } +}; diff --git a/database/seeders/DatabaseSeeder.php b/database/seeders/DatabaseSeeder.php index bff5c81..5c8be96 100644 --- a/database/seeders/DatabaseSeeder.php +++ b/database/seeders/DatabaseSeeder.php @@ -6,6 +6,7 @@ namespace Database\Seeders; use Illuminate\Database\Seeder; use Hash; use App\Models\Master\Group; +use App\Models\Master\Instansi; use App\Models\User; class DatabaseSeeder extends Seeder @@ -37,6 +38,64 @@ class DatabaseSeeder extends Seeder 'status' => 1, ]); } + $instansi = [ + ['type' => 'Biro' , 'name' => 'Biro Kepala Daerah'], + ['type' => 'Biro' , 'name' => 'Biro Kerjasama Daerah'], + ['type' => 'Biro' , 'name' => 'Biro Kesejahteraan Sosial'], + ['type' => 'Biro' , 'name' => 'Biro Organisasi Dan Reformasi Birokrasi'], + ['type' => 'Biro' , 'name' => 'Biro Pembangunan Dan Lingkungan Hidup'], + ['type' => 'Biro' , 'name' => 'Biro Pemerintahan'], + ['type' => 'Biro' , 'name' => 'Biro Pendidikan Dan Mental Spiritual'], + ['type' => 'Biro' , 'name' => 'Biro Perekonomian Dan Keuangan'], + ['type' => 'Biro' , 'name' => 'Biro Umum dan Administrasi Sekretariat Daerah'], + ['type' => 'Biro' , 'name' => 'Biro Hukum'], + ['type' => 'Badan' , 'name' => 'Badan Perencanaan Pembangunan Daerah (Bappeda)'], + ['type' => 'Badan' , 'name' => 'Badan Pengelola Keuangan Daerah (BPKD)'], + ['type' => 'Badan' , 'name' => 'Badan Pengelola Aset Daerah (BPAD)'], + ['type' => 'Badan' , 'name' => 'Badan Pendapatan Daerah (Bapenda)'], + ['type' => 'Badan' , 'name' => 'Badan Kesatuan Bangsa dan Politik (Kesbangpol)'], + ['type' => 'Badan' , 'name' => 'Badan Pembinaan Badan Usaha Milik Daerah (BPBUMD)'], + ['type' => 'Badan' , 'name' => 'Badan Kepegawaian Daerah (BKD)'], + ['type' => 'Badan' , 'name' => 'Badan Pengembangan Sumber Daya Manusia (BPSDM)'], + ['type' => 'Badan' , 'name' => 'Badan Penanggulangan Bencana Daerah (BPBD)'], + ['type' => 'Badan' , 'name' => 'Badan Pelayanan Pengadaan Barang dan Jasa (BPPBJ)'], + ['type' => 'Deputi' , 'name' => 'Deputi Bidang Tata Ruang dan Lingkungan Hidup'], + ['type' => 'Deputi' , 'name' => 'Deputi Bidang Pengendalian Kependudukan dan Permukiman'], + ['type' => 'Deputi' , 'name' => 'Deputi Bidang Industri, Perdagangan dan Transportasi'], + ['type' => 'Deputi' , 'name' => 'Deputi Bidang Budaya dan Pariwisata'], + ['type' => 'Dinas' , 'name' => 'Dinas Pendidikan'], + ['type' => 'Dinas' , 'name' => 'Dinas Kesehatan'], + ['type' => 'Dinas' , 'name' => 'Dinas Bina Marga'], + ['type' => 'Dinas' , 'name' => 'Dinas Sumber Daya Air'], + ['type' => 'Dinas' , 'name' => 'Dinas Cipta Karya, Tata Ruang dan Pertanahan'], + ['type' => 'Dinas' , 'name' => 'Dinas Perumahan Rakyat dan Kawasan Permukiman'], + ['type' => 'Dinas' , 'name' => 'Dinas Penanggulangan Kebakaran dan Penyelamatan'], + ['type' => 'Dinas' , 'name' => 'Dinas Sosial'], + ['type' => 'Dinas' , 'name' => 'Dinas Tenaga Kerja, Transmigrasi dan Energi'], + ['type' => 'Dinas' , 'name' => 'Dinas Pemberdayaan, Perlindungan Anak dan Pengendalian Penduduk'], + ['type' => 'Dinas' , 'name' => 'Dinas Ketahanan Pangan, Kelautan dan Pertanian'], + ['type' => 'Dinas' , 'name' => 'Dinas Lingkungan Hidup'], + ['type' => 'Dinas' , 'name' => 'Dinas Kependudukan dan Pencatatan Sipil'], + ['type' => 'Dinas' , 'name' => 'Dinas Perhubungan'], + ['type' => 'Dinas' , 'name' => 'Dinas Komunikasi, Informatika dan Statistik'], + ['type' => 'Dinas' , 'name' => 'Dinas Perindustrian, Perdagangan, Koperasi dan Usaha Kecil Menengah'], + ['type' => 'Dinas' , 'name' => 'Dinas Penanaman Modal dan Pelayanan Terpadu Satu Pintu'], + ['type' => 'Dinas' , 'name' => 'Dinas Pemuda dan Olahraga'], + ['type' => 'Dinas' , 'name' => 'Dinas Pariwisata dan Ekonomi Kreatif'], + ['type' => 'Dinas' , 'name' => 'Dinas Perpustakaan dan Kearsipan'], + ['type' => 'Dinas' , 'name' => 'Dinas Pertamanan dan Hutan Kota'], + ['type' => 'Dinas' , 'name' => 'Dinas Kebudayaan'], + ]; + + foreach($instansi as $dataInstansi){ + Instansi::updateOrCreate([ + 'parent' => $dataInstansi['type'], + 'name' => $dataInstansi['name'], + ],[ + 'parent' => $dataInstansi['type'], + 'name' => $dataInstansi['name'], + ]); + } User::updateOrCreate([ 'name' => 'Administrator', @@ -47,7 +106,119 @@ class DatabaseSeeder extends Seeder 'username' => 'administrator', 'email' => 'admindikplhd@dlh.go.id', 'ms_group_id' => '1', + 'ms_instansi_id' => '1', 'password' => Hash::make('##Dikplhd2025'), ]); + + + $menu = [ + [ + 'parent_id' => '0', + 'title' => 'Master Data', + 'module' => 'modules.master.*', + 'url' => '#', + 'menu_type' => 'sidebar', + 'menu_icon' => 'ri-database-2-line', + 'ordering' => '5', + 'status' => 'true', + 'created_by' => '1', + 'updated_by' => '0' + ],[ + 'parent_id' => '0', + 'title' => 'User & Hak Akses', + 'module' => 'modules.management.*', + 'url' => '#', + 'menu_type' => 'sidebar', + 'menu_icon' => 'ri-database-2-line', + 'ordering' => '5', + 'status' => 'true', + 'created_by' => '1', + 'updated_by' => '0' + ],[ + 'parent_id' => '2', + 'title' => 'Data Users', + 'module' => 'modules.management.user.*', + 'url' => 'management/user', + 'menu_type' => 'sidebar', + 'menu_icon' => 'ri-user-line', + 'ordering' => '1', + 'status' => 'true', + 'created_by' => '1', + 'updated_by' => '0' + ],[ + 'parent_id' => '2', + 'title' => 'Data Role User', + 'module' => 'modules.management.role.*', + 'url' => 'management/role', + 'menu_type' => 'sidebar', + 'menu_icon' => 'ri-share-line', + 'ordering' => '3', + 'status' => 'true', + 'created_by' => '1', + 'updated_by' => '0' + ],[ + 'parent_id' => '1', + 'title' => 'Data Instansi', + 'module' => 'modules.instansi.*', + 'url' => 'master/instansi', + 'menu_type' => 'sidebar', + 'menu_icon' => 'ri-home-line', + 'ordering' =>'1', + 'status' => 'true', + 'created_by' => '1', + 'updated_by' => '0' + ],[ + 'parent_id' => '0', + 'title' => 'Open Data', + 'module' => 'modules.opendata.*', + 'url' => '#', + 'menu_type' => 'sidebar', + 'menu_icon' => 'ri-database-2-line', + 'ordering' => '1', + 'status' => 'true', + 'created_by' => '1', + 'updated_by' => '0' + ],[ + 'parent_id' => '6', + 'title' => 'Dataset', + 'module' => 'modules.opendata.dataset.*', + 'url' => 'opendata/dataset', + 'menu_type' => 'sidebar', + 'menu_icon' => 'ri-database-2-line', + 'ordering' => '1', + 'status' => 'true', + 'created_by' => '1', + 'updated_by' => '0' + ], + ]; + + foreach($menu as $dataMenu){ + Menu::updateOrCreate([ + 'parent_id' => $dataMenu['parent_id'], + 'title' => $dataMenu['title'], + 'module' => $dataMenu['module'], + 'url' => $dataMenu['url'], + 'menu_type' => $dataMenu['menu_type'], + 'menu_icon' => $dataMenu['menu_icon'], + 'ordering' => $dataMenu['ordering'], + 'status' => $dataMenu['status'], + 'created_by' => $dataMenu['created_by'], + 'updated_by' => $dataMenu['updated_by'], + ],[ + 'parent_id' => $dataMenu['parent_id'], + 'title' => $dataMenu['title'], + 'module' => $dataMenu['module'], + 'url' => $dataMenu['url'], + 'menu_type' => $dataMenu['menu_type'], + 'menu_icon' => $dataMenu['menu_icon'], + 'ordering' => $dataMenu['ordering'], + 'status' => $dataMenu['status'], + 'created_by' => $dataMenu['created_by'], + 'updated_by' => $dataMenu['updated_by'], + ]); + } + + + } } diff --git a/resources/views/modules/management/user/form.blade.php b/resources/views/modules/management/user/form.blade.php index ddfd0b3..24aecf4 100644 --- a/resources/views/modules/management/user/form.blade.php +++ b/resources/views/modules/management/user/form.blade.php @@ -1,4 +1,7 @@ @extends('layouts.master') +@section('css') + +@endsection @section('content')
@@ -45,6 +48,30 @@ {{$message}} @enderror
+
+ + +
+ +
+ + + @error('ms_instansi_id') + {{$message}} + @enderror +
+
@@ -68,25 +95,44 @@
@endsection -@section('page-js') +@section('js') + + @endsection \ No newline at end of file diff --git a/resources/views/modules/opendata/dataset/index.blade.php b/resources/views/modules/opendata/dataset/index.blade.php index 4a8e56f..5700062 100644 --- a/resources/views/modules/opendata/dataset/index.blade.php +++ b/resources/views/modules/opendata/dataset/index.blade.php @@ -12,7 +12,9 @@
+ @if(permission('is_create', $route.'.*','module',false) || permission('is_update', $route.'.*','module',false))  Tambah Data + @endif
name('post_log Route::get('register',[CustomRegisterController::class,'index'])->name('register'); Route::post('register',[CustomRegisterController::class,'post_register'])->name('post_register'); +Route::get('getInstansi/{type}',[AjaxController::class,'getInstansi'])->name('getInstansi'); + Route::middleware(Session::class)->name('modules.')->group(function () { include_route_files(__DIR__ . '/modules');