<?php

declare(strict_types=1);

namespace Database\Factories;

use App\Models\Deal;
use App\Models\Project;
use App\Models\Tenant;
use Illuminate\Database\Eloquent\Factories\Factory;
use Illuminate\Support\Carbon;

/**
 * @extends Factory<Deal>
 */
class DealFactory extends Factory
{
    public function definition(): array
    {
        // received_at в текущем месяце — попадает в стартовую партицию deals_2026_05.
        // В тестах при выходе за границы существующих партиций нужно явно
        // указывать ->state(['received_at' => ...]).
        // tenant_id и project_id создаются независимыми factories (deals НЕ имеет
        // FK на tenants/projects из-за партиционирования). Тесты, требующие
        // согласованности, передают tenant_id и project_id явно.
        return [
            'tenant_id' => Tenant::factory(),
            'project_id' => Project::factory(),
            'source_crm_id' => fake()->unique()->numberBetween(100_000_000, 999_999_999),
            'phone' => '7'.fake()->numerify('##########'),
            'phones' => null,
            'status' => 'new',
            'contact_name' => fake()->firstName(),
            'comment' => null,
            'manager_id' => null,
            'escalated_count' => 0,
            'is_test' => false,
            'received_at' => Carbon::now(),
        ];
    }
}
