Perubahan utama: - Menambahkan proses pembuatan user untuk role `branchdirector` di semua branch (branchLuar, branchDalam, dan KPNO). - Menambahkan proses pembuatan user untuk role `soadmindokumen` di semua branch (branchLuar, branchDalam, dan KPNO). - Menjamin seluruh role dari RolesSeeder dibuat sebelum user di-generate. - Menyelaraskan pola pembuatan email dan nama user per branch. - Mempertahankan user default branch_id = 1 tanpa suffix branch. - Membersihkan struktur dan alur seeder agar lebih maintainable. Instruksi setelah perubahan: 1. php artisan config:clear 2. php artisan module:migrate-reset Usermanagement 3. php artisan module:migrate Usermanagement 4. php artisan module:seed Adk --class="UserSeeder" 5. php artisan module:seed Usermanagement --class="UsersSeeder" Catatan tambahan: - Urutan approval role kini mengikuti hierarki: 1. soadmindokumen 2. admindokumen 3. legal 4. branchdirector
197 lines
5.1 KiB
PHP
197 lines
5.1 KiB
PHP
<?php
|
|
|
|
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;
|
|
|
|
class UsersSeeder extends Seeder
|
|
{
|
|
/**
|
|
* Run the database seeds.
|
|
*/
|
|
public function run(): void
|
|
{
|
|
$roleSeeder = new RolesSeeder();
|
|
$rolesData = $roleSeeder->data();
|
|
|
|
/**
|
|
* ==================================================
|
|
* STEP 0: Pastikan semua roles dari RolesSeeder sudah dibuat di tabel roles
|
|
* ==================================================
|
|
*/
|
|
foreach ($rolesData as $roleData) {
|
|
Role::firstOrCreate(
|
|
['name' => $roleData['name']],
|
|
['guard_name' => 'web']
|
|
);
|
|
}
|
|
|
|
/**
|
|
* ==================================================
|
|
* 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;
|
|
}
|
|
|
|
$user = User::firstOrCreate(
|
|
['email' => $email],
|
|
[
|
|
'name' => $name,
|
|
'password' => Hash::make('bagbag'),
|
|
'branch_id' => $branchId,
|
|
'nik' => rand(100000, 999999),
|
|
'email_verified_at' => now(),
|
|
]
|
|
);
|
|
|
|
$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;
|
|
|
|
// LEGAL
|
|
foreach ($branchLuar as $branchId) {
|
|
$createUser('legal', $branchId);
|
|
}
|
|
$createUser('legal', $kpno);
|
|
|
|
// SPV LEGAL
|
|
$createUser('spvlegal', $kpno);
|
|
|
|
// USER CABANG
|
|
foreach (array_merge($branchLuar, $branchDalam) as $branchId) {
|
|
$createUser('cabang', $branchId);
|
|
}
|
|
|
|
// ADMIN DOKUMEN
|
|
foreach ($branchLuar as $branchId) {
|
|
$createUser('admindokumen', $branchId);
|
|
}
|
|
$createUser('admindokumen', $kpno);
|
|
|
|
// ADMIN KREDIT
|
|
$createUser('adminkredit', $kpno);
|
|
|
|
// AUDITOR
|
|
foreach ($branchLuar as $branchId) {
|
|
$createUser('auditor', $branchId);
|
|
}
|
|
$createUser('auditor', $kpno);
|
|
|
|
/**
|
|
* ==================================================
|
|
* NEW STEP: BRANCHDIRECTOR UNTUK SEMUA BRANCH
|
|
* ==================================================
|
|
*/
|
|
foreach (array_merge($branchLuar, $branchDalam) as $branchId) {
|
|
$createUser('branchdirector', $branchId);
|
|
}
|
|
$createUser('branchdirector', $kpno);
|
|
|
|
/**
|
|
* ==================================================
|
|
* NEW STEP: SO ADMIN DOKUMEN UNTUK SEMUA BRANCH
|
|
* ==================================================
|
|
*/
|
|
foreach (array_merge($branchLuar, $branchDalam) as $branchId) {
|
|
$createUser('soadmindokumen', $branchId);
|
|
}
|
|
|
|
// tetap buat juga untuk KPNO
|
|
$createUser('soadmindokumen', $kpno);
|
|
}
|
|
}
|