<?php

namespace Database\Factories;

use App\Enums\SiteType;
use App\Models\District;
use App\Models\Site;
use Illuminate\Database\Eloquent\Factories\Factory;
use Illuminate\Support\Str;

/**
 * @extends Factory<Site>
 */
class SiteFactory extends Factory
{
    protected $model = Site::class;

    /**
     * @return array<string, mixed>
     */
    public function definition(): array
    {
        return [
            'code' => Str::upper($this->faker->unique()->bothify('SITE-????-###')),
            'name' => $this->faker->randomElement([
                'Torre Miraflores',
                'Nodo San Isidro',
                'Estación Cusco Central',
                'Sitio Alto Piura',
                'Torre Cerro Colorado',
                'Nodo Trujillo Norte',
                'Estación Iquitos Este',
                'Sitio Huancayo Sur',
                'Torre Tacna Frontera',
                'Nodo Chiclayo Centro',
                'Estación Arequipa Yanahuara',
                'Sitio Puno Lago',
                'Torre Chimbote Puerto',
                'Nodo Ica Valles',
                'Estación Huánuco Andes',
                'Sitio Tarapoto Selva',
                'Torre Cajamarca Alta',
                'Nodo Pucallpa Ucayali',
                'Estación Moquegua Sur',
                'Sitio Tumbes Costa',
                'Torre Ayacucho Central',
                'Nodo Huancavelica Rural',
                'Estación Tingo María',
                'Sitio Satipo Selva Central',
                'Torre Barranca Norte',
            ]),
            // Coordenadas dentro del territorio continental de Perú (aprox.)
            'latitude' => $this->faker->latitude(-17.8, -3.6),
            'longitude' => $this->faker->longitude(-80.95, -68.75),
            'maintenance_center' => $this->faker->randomElement([
                'Centro Técnico Lima Norte',
                'Centro Técnico Lima Sur',
                'Centro Técnico Arequipa',
                'Centro Técnico Trujillo',
                'Centro Técnico Cusco',
                'Centro Técnico Piura',
            ]),
            'type' => $this->faker->randomElement(SiteType::cases())->value,
            'status' => true,
            'district_id' => District::factory(),
            'project_id' => null,
        ];
    }
}
