parfum/database/factories/EmployeeFactory.php
Yoga Pangestu c4b90acf53 feat: membuat factory seluruh model
- menyesuaikan model jika ada yang salah seperti kurangnya trait SoftDeletes, casting yang salah, relasi yang kurang dan lainnya
- memperbaiki enum di migrasi
2025-12-09 08:25:07 +07:00

66 lines
1.9 KiB
PHP

<?php
namespace Database\Factories;
use App\Enums\EmploymentStatus;
use App\Enums\Gender;
use App\Models\Employee;
use Illuminate\Database\Eloquent\Factories\Factory;
class EmployeeFactory extends Factory
{
protected $model = Employee::class;
public function definition(): array
{
return [
'full_name' => $this->faker->name(),
'code' => Employee::generateEmployeeCode(),
'phone_number' => fake()->randomElement([
fake()->numerify('0812 #### ###'),
fake()->numerify('0812 #### ####'),
fake()->numerify('0812 #### #####'),
]),
'base_salary' => $this->faker->randomNumber(6),
'address' => $this->faker->address(),
'birthdate' => $this->faker->dateTimeBetween('-60 years', '-18 years')->format('Y-m-d'),
'hire_date' => $this->faker->date(),
'resign_date' => $this->faker->optional()->date(),
'gender' => fake()->randomElement([
Gender::MALE,
Gender::FEMALE,
]),
'status' => fake()->randomElement([
EmploymentStatus::PERMANENT,
EmploymentStatus::CONTRACT,
EmploymentStatus::INTERN,
]),
];
}
public function male(): Factory
{
return $this->state(fn () => ['gender' => Gender::MALE]);
}
public function female(): Factory
{
return $this->state(fn () => ['gender' => Gender::FEMALE]);
}
public function permanent(): Factory
{
return $this->state(fn () => ['status' => EmploymentStatus::PERMANENT]);
}
public function contract(): Factory
{
return $this->state(fn () => ['status' => EmploymentStatus::CONTRACT]);
}
public function intern(): Factory
{
return $this->state(fn () => ['status' => EmploymentStatus::INTERN]);
}
}