<?php
namespace Database\Seeders;

use App\Enums\ArticleStatus;
use App\Enums\CampaignStatus;
use App\Enums\OpportunityStatus;
use App\Enums\PartnerLevel;
use App\Enums\VacancyStatus;
use App\Enums\VacancyType;
use App\Models\Campaign;
use App\Models\CampaignCta;
use App\Models\NewsArticle;
use App\Models\Opportunity;
use App\Models\Partner;
use App\Models\Vacancy;
use Illuminate\Database\Seeder;

class EditorialSeeder extends Seeder
{
    public function run(): void
    {
        // Campaigns
        Campaign::firstOrCreate(['name' => 'Semana do Fresco'],[
            'slug' => 'semana-do-fresco',
            'objective' => 'Descontos imperdíveis em frutas, legumes e carnes. Aproveite a Semana do Fresco em todas as lojas Mangolê.',
            'status' => CampaignStatus::Published,
            'starts_at' => now()->subDays(5),
            'ends_at' => now()->addDays(9),
            'priority' => 1,
            'is_pinned' => true,
        ]);

        Campaign::firstOrCreate(['name' => 'Volta às Aulas'],[
            'slug' => 'volta-as-aulas',
            'objective' => 'Material escolar e lanches com preços especiais para o regresso às aulas.',
            'status' => CampaignStatus::Published,
            'starts_at' => now()->subDay(),
            'ends_at' => now()->addMonth(),
            'priority' => 2,
            'is_pinned' => false,
        ]);

        // News
        NewsArticle::firstOrCreate(['slug' => 'mangole-expande-rede-2026'],[
            'title' => 'Mangolê expande rede para mais 3 províncias em 2026',
            'excerpt' => 'A Mangolê anuncia a abertura de novas lojas nas províncias do Huambo, Benguela e Lubango, reforçando a sua presença nacional.',
            'content' => '<p>A Mangolê continua o seu plano de expansão e anuncia a abertura de novas lojas em três províncias angolanas ainda este ano.</p><p>As novas unidades vão gerar mais de 200 postos de trabalho directos e levar produtos de qualidade a milhares de famílias.</p>',
            'category' => 'Notícias',
            'author' => 'Direcção Mangolê',
            'published_at' => now()->subDays(2),
            'status' => ArticleStatus::Published,
            'featured' => true,
            'reading_time' => 3,
        ]);

        NewsArticle::firstOrCreate(['slug' => 'parceria-produtores-locais'],[
            'title' => 'Nova parceria fortalece ligação com produtores locais',
            'excerpt' => 'Acordo com associação de agricultores vai levar produtos frescos angolanos directamente para as prateleiras Mangolê.',
            'content' => '<p>A Mangolê assinou um acordo de parceria com a Associação de Agricultores de Angola para fortalecer a cadeia de fornecimento local.</p><p>Esta iniciativa visa reduzir a importação e apoiar a produção nacional.</p>',
            'category' => 'Comunicados',
            'author' => 'Direcção Mangolê',
            'published_at' => now()->subDays(7),
            'status' => ArticleStatus::Published,
            'featured' => false,
            'reading_time' => 2,
        ]);

        NewsArticle::firstOrCreate(['slug' => 'dicas-economizar-compras'],[
            'title' => '5 dicas para economizar nas compras do mês',
            'excerpt' => 'Pequenas mudanças nos hábitos de compra podem fazer uma grande diferença no orçamento familiar.',
            'content' => '<p>Economizar nas compras do supermercado é uma preocupação de muitas famílias. Aqui ficam 5 dicas práticas.</p><p>1. Faça uma lista antes de ir às compras. 2. Aproveite as campanhas semanais. 3. Compre produtos da época.</p>',
            'category' => 'Artigos',
            'author' => 'Equipa Mangolê',
            'published_at' => now()->subDays(14),
            'status' => ArticleStatus::Published,
            'featured' => false,
            'reading_time' => 4,
        ]);

        // Opportunities
        Opportunity::firstOrCreate(['slug' => 'franquia-mangole'],[
            'title' => 'Torne-se franqueado Mangolê',
            'excerpt' => 'Explore a oportunidade de abrir a sua própria loja Mangolê com o apoio de uma marca consolidada.',
            'content' => '<p>O modelo de franquia Mangolê permite que empreendedores angolanos façam parte da maior rede de supermercados do país.</p><p>Oferecemos suporte completo na montagem, stock e gestão da sua loja.</p>',
            'status' => OpportunityStatus::Published,
            'published_at' => now(),
        ]);

        Opportunity::firstOrCreate(['slug' => 'fornecedor-local'],[
            'title' => 'Seja fornecedor Mangolê',
            'excerpt' => 'Quer ver os seus produtos nas nossas prateleiras? Saiba como se tornar fornecedor da Mangolê.',
            'content' => '<p>A Mangolê está constantemente à procura de novos fornecedores locais que ofereçam produtos de qualidade.</p><p>Os requisitos incluem capacidade de fornecimento consistente e cumprimento de normas de qualidade.</p>',
            'status' => OpportunityStatus::Published,
            'published_at' => now(),
        ]);

        // Partners
        Partner::firstOrCreate(['name' => 'Coca-Cola'],[
            'slug' => 'coca-cola',
            'level' => PartnerLevel::Platinum,
            'segment' => 'Bebidas',
            'description' => 'Parceiro oficial de bebidas desde 2020.',
            'is_active' => true,
            'display_order' => 1,
        ]);

        Partner::firstOrCreate(['name' => 'Angola Breweries'],[
            'slug' => 'angola-breweries',
            'level' => PartnerLevel::Gold,
            'segment' => 'Cervejas e Refrigerantes',
            'description' => 'Parceiro estratégico no segmento de bebidas alcoólicas.',
            'is_active' => true,
            'display_order' => 2,
        ]);

        Partner::firstOrCreate(['name' => 'Nestlé Angola'],[
            'slug' => 'nestle-angola',
            'level' => PartnerLevel::Gold,
            'segment' => 'Alimentação',
            'description' => 'Parceiro de referência em nutrição e alimentação.',
            'is_active' => true,
            'display_order' => 3,
        ]);

        Partner::firstOrCreate(['name' => 'Parmalat'],[
            'slug' => 'parmalat',
            'level' => PartnerLevel::Standard,
            'segment' => 'Lacticínios',
            'description' => 'Fornecedor de lacticínios e derivados.',
            'is_active' => true,
            'display_order' => 4,
        ]);

        // This one already exists in DB with level=premium
        Partner::firstOrCreate(['name' => 'Refriango'],[
            'slug' => 'refriango',
            'level' => PartnerLevel::Premium,
            'segment' => 'Bebidas',
            'description' => 'Parceiro no segmento de refrigerantes nacionais.',
            'is_active' => true,
            'display_order' => 5,
        ]);

        // Vacancies
        Vacancy::firstOrCreate(['title' => 'Gerente de Loja - Luanda'],[
            'slug' => 'gerente-loja-luanda',
            'area' => 'Operações',
            'location' => 'Luanda',
            'type' => VacancyType::FullTime,
            'description' => 'Procuramos um gerente experiente para liderar a equipa de uma das nossas lojas em Luanda.',
            'status' => VacancyStatus::Published,
            'remote' => false,
            'href' => '#',
            'deadline' => now()->addDays(30),
        ]);

        Vacancy::firstOrCreate(['title' => 'Chefe de Secção - Frescos'],[
            'slug' => 'chefe-seccao-frescos',
            'area' => 'Operações',
            'location' => 'Benguela',
            'type' => VacancyType::FullTime,
            'description' => 'Responsável pela gestão da secção de frescos, incluindo frutas, legumes, carnes e peixaria.',
            'status' => VacancyStatus::Published,
            'remote' => false,
            'href' => '#',
            'deadline' => now()->addDays(45),
        ]);

        Vacancy::firstOrCreate(['title' => 'Analista de Marketing Digital'],[
            'slug' => 'analista-marketing-digital',
            'area' => 'Marketing',
            'location' => 'Luanda',
            'type' => VacancyType::FullTime,
            'description' => 'Junte-se à equipa de marketing para gerir campanhas digitais e redes sociais.',
            'status' => VacancyStatus::Published,
            'remote' => true,
            'href' => '#',
            'deadline' => now()->addDays(60),
        ]);

        $this->command->info('Editorial content seeded successfully!');
    }
}
