diff --git a/database/seeders/UserSeeder.php b/database/seeders/UserSeeder.php index 5f2a2d5..8a1d950 100644 --- a/database/seeders/UserSeeder.php +++ b/database/seeders/UserSeeder.php @@ -2,7 +2,6 @@ namespace Database\Seeders; -use App\Models\Division; use App\Models\User; use Illuminate\Database\Seeder; @@ -10,9 +9,9 @@ class UserSeeder extends Seeder { public function run(): void { - $divisions = Division::pluck('id')->toArray(); + $divisions = \App\Models\Division::all(); - // super_admin + // super_admin (tanpa divisi) User::factory()->createOne([ 'name' => 'Super Admin', 'email' => 'admin@admin.com', @@ -21,22 +20,29 @@ class UserSeeder extends Seeder 'status' => 'aktif', ])->assignRole('super_admin'); - // 2 user per role - foreach (['ketua', 'bendahara', 'pengurus', 'auditor', 'anggota'] as $role) { - User::factory(2)->create(['division_id' => fake()->randomElement($divisions)]) - ->each(fn ($user) => $user->assignRole($role)); + // ketua, bendahara, auditor — tanpa divisi spesifik + foreach (['ketua', 'bendahara', 'auditor'] as $role) { + User::factory(2)->create()->each(fn ($u) => $u->assignRole($role)); } // 1 editor User::factory()->createOne([ - 'name' => 'Editor Konten', - 'email' => 'editor@persegi.test', - 'password' => bcrypt('password'), - 'status' => 'aktif', - 'division_id' => fake()->randomElement($divisions), + 'name' => 'Editor Konten', + 'email' => 'editor@persegi.test', + 'password' => bcrypt('password'), + 'status' => 'aktif', ])->assignRole('editor'); - // 2 user tanpa role - User::factory(2)->create(['division_id' => fake()->randomElement($divisions)]); + // Setiap divisi: 1 pengurus (jadi leader) + 3–8 anggota + foreach ($divisions as $division) { + $pengurus = User::factory()->create(['division_id' => $division->id]); + $pengurus->assignRole('pengurus'); + + $division->update(['leader_id' => $pengurus->id]); + + $count = rand(3, 8); + User::factory($count)->create(['division_id' => $division->id]) + ->each(fn ($u) => $u->assignRole('anggota')); + } } }