95 lines
4.1 KiB
PHP
95 lines
4.1 KiB
PHP
<?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],
|
|
]);
|
|
}
|
|
}
|
|
}
|