<?php

namespace Database\Factories;

use App\Models\Worker;

use Illuminate\Database\Eloquent\Factories\Factory;
use Illuminate\Support\Facades\Hash;

use Carbon\Carbon;

/**
 * @extends \Illuminate\Database\Eloquent\Factories\Factory<\App\Models\Worker>
 */
class WorkerFactory extends Factory
{
    /**
     * The name of the factory's corresponding model 
     * 
     * @var string 
     */
    protected $model    =   Worker::class; 

    /**
     * Define the model's default state.
     *
     * @return array<string, mixed>
     */
    public function definition(): array
    {
        return [
            'worker_id'               => $this->faker->bothify("####-######-####"),
            'first_name'              => $this->faker->firstName(),
            'last_name'               => $this->faker->lastName,
            'email_address'           => $this->faker->email(),
            'password'                => Hash::make('123456789'),
            'is_active'               => true, 
            'phone_num'               => $this->faker->phoneNumber(),
            'enable_2fa'              => false,
            'street_address'          => $this->faker->streetAddress(), 
            'city'                    => $this->faker->city(), 
            'state'                   => $this->faker->city(), 
            'zipcode'                 => $this->faker->numberBetween(10000, 99999),
            'rate'                    => $this->faker->numberBetween(10, 100),
            'flat_rate'               => $this->faker->numberBetween(10, 100),
            'overhead_charge'         => $this->faker->numberBetween(10, 100),
            'overhead_type'           => $this->faker->randomElement(['real', 'percent']),
            'date_hired'              => Carbon::now(), 
            'is_account_disabled'     => false,
            'availability_start_date' => Carbon::now(),
            'availability_end_date'   => Carbon::now()->addMonths(8),
            'distance'                => null,
        ];
    }
}
