forgetCachedPermissions(); $permissions = [ 'manage configuration', 'manage users', 'manage roles', 'create permohonan', 'review permohonan', 'approve permohonan', 'view reports', 'export reports', ]; foreach ($permissions as $permission) { Permission::firstOrCreate(['name' => $permission, 'guard_name' => 'web']); } $adminRole = Role::firstOrCreate(['name' => 'Admin', 'guard_name' => 'web']); $pelaksanaRole = Role::firstOrCreate(['name' => 'Pelaksana', 'guard_name' => 'web']); $pemohonRole = Role::firstOrCreate(['name' => 'Pemohon', 'guard_name' => 'web']); $adminRole->syncPermissions($permissions); $pelaksanaRole->syncPermissions(['review permohonan', 'view reports']); $pemohonRole->syncPermissions(['create permohonan']); $jabatan = collect([ ['kod' => 'KEW', 'nama' => 'Jabatan Kewangan', 'peringkat' => 'Jabatan', 'penerangan' => 'Pengurusan kewangan dan bajet MBIP'], ['kod' => 'ICT', 'nama' => 'Bahagian Teknologi Maklumat', 'peringkat' => 'Bahagian', 'penerangan' => 'Perkhidmatan digital dan infrastruktur ICT'], ['kod' => 'KORP', 'nama' => 'Jabatan Korporat', 'peringkat' => 'Jabatan', 'penerangan' => 'Komunikasi korporat dan pentadbiran'], ])->map(fn ($row) => Jabatan::firstOrCreate(['kod' => $row['kod']], $row)); $vot = collect([ ['kod' => '21000', 'nama' => 'Bekalan Pejabat', 'jabatan_id' => $jabatan[0]->id], ['kod' => '24000', 'nama' => 'Penyelenggaraan Sistem', 'jabatan_id' => $jabatan[1]->id], ['kod' => '27000', 'nama' => 'Program Korporat', 'jabatan_id' => $jabatan[2]->id], ])->map(fn ($row) => Vot::firstOrCreate(['kod' => $row['kod']], $row + ['status' => true])); $admin = User::firstOrCreate(['email' => 'admin@mbip.gov.my'], [ 'name' => 'Admin Kewangan', 'password' => Hash::make('password'), 'jabatan_id' => $jabatan[0]->id, 'jawatan' => 'Akauntan', 'no_telefon' => '07-5550001', 'status' => true, ]); $admin->syncRoles('Admin'); $pelaksana = User::firstOrCreate(['email' => 'pelaksana@mbip.gov.my'], [ 'name' => 'Pegawai Pelaksana', 'password' => Hash::make('password'), 'jabatan_id' => $jabatan[1]->id, 'jawatan' => 'Pegawai Penyemak Bajet', 'no_telefon' => '07-5550002', 'status' => true, ]); $pelaksana->syncRoles('Pelaksana'); $pemohon = User::firstOrCreate(['email' => 'pemohon@mbip.gov.my'], [ 'name' => 'Pegawai Pemohon', 'password' => Hash::make('password'), 'jabatan_id' => $jabatan[1]->id, 'jawatan' => 'Penolong Pegawai Teknologi Maklumat', 'no_telefon' => '07-5550003', 'status' => true, ]); $pemohon->syncRoles('Pemohon'); $permohonan = Permohonan::firstOrCreate(['no_rujukan' => 'MBIP/BJT/DEMO/001'], [ 'user_id' => $pemohon->id, 'jabatan_id' => $jabatan[1]->id, 'vot_id' => $vot[1]->id, 'kategori' => 'Penyelenggaraan', 'tujuan' => 'Penyelenggaraan lesen dan sokongan sistem dalaman.', 'status' => 'Submitted', 'submitted_at' => now(), 'jumlah_keseluruhan' => 12500, ]); if ($permohonan->items()->count() === 0) { $permohonan->items()->createMany([ ['item' => 'Lesen sistem helpdesk', 'kuantiti' => 10, 'harga_anggaran' => 850, 'jumlah' => 8500], ['item' => 'Sokongan teknikal tahunan', 'kuantiti' => 1, 'harga_anggaran' => 4000, 'jumlah' => 4000], ]); } } }