main
Ilham Wara Nugroho 2025-10-20 15:27:17 +07:00
parent 5b884e595e
commit 288e32dcbe
11 changed files with 332 additions and 226 deletions

View File

@ -9,6 +9,7 @@ use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Hash;
use App\Models\User;
use App\Models\UserInstansi;
use App\Models\Master\Group;
class UserController extends Controller
@ -90,18 +91,19 @@ class UserController extends Controller
{
try {
// dd($request->all());
$keyId = decode_id($request->secure_id);
if(@$keyId){
Validator::make($request->all(), [
'email' => 'required|unique:users,email,'.$keyId.'|email',
'name' => 'required|max:50',
'name' => 'required|max:255',
'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
'password' => 'nullable|min:5|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
],[
'password.min' => 'password Minimal 8 Karakter',
'password.max' => 'password Maksimal 15 Karakter',
'password.regex' => 'Format Kata Sandi harus mengandung minimal Huruf Besar, Huruf Kecil, Angka, Spesial Karakter',
])->validate();
@ -110,22 +112,32 @@ 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);
}
$user->name = $request->name;
$user->save();
// dd(decode_id($request->ms_instansi_id));
UserInstansi::updateOrCreate([
'user_id' => $user->id,
'ms_instansi_id' => decode_id($request->ms_instansi_id),
],[
'user_id' => $user->id,
'ms_instansi_id' => decode_id($request->ms_instansi_id),
]);
}else{
Validator::make($request->all(), [
'email' => 'required|unique:users,email|email',
'name' => 'required|max:50',
'name' => 'required|max:255',
'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
'password' => 'required|min:5|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
],[
'password.min' => 'password Minimal 8 Karakter',
'password.min' => 'password Minimal 5 Karakter',
'password.max' => 'password Maksimal 15 Karakter',
'password.regex' => 'Format Kata Sandi harus mengandung minimal Huruf Besar, Huruf Kecil, Angka, Spesial Karakter',
])->validate();
@ -134,12 +146,19 @@ 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);
}
$user->name = $request->name;
$user->save();
UserInstansi::updateOrCreate([
'user_id' => $user->id,
'ms_instansi_id' => decode_id($request->ms_instansi_id),
],[
'user_id' => $user->id,
'ms_instansi_id' => decode_id($request->ms_instansi_id),
]);
}
return redirect()->back()->with([
@ -186,6 +205,7 @@ class UserController extends Controller
$data['route'] = $this->route;
$data['keyId'] = $id;
$data['item'] = User::where('id',$keyId)->first();
$data['userInstansi'] = UserInstansi::where('user_id',$keyId)->first();
$data['group'] = Group::where('MsGroupId','!=',1)->get();
return view($this->template.'.form',$data);
}

View File

@ -55,7 +55,7 @@ class InstansiController extends Controller
$action .= '<a href="'.url('master/instansi/update/'.encode_id($row->MsInstansiId)).'" data-toggle="tooltip" title="Edit Data" class="btn btn-sm btn-block bg-primary"><i class="ri-pencil-line text-white"></i></a>';
if((session('group_id') == 1) || (session('group_id') == 9)){
// $action .= '<a href="#" data-href="'.url('management/user/forcelogin/'.encode_id($row->id)).'" data-toggle="tooltip" title="Force Login" class="forcelogin btn btn-sm btn-block bg-success"><i class="ri-user-2-line text-white"></i></a>';
// $action .= '<a href="#" data-href="'.url('management/user/delete/'.encode_id($row->id)).'" data-toggle="tooltip" title="Hapus Data" class="remove_data btn btn-sm btn-block bg-danger"><i class="ri-delete-bin-line text-white"></i></a>';
$action .= '<a href="#" data-href="'.url('master/instansi/delete/'.encode_id($row->MsInstansiId)).'" data-toggle="tooltip" title="Hapus Data" class="remove_data btn btn-sm btn-block bg-danger"><i class="ri-delete-bin-line text-white"></i></a>';
}
$action .= '</div>';
}
@ -242,4 +242,13 @@ class InstansiController extends Controller
{
//
}
public function delete($id)
{
$keyId = decode_id($id);
$user = Instansi::where('MsInstansiId',$keyId)->delete();
return response()->json(['success' => true,'message' => 'Berhasil update data','type' => 'success']);
}
}

View File

@ -48,8 +48,5 @@ 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');
}
}

View File

