first commit
This commit is contained in:
94
database/seeders/DatabaseSeeder.php
Normal file
94
database/seeders/DatabaseSeeder.php
Normal 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],
|
||||
]);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user