165 lines
5.2 KiB
PHP
165 lines
5.2 KiB
PHP
<?php
|
|
|
|
namespace Database\Seeders;
|
|
|
|
use App\Enums\EmploymentStatus;
|
|
use App\Enums\Gender;
|
|
use App\Enums\UserRole;
|
|
use App\Enums\UserStatus;
|
|
use App\Models\Employee;
|
|
use App\Models\Outlet;
|
|
use App\Models\ReferralCode;
|
|
use App\Models\User;
|
|
use Illuminate\Database\Seeder;
|
|
use Illuminate\Support\Facades\Hash;
|
|
|
|
class UserSeeder extends Seeder
|
|
{
|
|
public function run(): void
|
|
{
|
|
$outlet_ids = Outlet::all()->pluck('id')->toArray();
|
|
|
|
// developer
|
|
$developer = User::create([
|
|
'email' => 'project.pangestuyoga@gmail.com',
|
|
'username' => 'pangestu',
|
|
'password' => Hash::make(config('myconfig.password_default')),
|
|
'status' => UserStatus::ACTIVE,
|
|
'email_verified_at' => now(),
|
|
]);
|
|
|
|
Employee::create([
|
|
'user_id' => $developer->id,
|
|
'code' => '0001',
|
|
'full_name' => 'Yoga Pangestu',
|
|
'phone_number' => '082121495806',
|
|
'gender' => Gender::MALE,
|
|
'address' => 'Kp. Bakan Sampeu',
|
|
'birthdate' => '2005-03-13',
|
|
'hire_date' => now(),
|
|
'status' => EmploymentStatus::PERMANENT,
|
|
]);
|
|
|
|
ReferralCode::create([
|
|
'user_id' => $developer->id,
|
|
'code' => generateReferralCode('pangestu', 1),
|
|
]);
|
|
|
|
$developer->assignRole(UserRole::Developer);
|
|
$developer->outlets()->attach($outlet_ids);
|
|
|
|
// owner
|
|
$owner = User::create([
|
|
'email' => 'mulyadi@gmail.com',
|
|
'username' => 'mulyadi',
|
|
'password' => Hash::make(config('myconfig.password_default')),
|
|
'status' => UserStatus::ACTIVE,
|
|
'email_verified_at' => now(),
|
|
]);
|
|
|
|
Employee::create([
|
|
'user_id' => $owner->id,
|
|
'code' => '0002',
|
|
'full_name' => 'Yadi Mulyadi',
|
|
'phone_number' => '082121495806',
|
|
'gender' => Gender::MALE,
|
|
'address' => 'Kp. Bakan Sampeu',
|
|
'birthdate' => '2000-01-01',
|
|
'hire_date' => now(),
|
|
'status' => EmploymentStatus::PERMANENT,
|
|
]);
|
|
|
|
ReferralCode::create([
|
|
'user_id' => $owner->id,
|
|
'code' => generateReferralCode('mulyadi', 2),
|
|
]);
|
|
|
|
$owner->assignRole(UserRole::Owner);
|
|
$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);
|
|
}
|
|
}
|