@ -0,0 +1,20 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class UserInstansi extends Model
{
use HasFactory;
protected $table = 'user_instansi';
protected $primaryKey = 'UserInstansiId';
protected $guarded = [];
public function instansi()
{
return $this->belongsTo(\App\Models\Master\Instansi::class,'ms_instansi_id','MsInstansiId');
}
}

View File

@ -11,10 +11,14 @@ return new class extends Migration
*/
public function up(): void
{
Schema::table('users', function (Blueprint $table) {
$table->integer('ms_instansi_id')->after('id')->default(1);
Schema::create('user_instansi', function (Blueprint $table) {
$table->id('UserInstansiId');
$table->integer('user_id');
$table->integer('ms_instansi_id');
$table->timestampsTz();
$table->foreign('ms_instansi_id')->references('MsInstansiId')->on('ms_instansi')->cascadeOnDelete();
$table->foreign('user_id')->references('id')->on('users')->cascadeOnDelete();
});
}
@ -23,8 +27,6 @@ return new class extends Migration
*/
public function down(): void
{
Schema::table('users', function (Blueprint $table) {
//
});
Schema::dropIfExists('user_instansis');
}
};

View File

@ -5,9 +5,8 @@ namespace Database\Seeders;
// use Illuminate\Database\Console\Seeds\WithoutModelEvents;
use Illuminate\Database\Seeder;
use Hash;
use App\Models\Master\Group;
use App\Models\Master\Instansi;
use App\Models\User;
use App\Models\UserInstansi;
class DatabaseSeeder extends Seeder
{
@ -16,86 +15,6 @@ class DatabaseSeeder extends Seeder
*/
public function run(): void
{
// \App\Models\User::factory(10)->create();
// \App\Models\User::factory()->create([
// 'name' => 'Test User',
// 'email' => 'test@example.com',
// ]);
$group = [
['name' => 'Administrator','alias' => 'administrator'],
['name' => 'Dinas','alias' => 'dinas'],
];
foreach($group as $valGroup){
Group::updateOrCreate([
'name' => $valGroup['name'],
'alias' => $valGroup['alias'],
],[
'name' => $valGroup['name'],
'alias' => $valGroup['alias'],
'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',
@ -106,119 +25,8 @@ 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'],
]);
}
}
}

View File

@ -0,0 +1,36 @@
<?php
namespace Database\Seeders;
use Illuminate\Database\Console\Seeds\WithoutModelEvents;
use Illuminate\Database\Seeder;
use App\Models\Master\Group;
class GroupSeeder extends Seeder
{
/**
* Run the database seeds.
*/
public function run(): void
{
$group = [
['name' => 'Administrator','alias' => 'administrator'],
['name' => 'Admin TL','alias' => 'admin'],
['name' => 'Lembaga / Badan Pemerintah Daerah','alias' => 'lembaga-daerah'],
['name' => 'Lembaga Non-Kementerian / Badan Nasional','alias' => 'badan-nasional'],
['name' => 'Biro / Sekretariat / Unit Pelayanan','alias' => 'biro'],
['name' => 'Kementerian / Lembaga Pemerintah Pusat','alias' => 'kementrian'],
];
foreach($group as $valGroup){
Group::updateOrCreate([
'name' => $valGroup['name'],
'alias' => $valGroup['alias'],
],[
'name' => $valGroup['name'],
'alias' => $valGroup['alias'],
'status' => 1,
]);
}
}
}

View File

@ -0,0 +1,75 @@
<?php
namespace Database\Seeders;
use Illuminate\Database\Console\Seeds\WithoutModelEvents;
use Illuminate\Database\Seeder;
use App\Models\Master\Instansi;
class InstansiSeeder extends Seeder
{
/**
* Run the database seeds.
*/
public function run(): void
{
$instansi = [
// Kementerian / Lembaga Pemerintah Pusat
['type' => 'kementrian', 'name' => 'Dirjen Bina Marga'],
['type' => 'kementrian', 'name' => 'Direktorat Pengelolaan Limbah B3 dan Non B3 Deputi PSLB3 KLHK'],
['type' => 'kementrian', 'name' => 'BKSDA Jakarta'],
['type' => 'kementrian', 'name' => 'Balai Taman Nasional Kepulauan Seribu'],
['type' => 'kementrian', 'name' => 'BPH Migas'],
['type' => 'kementrian', 'name' => 'DPHK'],
['type' => 'kementrian', 'name' => 'DKTKE'],
['type' => 'kementrian', 'name' => 'Pertamina MOR III'],
// Biro / Sekretariat / Unit Pelayanan
['type' => 'biro', 'name' => 'Unit Pelayanan Terpadu Satu Pintu KLH'],
['type' => 'biro', 'name' => 'Biro Hukum'],
// Lembaga Non-Kementerian / Badan Nasional
['type' => 'badan-nasional', 'name' => 'BMKG Prov. DKI'],
['type' => 'badan-nasional', 'name' => 'BPS Prov. DKI Jakarta'],
['type' => 'badan-nasional', 'name' => 'PGN'],
['type' => 'badan-nasional', 'name' => 'PHE ONWJ'],
['type' => 'badan-nasional', 'name' => 'Pertamina Hulu Energi'],
['type' => 'badan-nasional', 'name' => 'KAI Commuter'],
['type' => 'badan-nasional', 'name' => 'BPH Migas'],
['type' => 'badan-nasional', 'name' => 'Balai Taman Nasional'],
['type' => 'badan-nasional', 'name' => 'BKSDA Jakarta'],
// Lembaga / Badan Pemerintah Daerah
['type' => 'lembaga-daerah', 'name' => 'Bappeda'],
['type' => 'lembaga-daerah', 'name' => 'Bapenda'],
['type' => 'lembaga-daerah', 'name' => 'BPBD'],
['type' => 'lembaga-daerah', 'name' => 'DCKTRP'],
['type' => 'lembaga-daerah', 'name' => 'DSDA'],
['type' => 'lembaga-daerah', 'name' => 'DKPKP'],
['type' => 'lembaga-daerah', 'name' => 'DPMPTSP'],
['type' => 'lembaga-daerah', 'name' => 'Dinkes'],
['type' => 'lembaga-daerah', 'name' => 'Dinas Dukcapil'],
['type' => 'lembaga-daerah', 'name' => 'Dinas Bina Marga'],
['type' => 'lembaga-daerah', 'name' => 'Dinas Gulkarmat'],
['type' => 'lembaga-daerah', 'name' => 'Dinas Sosial'],
['type' => 'lembaga-daerah', 'name' => 'Dishub'],
['type' => 'lembaga-daerah', 'name' => 'Dinas Kominfotik'],
['type' => 'lembaga-daerah', 'name' => 'DLH'],
['type' => 'lembaga-daerah', 'name' => 'Paljaya'],
['type' => 'lembaga-daerah', 'name' => 'PAM Jaya'],
['type' => 'lembaga-daerah', 'name' => 'Transjakarta'],
['type' => 'lembaga-daerah', 'name' => 'MRT Jakarta'],
];
foreach($instansi as $dataInstansi){
Instansi::updateOrCreate([
'parent' => $dataInstansi['type'],
'name' => $dataInstansi['name'],
],[
'parent' => $dataInstansi['type'],
'name' => $dataInstansi['name'],
]);
}
}
}

View File

@ -0,0 +1,123 @@
<?php
namespace Database\Seeders;
use Illuminate\Database\Console\Seeds\WithoutModelEvents;
use Illuminate\Database\Seeder;
use App\Models\Master\Menu;
class MenuSeeder extends Seeder
{
/**
* Run the database seeds.
*/
public function run(): void
{
$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'],
]);
}
}
}

