This commit is contained in:
Saufi
2026-06-24 18:30:00 +08:00
commit c0c3d7c09c
122 changed files with 16321 additions and 0 deletions

View File

@@ -0,0 +1,65 @@
<?php
namespace Database\Seeders;
use App\Models\DrawSession;
use App\Models\Member;
use App\Models\Prize;
use Illuminate\Database\Seeder;
class DatabaseSeeder extends Seeder
{
public function run(): void
{
$this->call(RoleUserSeeder::class);
// Sesi cabutan aktif untuk event
DrawSession::firstOrCreate(
['is_active' => true],
['nama' => 'Mesyuarat Agung Tahunan KOIPB ' . date('Y')]
);
// 200 anggota dummy
if (Member::count() === 0) {
Member::factory()->count(200)->create();
}
$this->seedPrizes();
}
private function seedPrizes(): void
{
if (Prize::count() > 0) {
return;
}
// Definisi hadiah (kuantiti > 1 dipecah jadi item berasingan)
$definitions = [
['H01', 'Cabutan Utama - Umrah', 'Utama', 12000, 1, 1],
['H02', 'Motosikal', 'Utama', 6000, 2, 1],
['H03', 'Peti Sejuk 2 Pintu', 'Elektrik', 2500, 3, 1],
['H04', 'Mesin Basuh', 'Elektrik', 1800, 4, 1],
['H05', 'Smart TV 55"', 'Elektrik', 3200, 5, 1],
['H06', 'Telefon Pintar', 'Gajet', 2200, 6, 2],
['H07', 'Tablet', 'Gajet', 1500, 7, 2],
['H08', 'Basikal', 'Sukan', 900, 8, 2],
['H09', 'Hamper Premium', 'Hamper', 350, 9, 5],
['H10', 'Baucar Tunai RM200', 'Baucar', 200, 10, 5],
];
foreach ($definitions as [$kod, $nama, $kategori, $nilai, $drawOrder, $kuantiti]) {
for ($n = 1; $n <= $kuantiti; $n++) {
Prize::create([
'kod_hadiah' => $kod,
'nama_hadiah' => $kuantiti > 1 ? "{$nama} #{$n}" : $nama,
'kategori' => $kategori,
'nilai_anggaran' => $nilai,
'draw_order' => $drawOrder,
'item_index' => $n,
'batch_kod' => $kod,
'status' => Prize::STATUS_BELUM,
]);
}
}
}
}

View File

@@ -0,0 +1,38 @@
<?php
namespace Database\Seeders;
use App\Models\User;
use Illuminate\Database\Seeder;
use Illuminate\Support\Facades\Hash;
use Spatie\Permission\Models\Role;
class RoleUserSeeder extends Seeder
{
public function run(): void
{
$roles = [
User::ROLE_ADMIN,
User::ROLE_KAUNTER,
User::ROLE_CABUTAN,
];
foreach ($roles as $role) {
Role::firstOrCreate(['name' => $role, 'guard_name' => 'web']);
}
$users = [
['Admin KOIPB', 'admin@koipb.test', User::ROLE_ADMIN],
['Petugas Kaunter', 'kaunter@koipb.test', User::ROLE_KAUNTER],
['Petugas Cabutan', 'cabutan@koipb.test', User::ROLE_CABUTAN],
];
foreach ($users as [$name, $email, $role]) {
$user = User::firstOrCreate(
['email' => $email],
['name' => $name, 'password' => Hash::make('password')]
);
$user->syncRoles([$role]);
}
}
}