refactor(usermanagement): simplify UsersSeeder by removing hardcoded branch arrays and enhancing user creation logic

This commit is contained in:
Sholahuddin Al Ayubi
2025-11-11 13:29:37 +07:00
parent 7313f64a70
commit ff94434032

View File

@@ -5,83 +5,48 @@ namespace Modules\Usermanagement\Database\Seeders;
use Illuminate\Database\Seeder; use Illuminate\Database\Seeder;
use Illuminate\Support\Facades\Hash; use Illuminate\Support\Facades\Hash;
use Modules\Usermanagement\Models\User; use Modules\Usermanagement\Models\User;
use Modules\Usermanagement\Database\Seeders\RolesSeeder;
use Spatie\Permission\Models\Role; use Spatie\Permission\Models\Role;
use Illuminate\Support\Facades\DB;
class UsersSeeder extends Seeder class UsersSeeder extends Seeder
{ {
/**
* Run the database seeds.
*/
public function run(): void public function run(): void
{ {
$branchLuar = [ $roleSeeder = new RolesSeeder();
24, $rolesData = $roleSeeder->data();
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, * STEP 0: Pastikan semua roles dari RolesSeeder sudah dibuat di tabel roles
4, * ==================================================
5, */
6, foreach ($rolesData as $roleData) {
7, Role::firstOrCreate(
8, ['name' => $roleData['name']],
9, ['guard_name' => 'web']
10, );
11, }
12,
14,
15,
17,
18,
22,
23,
53,
55,
58,
60,
61,
66,
70,
95,
96,
98,
100,
105
];
$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( $user = User::firstOrCreate(
['email' => $roleName . $branchId . '@ag.co.id'], ['email' => $email],
[ [
'name' => ucfirst($roleName) . ' ' . $branchId, 'name' => $name,
'password' => Hash::make('bagbag'), 'password' => Hash::make('bagbag'),
'branch_id' => $branchId, 'branch_id' => $branchId,
'nik' => rand(100000, 999999), 'nik' => rand(100000, 999999),
@@ -89,40 +54,64 @@ class UsersSeeder extends Seeder
] ]
); );
$role = Role::firstOrCreate(['name' => $roleName], ['guard_name' => 'web']); $role = Role::where('name', $roleName)->first();
$user->assignRole($role); 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) { foreach ($branchLuar as $branchId) {
$createUser('legal', $branchId); $createUser('legal', $branchId);
} }
$createUser('legal', $kpno); $createUser('legal', $kpno);
$createUser('spvlegal', $kpno); $createUser('spvlegal', $kpno);
foreach (array_merge($branchLuar, $branchDalam) as $branchId) { foreach (array_merge($branchLuar, $branchDalam) as $branchId) {
$createUser('cabang', $branchId); $createUser('cabang', $branchId);
} }
foreach ($branchLuar as $branchId) { foreach ($branchLuar as $branchId) {
$createUser('admindokumen', $branchId); $createUser('admindokumen', $branchId);
} }
$createUser('admindokumen', $kpno); $createUser('admindokumen', $kpno);
$createUser('adminkredit', $kpno); $createUser('adminkredit', $kpno);
foreach ($branchLuar as $branchId) { foreach ($branchLuar as $branchId) {
$createUser('auditor', $branchId); $createUser('auditor', $branchId);
} }
$createUser('auditor', $kpno); $createUser('auditor', $kpno);
$createUser('soadmindokumen', $kpno); $createUser('soadmindokumen', $kpno);
} }
} }