refactor: update DatabaseSeeder to conditionally load seeders based on environment (local vs production)
This commit is contained in:
parent
4afba34a57
commit
ad9ee3a99b
@ -11,34 +11,22 @@ class DatabaseSeeder extends Seeder
|
||||
|
||||
public function run(): void
|
||||
{
|
||||
$this->call([
|
||||
RolePermissionSeeder::class,
|
||||
UserSeeder::class,
|
||||
SystemConfigurationSeeder::class,
|
||||
// CategorySeeder::class,
|
||||
// ProductSeeder::class,
|
||||
// ProductVariantSeeder::class,
|
||||
// RawMaterialSeeder::class,
|
||||
// RawMaterialPriceSeeder::class,
|
||||
// SupplierSeeder::class,
|
||||
// CustomerSeeder::class,
|
||||
CashAccountSeeder::class,
|
||||
// CashTransactionSeeder::class,
|
||||
// ExpenseSeeder::class,
|
||||
// PayrollPeriodSeeder::class,
|
||||
// PayrollSeeder::class,
|
||||
// PayrollAdjustmentSeeder::class,
|
||||
// AttendanceSeeder::class,
|
||||
// LeaveRequestSeeder::class,
|
||||
// EmployeeAdvanceSeeder::class,
|
||||
// RejectionSeeder::class,
|
||||
// PurchaseSeeder::class,
|
||||
// PurchaseItemSeeder::class,
|
||||
// OrderSeeder::class,
|
||||
// OrderItemSeeder::class,
|
||||
// CuttingSeeder::class,
|
||||
// CuttingMaterialSeeder::class,
|
||||
// CuttingResultSeeder::class,
|
||||
]);
|
||||
if (app()->isLocal()) {
|
||||
$this->call([
|
||||
RolePermissionSeeder::class,
|
||||
UserSeeder::class,
|
||||
EmployeeSeeder::class,
|
||||
SystemConfigurationSeeder::class,
|
||||
CategorySeeder::class,
|
||||
]);
|
||||
}
|
||||
|
||||
if (app()->isProduction()) {
|
||||
$this->call([
|
||||
RolePermissionSeeder::class,
|
||||
UserSeeder::class,
|
||||
SystemConfigurationSeeder::class,
|
||||
]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
87
database/seeders/EmployeeSeeder.php
Normal file
87
database/seeders/EmployeeSeeder.php
Normal file
@ -0,0 +1,87 @@
|
||||
<?php
|
||||
|
||||
namespace Database\Seeders;
|
||||
|
||||
use App\Enums\EmploymentStatus;
|
||||
use App\Enums\Gender;
|
||||
use App\Enums\Role;
|
||||
use App\Models\Employee;
|
||||
use App\Models\User;
|
||||
use App\Models\UserProfile;
|
||||
use Illuminate\Database\Seeder;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
use Illuminate\Support\Facades\Hash;
|
||||
|
||||
class EmployeeSeeder extends Seeder
|
||||
{
|
||||
public function run(): void
|
||||
{
|
||||
DB::transaction(function () {
|
||||
$employees = [
|
||||
Role::ADMIN_TOKO->value => [
|
||||
'username' => 'admintoko',
|
||||
'email' => 'admintoko@gmail.com',
|
||||
'full_name' => 'Admin Toko',
|
||||
],
|
||||
Role::ADMIN_BAHAN_BAKU->value => [
|
||||
'username' => 'adminbahanbaku',
|
||||
'email' => 'adminbahanbaku@gmail.com',
|
||||
'full_name' => 'Admin Bahan Baku',
|
||||
],
|
||||
Role::DIREKTUR->value => [
|
||||
'username' => 'direktur',
|
||||
'email' => 'direktur@gmail.com',
|
||||
'full_name' => 'Direktur',
|
||||
],
|
||||
Role::MARKETING->value => [
|
||||
'username' => 'marketing',
|
||||
'email' => 'marketing@gmail.com',
|
||||
'full_name' => 'Marketing',
|
||||
],
|
||||
Role::CASHIER->value => [
|
||||
'username' => 'cashier',
|
||||
'email' => 'cashier@gmail.com',
|
||||
'full_name' => 'Cashier',
|
||||
],
|
||||
Role::NON_OPERATOR->value => [
|
||||
'username' => 'nonoperator',
|
||||
'email' => 'nonoperator@gmail.com',
|
||||
'full_name' => 'Non Operator',
|
||||
],
|
||||
];
|
||||
|
||||
foreach ($employees as $roleName => $data) {
|
||||
$user = User::firstOrCreate(
|
||||
['email' => $data['email']],
|
||||
[
|
||||
'username' => $data['username'],
|
||||
'password' => Hash::make(config('auth.password_default')),
|
||||
'is_active' => true,
|
||||
]
|
||||
);
|
||||
|
||||
UserProfile::firstOrCreate(
|
||||
['user_id' => $user->id],
|
||||
[
|
||||
'full_name' => $data['full_name'],
|
||||
'phone_number' => '08'.fake()->numerify('##########'),
|
||||
'gender' => fake()->randomElement(array_column(Gender::cases(), 'value')),
|
||||
'birth_date' => '1995-01-01',
|
||||
'address' => 'Jl. Jenderal Sudirman No. 123',
|
||||
]
|
||||
);
|
||||
|
||||
Employee::firstOrCreate(
|
||||
['user_id' => $user->id],
|
||||
[
|
||||
'join_date' => now()->format('Y-m-d'),
|
||||
'employment_status' => EmploymentStatus::FULL_TIME->value,
|
||||
'base_salary' => 3000000,
|
||||
]
|
||||
);
|
||||
|
||||
$user->syncRoles([$roleName]);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user