<?php

namespace Database\Factories;

use Illuminate\Database\Eloquent\Factories\Factory;
use Illuminate\Support\Str;
use App\Models\Project;
use App\Models\ProjectStatus;
use App\Models\ProjectType;

/**
 * @extends \Illuminate\Database\Eloquent\Factories\Factory\u003c\App\Models\Project>
 */
class ProjectFactory extends Factory
{
    protected $model = Project::class;

    public function definition(): array
    {
        return [
            'id' => (string) Str::uuid(),
            'code' => strtoupper(fake()->unique()->bothify('PRJ-####')),
            'title' => fake()->sentence(3),
            'status_id' => ProjectStatus::factory(),
            'type_id' => ProjectType::factory(),
            'approved_estimate' => null,
            'forecasted_effort' => null,
        ];
    }

    public function approved(): static
    {
        return $this->state(fn (array $attributes) => [
            'approved_estimate' => fake()->randomFloat(2, 5000, 50000),
            'forecasted_effort' => [
                'frontend' => fake()->numberBetween(40, 200),
                'backend' => fake()->numberBetween(60, 300),
                'qa' => fake()->numberBetween(20, 100),
            ],
        ]);
    }
}
