diff --git a/database/seeders/UsersSeeder.php b/database/seeders/UsersSeeder.php index 5bb751f..f46ac1d 100644 --- a/database/seeders/UsersSeeder.php +++ b/database/seeders/UsersSeeder.php @@ -5,83 +5,48 @@ namespace Modules\Usermanagement\Database\Seeders; use Illuminate\Database\Seeder; use Illuminate\Support\Facades\Hash; use Modules\Usermanagement\Models\User; +use Modules\Usermanagement\Database\Seeders\RolesSeeder; use Spatie\Permission\Models\Role; -use Illuminate\Support\Facades\DB; class UsersSeeder extends Seeder { + /** + * Run the database seeds. + */ public function run(): void { - $branchLuar = [ - 24, - 25, - 29, - 35, - 37, - 41, - 42, - 45, - 46, - 50, - 71, - 74, - 77, - 82, - 84, - 85, - 88, - 90, - 91, - 93, - 97, - 107, - 108, - 111, - 112, - 113, - 114, - 115 - ]; + $roleSeeder = new RolesSeeder(); + $rolesData = $roleSeeder->data(); - $branchDalam = [ - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 14, - 15, - 17, - 18, - 22, - 23, - 53, - 55, - 58, - 60, - 61, - 66, - 70, - 95, - 96, - 98, - 100, - 105 - ]; + /** + * ================================================== + * STEP 0: Pastikan semua roles dari RolesSeeder sudah dibuat di tabel roles + * ================================================== + */ + foreach ($rolesData as $roleData) { + Role::firstOrCreate( + ['name' => $roleData['name']], + ['guard_name' => 'web'] + ); + } - $kpno = 6; + /** + * ================================================== + * Helper function untuk membuat user + * ================================================== + */ + $createUser = function ($roleName, $branchId = null, $includeBranchInEmail = true, $includeBranchInName = true) { + $email = $roleName . ($includeBranchInEmail && $branchId ? $branchId : '') . '@ag.co.id'; + + $name = ucfirst($roleName); + if ($includeBranchInName && $branchId) { + $name .= ' ' . $branchId; + } - $createUser = function ($roleName, $branchId) { $user = User::firstOrCreate( - ['email' => $roleName . $branchId . '@ag.co.id'], + ['email' => $email], [ - 'name' => ucfirst($roleName) . ' ' . $branchId, + 'name' => $name, 'password' => Hash::make('bagbag'), 'branch_id' => $branchId, 'nik' => rand(100000, 999999), @@ -89,40 +54,64 @@ class UsersSeeder extends Seeder ] ); - $role = Role::firstOrCreate(['name' => $roleName], ['guard_name' => 'web']); - $user->assignRole($role); + $role = Role::where('name', $roleName)->first(); + if ($role) { + $user->assignRole($role); + } }; - + /** + * ================================================== + * STEP 1: Buat user per role (branch_id = 1) + * ================================================== + * - Tanpa angka "1" di email + * - Tanpa angka "1" di nama + */ + foreach ($rolesData as $roleData) { + $roleName = $roleData['name']; + $createUser($roleName, 1, false, false); // tanpa 1 di email & nama + } + + /** + * ================================================== + * STEP 2: Jalankan logic lama (user per cabang) + * ================================================== + */ + $branchLuar = [ + 24, 25, 29, 35, 37, 41, 42, 45, 46, 50, 71, 74, 77, + 82, 84, 85, 88, 90, 91, 93, 97, 107, 108, 111, 112, 113, 114, 115 + ]; + + $branchDalam = [ + 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 14, 15, 17, 18, 22, + 23, 53, 55, 58, 60, 61, 66, 70, 95, 96, 98, 100, 105 + ]; + + $kpno = 6; + foreach ($branchLuar as $branchId) { $createUser('legal', $branchId); } - $createUser('legal', $kpno); + $createUser('legal', $kpno); - $createUser('spvlegal', $kpno); - foreach (array_merge($branchLuar, $branchDalam) as $branchId) { $createUser('cabang', $branchId); } - foreach ($branchLuar as $branchId) { $createUser('admindokumen', $branchId); } $createUser('admindokumen', $kpno); - $createUser('adminkredit', $kpno); - foreach ($branchLuar as $branchId) { $createUser('auditor', $branchId); } $createUser('auditor', $kpno); - $createUser('soadmindokumen', $kpno); } }