59 lines
1.8 KiB
PHP
59 lines
1.8 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' => $this->faker->randomElement([
|
|
$this->faker->numerify('0812 #### ###'),
|
|
$this->faker->numerify('0812 #### ####'),
|
|
$this->faker->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' => $this->faker->randomElement(Gender::cases()),
|
|
'status' => $this->faker->randomElement(EmploymentStatus::cases()),
|
|
];
|
|
}
|
|
|
|
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]);
|
|
}
|
|
}
|