<?php

namespace Database\Seeders;

use App\Helpers\Helper;
use App\Models\InvestmentOpportunity;
use App\Models\Province;
use App\Models\User;
use Illuminate\Database\Seeder;

class OpportunitySeeder extends Seeder
{
    public function run(): void
    {
        $admin = User::whereHas('roles', fn($q) => $q->where('name', 'admin'))->first();
        $superAdmin = User::whereHas('roles', fn($q) => $q->where('name', 'super_admin'))->first();

        $maputo = Province::where('code', 'MPT')->first();
        $maputoP = Province::where('code', 'MPV')->first();
        $sofala = Province::where('code', 'SFX')->first();
        $tete = Province::where('code', 'TET')->first();
        $nampula = Province::where('code', 'NPL')->first();
        $inhambane = Province::where('code', 'INH')->first();
        $zambezi = Province::where('code', 'ZBZ')->first();
        $cabo = Province::where('code', 'CAB')->first();
        $gaza = Province::where('code', 'GZ')->first();
        $manica = Province::where('code', 'MNS')->first();
        $niassa = Province::where('code', 'NAS')->first();

        $opportunities = [
            [
                'title_pt' => 'Construção da Barragem de Mutala',
                'title_en' => 'Mutala Dam Construction',
                'description_pt' => 'Projecto de construção de barragem de média dimensão para irrigação agrícola e produção de energia hidroeléctrica na região norte de Tete. O projecto prevê a criação de um reservatório com capacidade de 120 milhões de m³ e uma central de 45MW.',
                'sector' => 'energia',
                'status' => 'pronto',
                'is_featured' => true,
                'min_investment' => 350000000,
                'max_investment' => 500000000,
                'expected_return_rate' => 12.5,
                'return_period_years' => 15,
                'total_jobs' => 1200,
                'province_id' => $tete?->id,
                'tags' => ['barragem', 'água', 'norte', 'hidroeléctrica'],
                'created_by' => $admin?->id ?? $superAdmin?->id,
                'published_at' => now()->subDays(30),
            ],
            [
                'title_pt' => 'Parque Industrial de Beluluane — Fase III',
                'title_en' => 'Beluluane Industrial Park — Phase III',
                'description_pt' => 'Expansão do Parque Industrial de Beluluane com novos lotes para indústrias de transformação, logística e serviços. Infra-estrutura completa incluindo estradas, electricidade, água e telecomunicações.',
                'sector' => 'industria',
                'status' => 'pronto',
                'is_featured' => true,
                'is_special_economic_zone' => true,
                'min_investment' => 5000000,
                'max_investment' => 50000000,
                'expected_return_rate' => 18.0,
                'return_period_years' => 8,
                'total_jobs' => 3000,
                'province_id' => $maputoP?->id,
                'tags' => ['parque industrial', 'ZEE', 'logística', 'sul'],
                'created_by' => $admin?->id ?? $superAdmin?->id,
                'published_at' => now()->subDays(45),
            ],
            [
                'title_pt' => 'Resort de Luxo — Arquipélago do Bazaruto',
                'title_en' => 'Luxury Resort — Bazaruto Archipelago',
                'description_pt' => 'Desenvolvimento de resort de luxo de 5 estrelas com 120 suites no Arquipélago do Bazaruto. Concepção eco-sustentável com energia solar, tratamento de água e conservação ambiental integrada.',
                'sector' => 'turismo',
                'status' => 'pronto',
                'is_featured' => true,
                'min_investment' => 15000000,
                'max_investment' => 25000000,
                'expected_return_rate' => 22.0,
                'return_period_years' => 7,
                'total_jobs' => 450,
                'province_id' => $inhambane?->id,
                'tags' => ['turismo', 'luxo', 'praia', 'eco', 'Bazaruto'],
                'created_by' => $admin?->id ?? $superAdmin?->id,
                'published_at' => now()->subDays(20),
            ],
            [
                'title_pt' => 'Parque Solar de Nacala — 200MW',
                'title_en' => 'Nacala Solar Park — 200MW',
                'description_pt' => 'Instalação de central fotovoltaica de 200MW em Nacala para fornecimento de energia à rede nacional e à ZEE de Nacala-a-Velha. Projecto âncora no quadro do Plano de Energias Renováveis de Moçambique.',
                'sector' => 'energia',
                'status' => 'pronto',
                'is_featured' => false,
                'is_special_economic_zone' => true,
                'min_investment' => 180000000,
                'max_investment' => 220000000,
                'expected_return_rate' => 14.0,
                'return_period_years' => 20,
                'total_jobs' => 800,
                'province_id' => $nampula?->id,
                'tags' => ['solar', 'energia renovável', 'ZEE Nacala', '200MW'],
                'created_by' => $admin?->id ?? $superAdmin?->id,
                'published_at' => now()->subDays(15),
            ],
            [
                'title_pt' => 'Complexo Agroindustrial da Zambézia',
                'title_en' => 'Zambézia Agro-Industrial Complex',
                'description_pt' => 'Desenvolvimento de complexo agroindustrial integrado para processamento de chá, tabaco e macadâmia na Zambézia. Inclui unidades de processamento, armazenagem e exportação.',
                'sector' => 'agricultura',
                'status' => 'pronto',
                'is_featured' => false,
                'min_investment' => 8000000,
                'max_investment' => 15000000,
                'expected_return_rate' => 16.5,
                'return_period_years' => 6,
                'total_jobs' => 2500,
                'province_id' => $zambezi?->id,
                'tags' => ['agricultura', 'chá', 'macadâmia', 'processamento'],
                'created_by' => $admin?->id ?? $superAdmin?->id,
                'published_at' => now()->subDays(25),
            ],
            [
                'title_pt' => 'Hospital Privado de Referência — Maputo',
                'title_en' => 'Private Reference Hospital — Maputo',
                'description_pt' => 'Construção e operação de hospital privado de referência com 200 camas, centro de diagnóstico avançado e unidade de oncologia em Maputo.',
                'sector' => 'saude',
                'status' => 'pronto',
                'is_featured' => false,
                'min_investment' => 20000000,
                'max_investment' => 30000000,
                'expected_return_rate' => 19.0,
                'return_period_years' => 10,
                'total_jobs' => 600,
                'province_id' => $maputo?->id,
                'tags' => ['saúde', 'hospital', 'oncologia', 'Maputo'],
                'created_by' => $admin?->id ?? $superAdmin?->id,
                'published_at' => now()->subDays(10),
            ],
            [
                'title_pt' => 'Porto Seco de Moatize',
                'title_en' => 'Moatize Dry Port',
                'description_pt' => 'Desenvolvimento de porto seco e plataforma logística em Moatize para escoamento da produção mineira e agrícola da região centro-norte.',
                'sector' => 'infraestrutura',
                'status' => 'pronto',
                'is_featured' => false,
                'min_investment' => 25000000,
                'max_investment' => 40000000,
                'expected_return_rate' => 15.0,
                'return_period_years' => 12,
                'total_jobs' => 1800,
                'province_id' => $tete?->id,
                'tags' => ['logística', 'porto seco', 'mineração', 'Moatize'],
                'created_by' => $admin?->id ?? $superAdmin?->id,
                'published_at' => now()->subDays(35),
            ],
            [
                'title_pt' => 'Pescas Industriais — Baía de Pemba',
                'title_en' => 'Industrial Fishing — Pemba Bay',
                'description_pt' => 'Desenvolvimento de frota pesqueira industrial e unidade de processamento de peixe e marisco na Baía de Pemba. Inclui câmaras frigoríficas e plataforma de exportação.',
                'sector' => 'pescas',
                'status' => 'pronto',
                'is_featured' => false,
                'min_investment' => 5000000,
                'max_investment' => 10000000,
                'expected_return_rate' => 20.0,
                'return_period_years' => 5,
                'total_jobs' => 900,
                'province_id' => $cabo?->id,
                'tags' => ['pescas', 'processamento', 'exportação', 'Pemba'],
                'created_by' => $admin?->id ?? $superAdmin?->id,
                'published_at' => now()->subDays(18),
            ],
            [
                'title_pt' => 'Campus Tecnológico de Maputo',
                'title_en' => 'Maputo Technology Campus',
                'description_pt' => 'Criação de campus tecnológico para start-ups, empresas de software e centros de dados em Maputo. Inclui incubadora, aceleradoras e espaços de co-working.',
                'sector' => 'tecnologia',
                'status' => 'pronto',
                'is_featured' => true,
                'min_investment' => 3000000,
                'max_investment' => 8000000,
                'expected_return_rate' => 25.0,
                'return_period_years' => 5,
                'total_jobs' => 1200,
                'province_id' => $maputo?->id,
                'tags' => ['tecnologia', 'start-ups', 'inovação', 'TIC'],
                'created_by' => $admin?->id ?? $superAdmin?->id,
                'published_at' => now()->subDays(8),
            ],
            [
                'title_pt' => 'Extracção de Pedras Preciosas — Manica',
                'title_en' => 'Precious Stones Mining — Manica',
                'description_pt' => 'Concessão para extracção e comercialização de rubi, esmeralda e outros minerais preciosos em Manica, com obrigação de transformação local de 30% da produção.',
                'sector' => 'mineracao',
                'status' => 'pronto',
                'is_featured' => false,
                'min_investment' => 10000000,
                'max_investment' => 30000000,
                'expected_return_rate' => 28.0,
                'return_period_years' => 15,
                'total_jobs' => 750,
                'province_id' => $manica?->id,
                'tags' => ['mineração', 'rubis', 'esmeraldas', 'Manica'],
                'created_by' => $admin?->id ?? $superAdmin?->id,
                'published_at' => now()->subDays(40),
            ],
            [
                'title_pt' => 'Centro Comercial Regional — Nampula',
                'title_en' => 'Regional Shopping Centre — Nampula',
                'description_pt' => 'Construção e gestão de centro comercial de referência em Nampula com 80 lojas, supermercado, cinema, restauração e serviços.',
                'sector' => 'comercio',
                'status' => 'pronto',
                'is_featured' => false,
                'min_investment' => 12000000,
                'max_investment' => 18000000,
                'expected_return_rate' => 17.0,
                'return_period_years' => 8,
                'total_jobs' => 500,
                'province_id' => $nampula?->id,
                'tags' => ['comércio', 'retalho', 'centro comercial', 'norte'],
                'created_by' => $admin?->id ?? $superAdmin?->id,
                'published_at' => now()->subDays(22),
            ],
            [
                'title_pt' => 'Universidade Privada do Norte — Nampula',
                'title_en' => 'Northern Private University — Nampula',
                'description_pt' => 'Criação de universidade privada com foco em engenharia, saúde e gestão para as províncias do norte. Campus para 5000 estudantes com residências e laboratórios.',
                'sector' => 'educacao',
                'status' => 'pronto',
                'is_featured' => false,
                'min_investment' => 15000000,
                'max_investment' => 25000000,
                'expected_return_rate' => 14.0,
                'return_period_years' => 12,
                'total_jobs' => 400,
                'province_id' => $nampula?->id,
                'tags' => ['educação', 'universidade', 'norte', 'ensino superior'],
                'created_by' => $admin?->id ?? $superAdmin?->id,
                'published_at' => now()->subDays(12),
            ],
        ];

        foreach ($opportunities as $data) {
            if (!isset($data['created_by'])) continue;
            $data['code'] = Helper::generateCode(10, 'investment_opportunities');
            InvestmentOpportunity::create($data);
        }
    }
}
