feat: Enhance UserSeeder to add roles and create users for leader, admin per outlet, and partner with associated referral codes.

This commit is contained in:
Yoga Pangestu 2026-04-24 13:07:41 +07:00
parent cd3dcce052
commit 0bdbd080ab

View File

@ -76,5 +76,89 @@ public function run(): void
$owner->assignRole(UserRole::Owner); $owner->assignRole(UserRole::Owner);
$owner->outlets()->attach($outlet_ids); $owner->outlets()->attach($outlet_ids);
// leader
$leader = User::create([
'email' => 'leader@gmail.com',
'username' => 'leader',
'password' => Hash::make(config('myconfig.password_default')),
'status' => UserStatus::ACTIVE,
'email_verified_at' => now(),
]);
Employee::create([
'user_id' => $leader->id,
'code' => '0003',
'full_name' => 'Leader User',
'phone_number' => '082121495801',
'gender' => Gender::MALE,
'address' => 'Leader Address',
'birthdate' => '2000-01-01',
'hire_date' => now(),
'status' => EmploymentStatus::PERMANENT,
]);
ReferralCode::create([
'user_id' => $leader->id,
'code' => generateReferralCode('leader', 3),
]);
$leader->assignRole(UserRole::Leader);
$leader->outlets()->attach($outlet_ids);
// admin per outlet
$outlets = Outlet::all();
$userCounter = 4;
foreach ($outlets as $outlet) {
$adminUsername = 'admin_'.preg_replace('/[^a-zA-Z0-9]/', '', strtolower($outlet->name));
$adminEmail = $adminUsername.'@gmail.com';
$admin = User::create([
'email' => $adminEmail,
'username' => $adminUsername,
'password' => Hash::make(config('myconfig.password_default')),
'status' => UserStatus::ACTIVE,
'email_verified_at' => now(),
]);
Employee::create([
'user_id' => $admin->id,
'code' => str_pad($userCounter, 4, '0', STR_PAD_LEFT),
'full_name' => 'Admin '.$outlet->name,
'phone_number' => '0821214958'.str_pad($userCounter, 2, '0', STR_PAD_LEFT),
'gender' => Gender::MALE,
'address' => 'Admin Address',
'birthdate' => '2000-01-01',
'hire_date' => now(),
'status' => EmploymentStatus::PERMANENT,
]);
ReferralCode::create([
'user_id' => $admin->id,
'code' => generateReferralCode($adminUsername, $userCounter),
]);
$admin->assignRole(UserRole::Admin);
$admin->outlets()->attach($outlet->id);
$userCounter++;
}
// partner
$partner = User::create([
'email' => 'partner@gmail.com',
'username' => 'partner',
'password' => Hash::make(config('myconfig.password_default')),
'status' => UserStatus::ACTIVE,
'email_verified_at' => now(),
]);
ReferralCode::create([
'user_id' => $partner->id,
'code' => generateReferralCode('partner', $userCounter),
]);
$partner->assignRole(UserRole::Partner);
$partner->outlets()->attach($outlet_ids);
} }
} }