View File

@ -19,21 +19,21 @@
<label class="mb-3">Username</label>
<input type="text" value="{{@$item->username ? @$item->username : old('username')}}" name="username" class="form-input @error('username') is-invalid @enderror" placeholder="Masukan username" required>
@error('username')
<span class="invalid-feedback" style="display: block!important;"><strong>{{$message}}</strong></span>
<span class="p-2 bg-danger text-white rounded mt-1" style="display: block!important;"><strong>{{$message}}</strong></span>
@enderror
</div>
<div class="mb-3">
<label class="mb-3">Nama</label>
<input type="text" value="{{@$item->name ? @$item->name : old('name')}}" name="name" class="form-input @error('name') is-invalid @enderror" placeholder="Masukan Nama" required>
@error('name')
<span class="invalid-feedback" style="display: block!important;"><strong>{{$message}}</strong></span>
<span class="p-2 bg-danger text-white rounded mt-1" style="display: block!important;"><strong>{{$message}}</strong></span>
@enderror
</div>
<div class="mb-3">
<label class="mb-3">Email</label>
<input type="email" name="email" value="{{@$item->email ? @$item->email : old('email')}}" id="emailverify" class="form-input @error('email') is-invalid @enderror" placeholder="Masukan Email Aktif" required>
@error('name')
<span class="invalid-feedback" style="display: block!important;"><strong>{{$message}}</strong></span>
@error('email')
<span class="p-2 bg-danger text-white rounded mt-1" style="display: block!important;"><strong>{{$message}}</strong></span>
@enderror
</div>
<div class="mb-3">
@ -45,17 +45,22 @@
@endforeach
</select>
@error('group')
<span class="invalid-feedback" style="display: block!important;"><strong>{{$message}}</strong></span>
<span class="p-2 bg-danger text-white rounded mt-1" style="display: block!important;"><strong>{{$message}}</strong></span>
@enderror
</div>
<div class="mb-3">
<label class="mb-3">Jenis Instansi</label>
<select name="type" id="type" class="form-input @error('type') is-invalid @enderror" required>
<option value="">-Pilih Jenis Instansi-</option>
<option {{@$item->instansi->parent == 'Biro' ? 'selected' : '' }} value="Biro">Biro</option>
<option {{@$item->instansi->parent == 'Badan' ? 'selected' : '' }} value="Badan">Badan</option>
<option {{@$item->instansi->parent == 'Deputi' ? 'selected' : '' }} value="Deputi">Deputi</option>
<option {{@$item->instansi->parent == 'Dinas' ? 'selected' : '' }} value="Dinas">Dinas</option>
@foreach($group as $data_group)
<option {{ @$item->ms_group_id == $data_group->MsGroupId ? 'selected' : '' }} value="{{ $data_group->alias }}">{{ $data_group->name }}</option>
@endforeach
@error('type')
<span class="p-2 bg-danger text-white rounded mt-1" style="display: block!important;"><strong>{{$message}}</strong></span>
@enderror
{{-- <option {{@$item->instansi->parent == 'Badan' ? 'selected' : '' }} value="Badan">Badan</option> --}}
{{-- <option {{@$item->instansi->parent == 'Deputi' ? 'selected' : '' }} value="Deputi">Deputi</option> --}}
{{-- <option {{@$item->instansi->parent == 'Dinas' ? 'selected' : '' }} value="Dinas">Dinas</option> --}}
</select>
</div>
@ -63,12 +68,12 @@
<label class="mb-3">Instansi</label>
<select name="ms_instansi_id" data-trigger id="ms_instansi_id" class="form-input @error('ms_instansi_id') is-invalid @enderror" required>
<option value="">-Pilih Jenis Instansi-</option>
@if(@$item)
<option selected value="{{encode_id(@$item->ms_instansi_id)}}">{{@$item->instansi->name}}</option>
@if(@$userInstansi)
<option selected value="{{encode_id(@$userInstansi->ms_instansi_id)}}">{{@$userInstansi->instansi->name}}</option>
@endif
</select>
@error('ms_instansi_id')
<span class="invalid-feedback" style="display: block!important;"><strong>{{$message}}</strong></span>
<span class="p-2 bg-danger text-white rounded mt-1" style="display: block!important;"><strong>{{$message}}</strong></span>
@enderror
</div>
@ -78,7 +83,7 @@
<label class="mb-3">Password Baru</label>
<input type="password" id="password" autocomplete="new-password" name="password" class="form-input @error('password') is-invalid @enderror" placeholder="Masukan Password Minimm 8 characters">
@error('password')
<span class="invalid-feedback" style="display: block!important;"><strong>{{$message}}</strong></span>
<span class="p-2 bg-danger text-white rounded mt-1" style="display: block!important;"><strong>{{$message}}</strong></span>
@enderror
<button class="btn bg-secondary my-2 text-white" type="button" id="togglePassword"><i class="ri-eye-line"></i> Lihat Password</button>
<p>
@ -131,8 +136,18 @@
});
});
$(document).ready(function() {
$('#togglePassword').on('click', function() {
let passwordField = $('#password');
let icon = $(this).find('i');
// Cek apakah input saat ini bertipe password
if (passwordField.attr('type') === 'password') {
passwordField.attr('type', 'text'); // Ubah ke teks
icon.removeClass('ri-eye-line').addClass('ri-eye-2-line'); // Ganti ikon
} else {
passwordField.attr('type', 'password'); // Ubah ke password
icon.removeClass('ri-eye-2-line').addClass('ri-eye-line'); // Kembalikan ikon
}
});
</script>
@endsection

View File

@ -69,6 +69,7 @@ Route::name('master.')->prefix('master')->group(function () {
Route::resource('/',InstansiController::class);
Route::get('grid',[InstansiController::class,'grid'])->name('grid');
Route::get('update/{id?}',[InstansiController::class,'update'])->name('update');
Route::get('delete/{id?}',[InstansiController::class,'delete'])->name('delete');
});
});