first commit

This commit is contained in:
2026-05-14 09:08:09 +08:00
commit 919b86c8ec
111 changed files with 14085 additions and 0 deletions

View File

@@ -0,0 +1,94 @@
<?php
namespace Database\Seeders;
use App\Models\Jabatan;
use App\Models\Permohonan;
use App\Models\User;
use App\Models\Vot;
use Illuminate\Database\Seeder;
use Illuminate\Support\Facades\Hash;
use Spatie\Permission\Models\Permission;
use Spatie\Permission\Models\Role;
class DatabaseSeeder extends Seeder
{
public function run(): void
{
app()[\Spatie\Permission\PermissionRegistrar::class]->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],
]);
}
}
}