import { pool } from '../db.js';
import crypto from 'crypto';

/**
 * 🏢 Empresas Fictícias Icônicas
 * 
 * - Stark Industries (Marvel)
 * - Los Pollos Hermanos (Breaking Bad)
 * - Springfield Nuclear Power Plant (Simpsons)
 */

// ============================================================================
// 🦾 STARK INDUSTRIES - Marvel Cinematic Universe
// ============================================================================
const starkJobs = [
    {
        title: 'Arquiteto de Cloud para J.A.R.V.I.S.',
        skills: ['AWS', 'Kubernetes', 'AI Infrastructure', 'Zero Latency'],
        salaryRange: [35000, 60000],
        desc: 'Gerenciar a infraestrutura que roda a J.A.R.V.I.S. e F.R.I.D.A.Y. Latência máxima tolerada: 0.001ms. Se a IA não responder "Sim, senhor" instantaneamente, você será substituído por um robô.',
        workMode: 'hybrid'
    },
    {
        title: 'DevOps Engineer do Arc Reactor',
        skills: ['Docker', 'Terraform', 'Nuclear Fusion', 'CI/CD'],
        salaryRange: [30000, 50000],
        desc: 'Manter uptime de 99.9999% no Arc Reactor. Downtime = Tony Stark irritado = você procurando novo emprego. Bônus: café infinito e acesso ao laboratório.',
        workMode: 'onsite'
    },
    {
        title: 'Engenheiro de Machine Learning para Iron Man Suits',
        skills: ['PyTorch', 'Computer Vision', 'Real-time Processing', 'Jarvis SDK'],
        salaryRange: [40000, 70000],
        desc: 'Treinar modelos de IA para as armaduras Mark 1-85. Dataset inclui 847 batalhas e 12.000 horas de voo. Modelo atual: accuracy 99.7%, meta: 100% (Tony é perfeccionista).',
        workMode: 'onsite'
    },
    {
        title: 'Security Engineer Anti-Hydra',
        skills: ['Penetration Testing', 'Cryptography', 'S.H.I.E.L.D. Protocols'],
        salaryRange: [35000, 55000],
        desc: 'Proteger sistemas contra ataques da Hydra, AIM e hackers russos. Última brecha resultou em Ultron. Não queremos outro Ultron.',
        workMode: 'remote'
    },
    {
        title: 'Full Stack Developer do Stark Phone',
        skills: ['React Native', 'Holographic UI', 'Biometrics'],
        salaryRange: [28000, 45000],
        desc: 'Desenvolver apps para o smartphone mais avançado do mundo. Features incluem: projeção holográfica, IA integrada e autodestruição remota.',
        workMode: 'hybrid'
    },
    {
        title: 'Data Engineer do Projeto Insight',
        skills: ['Spark', 'Real-time Analytics', 'Predictive Modeling'],
        salaryRange: [32000, 52000],
        desc: 'Processar dados de satélites e drones em tempo real. Nota: Projeto original foi cancelado por razões éticas. Este é o Insight 2.0 (ético, prometemos).',
        workMode: 'onsite'
    },
    {
        title: 'SRE do Complexo dos Vingadores',
        skills: ['Kubernetes', 'Prometheus', 'Chaos Engineering'],
        salaryRange: [33000, 53000],
        desc: 'Garantir que sistemas críticos sobrevivam a ataques alienígenas. SLA: sistema deve funcionar durante invasões Chitauri. PagerDuty: configurado para alertas intergaláticos.',
        workMode: 'onsite'
    },
    {
        title: 'Nanotechnology Software Engineer',
        skills: ['Embedded Systems', 'Nano-robotics', 'Real-time OS'],
        salaryRange: [45000, 75000],
        desc: 'Programar nanobots da armadura Mark 50+. Cada nanobot executa código. São 12 milhões de processos paralelos. Boa sorte debugando.',
        workMode: 'onsite'
    }
];

// ============================================================================
// 🐔 LOS POLLOS HERMANOS - Breaking Bad
// ============================================================================
const losPollosJobs = [
    {
        title: 'Engenheiro de Redes Air-Gapped',
        skills: ['Cisco', 'VPN Layer 2', 'Criptografia Ponta-a-Ponta', 'Paranoia'],
        salaryRange: [25000, 45000],
        desc: 'Configurar e manter redes completamente isoladas da internet para os "laboratórios de temperos". Se um pacote de dados vazar, Gus Fring terá uma conversa muito calma com você. Muito. Calma.',
        workMode: 'onsite'
    },
    {
        title: 'Desenvolvedor Fullstack de Logística Fantasma',
        skills: ['NestJS', 'PostgreSQL', 'Geofencing', 'Discrição'],
        salaryRange: [22000, 40000],
        desc: 'Manter sistema de rastreamento de frotas de "temperos". Camada oculta mostra carga real apenas para usuários nível 5. Logs se auto-destroem em 24h. Código limpo, sem comentários sarcásticos.',
        workMode: 'hybrid'
    },
    {
        title: 'Pentester Especialista em Segurança Ofensiva',
        skills: ['Ethical Hacking', 'Câmeras IP', 'Interceptação de Rádio', 'Silêncio'],
        salaryRange: [28000, 50000],
        desc: 'Simular ataques da DEA e cartéis rivais aos nossos sistemas. Zero vulnerabilidades toleradas. Um vazamento aqui não resulta em multa LGPD, resulta em "demissão definitiva".',
        workMode: 'onsite'
    },
    {
        title: 'DBA Arquiteto de Dados com Expertise em Purge',
        skills: ['PostgreSQL', 'PostGIS', 'Data Scrubbing', 'Amnésia Seletiva'],
        salaryRange: [24000, 42000],
        desc: 'Gerenciar banco de dados de fornecedores e rotas de distribuição. Implementar rotinas rigorosas de limpeza. Dados devem ser consistentes mas fáceis de apagar em caso de visita inesperada.',
        workMode: 'onsite'
    }
];

// ============================================================================
// ☢️ SPRINGFIELD NUCLEAR POWER PLANT - The Simpsons
// ============================================================================
const springfieldJobs = [
    {
        title: 'Administrador de Sistemas Legados COBOL/Mainframe',
        skills: ['COBOL', 'Fortran', 'Monitores CRT', 'Paciência Infinita'],
        salaryRange: [8000, 15000],
        desc: 'Manter sistemas que controlam o núcleo do reator desde 1970. Hardware não é atualizado há 50 anos. Orçamento para modernização: $0. O Sr. Burns disse "Excelente" e saiu.',
        workMode: 'onsite'
    },
    {
        title: 'Desenvolvedor Fullstack Low Cost (PHP 4 / jQuery)',
        skills: ['PHP 4', 'jQuery 1.x', 'MySQL 3', 'Gambiarra'],
        salaryRange: [6000, 12000],
        desc: 'Criar sistema de vigilância de funcionários. Requisito: consertar o que Homer quebra diariamente. Pagamento: 70% salário + 30% tickets de cafeteria + chaveiro radioativo.',
        workMode: 'onsite'
    },
    {
        title: 'Especialista em Cyber-Segurança e Vigilância',
        skills: ['Firewalls Antigos', 'Câmeras Analógicas', 'Cães de Guarda', 'Release the Hounds'],
        salaryRange: [10000, 18000],
        desc: 'Impedir funcionários de acessar sites de emprego. Garantir que câmeras do Sr. Burns nunca desliguem. Firewall atual: 486 guardado por cães. Hardware ocasionalmente brilha no escuro.',
        workMode: 'onsite'
    },
    {
        title: 'Engenheiro de Dados e Analytics de Produtividade',
        skills: ['Excel 97', 'Papel Contínuo', 'Impressora Matricial', 'Negatividade'],
        salaryRange: [7000, 13000],
        desc: 'Gerar relatórios provando que Setor 7-G (Homer) é o menos produtivo da história da energia nuclear. KPIs: acidentes/mês, donuts consumidos, cochilos no painel de controle.',
        workMode: 'onsite'
    }
];

// ============================================================================
// Seeder Functions
// ============================================================================

export async function seedStarkIndustries() {
    console.log('🦾 Seeding Stark Industries (Marvel)...');

    try {
        const countryResult = await pool.query("SELECT id FROM countries WHERE iso2 = 'US'");
        const usaId = countryResult.rows[0]?.id || null;

        // Create Company
        await pool.query(`
            INSERT INTO companies (name, slug, type, document, address, country_id, phone, email, website, description, verified, active)
            VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12)
            ON CONFLICT (slug) DO UPDATE SET name = EXCLUDED.name, description = EXCLUDED.description
        `, [
            'Stark Industries',
            'Stark Industries',
            'company',
            '77.777.777/0001-77',
            'Stark Tower, 200 Park Avenue, Manhattan, New York, NY 10166',
            usaId,
            '+1-212-STARK-01',
            'careers@starkindustries.com',
            'https://starkindustries.com',
            JSON.stringify({
                tagline: 'Changing the World for a Better Tomorrow',
                founded: '1939 (Howard Stark)',
                ceo: 'Pepper Potts (ex-CEO: Tony Stark)',
                products: ['Arc Reactor', 'Iron Man Suits', 'Clean Energy', 'AI Systems'],
                locations: ['Manhattan (HQ)', 'Malibu (R&D)', 'Upstate NY (Avengers Compound)'],
                perks: ['Trabalhar com Vingadores', 'Acesso à J.A.R.V.I.S.', 'Café com Happy Hogan']
            }),
            true,
            true
        ]);

        // Get company ID (SERIAL) from companies table
        const companyRes = await pool.query("SELECT id FROM companies WHERE slug = 'Stark Industries'");
        const companyId = companyRes.rows[0]?.id;

        // Get seed user
        const seedUserRes = await pool.query("SELECT id FROM users LIMIT 1");
        const seedUserId = seedUserRes.rows[0]?.id || 1;

        // Create jobs
        const benefits = ['Seguro Stark Premium', 'Acesso ao Laboratório', 'Café com J.A.R.V.I.S.', 'Voo de teste nas armaduras (após 1 ano)'];

        for (let i = 0; i < starkJobs.length; i++) {
            const job = starkJobs[i];

            await pool.query(`
                INSERT INTO jobs ( company_id, created_by, title, description, 
                    salary_min, salary_max, salary_type, employment_type, working_hours,
                    location, requirements, benefits, visa_support, language_level, status, work_mode)
                VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12, $13, $14, $15, $16)
            `, [
                companyId,
                seedUserId,
                job.title,
                `🦾 STARK INDUSTRIES está contratando!\n\n${job.desc}\n\nRequisitos:\n- ${job.skills.join('\n- ')}\n- Capacidade de trabalhar sob pressão (literalmente, durante batalhas)\n- Não se intimidar com super-heróis\n\n"I am Iron Man." - Tony Stark`,
                job.salaryRange[0],
                job.salaryRange[1],
                'monthly',
                'full-time',
                job.workMode === 'remote' ? 'Flexible' : '9:00-18:00 (ou durante emergências globais)',
                job.workMode === 'remote' ? 'Remote (Terra ou Órbita)' : 'Stark Tower, Manhattan, NY',
                JSON.stringify(job.skills),
                JSON.stringify(benefits),
                true,
                'fluent',
                'open',
                job.workMode
            ]);
        }

        console.log(`   ✓ Stark Industries: ${starkJobs.length} vagas criadas`);
    } catch (error) {
        console.error('   ❌ Erro Stark Industries:', error.message);
    }
}

export async function seedLosPollosHermanos() {
    console.log('🐔 Seeding Los Pollos Hermanos (Breaking Bad)...');

    try {
        const countryResult = await pool.query("SELECT id FROM countries WHERE iso2 = 'US'");
        const usaId = countryResult.rows[0]?.id || null;

        // Create Company
        await pool.query(`
            INSERT INTO companies (name, slug, type, document, address, country_id, phone, email, website, description, verified, active)
            VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12)
            ON CONFLICT (slug) DO UPDATE SET name = EXCLUDED.name, description = EXCLUDED.description
        `, [
            'Los Pollos Hermanos',
            'Los Pollos Hermanos',
            'company',
            '66.666.666/0001-66',
            '308 Negra Arroyo Lane, Albuquerque, NM 87104',
            usaId,
            '+1-505-POLLOS',
            'careers@lospollos.com',
            'https://lospollos.com',
            JSON.stringify({
                tagline: 'Taste the Family!',
                founded: '1989',
                ceo: 'Gustavo Fring',
                products: ['Frango Frito', 'Curly Fries', 'Especiarias Especiais'],
                culture: 'Ambiente familiar, gestão rigorosa, zero tolerância a erros',
                note: 'Todas as vagas requerem background check e assinatura de NDA de 847 páginas'
            }),
            true,
            true
        ]);

        // Create company (let DB auto-generate id)
        await pool.query(`
            INSERT INTO companies (name, slug, document)
            VALUES ($1, $2, $3)
            ON CONFLICT (slug) DO NOTHING
        `, ['Los Pollos Hermanos', 'los-pollos-hermanos', '66.666.666/0001-66']);

        // Get company ID (SERIAL)
        const companyRes = await pool.query("SELECT id FROM companies WHERE slug = 'los-pollos-hermanos'");
        const companyId = companyRes.rows[0]?.id;

        const seedUserRes = await pool.query("SELECT id FROM users LIMIT 1");
        const seedUserId = seedUserRes.rows[0]?.id || 1;

        const benefits = ['Frango Grátis (apenas o legal)', 'Plano de Saúde Premium', 'Seguro de Vida Reforçado', 'Carro da Empresa (GPS desativado)'];

        for (let i = 0; i < losPollosJobs.length; i++) {
            const job = losPollosJobs[i];

            await pool.query(`
                INSERT INTO jobs ( company_id, created_by, title, description, 
                    salary_min, salary_max, salary_type, employment_type, working_hours,
                    location, requirements, benefits, visa_support, language_level, status, work_mode)
                VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12, $13, $14, $15, $16)
            `, [

                companyId,
                seedUserId,
                job.title,
                `🐔 LOS POLLOS HERMANOS está contratando!\n\n${job.desc}\n\nRequisitos:\n- ${job.skills.join('\n- ')}\n- Discrição absoluta\n- Capacidade de manter segredos\n- Não fazer perguntas\n\n"I hide in plain sight, same as you." - Gus Fring`,
                job.salaryRange[0],
                job.salaryRange[1],
                'monthly',
                'full-time',
                '6:00-22:00 (turnos rotativos)',
                'Albuquerque, NM (Sede Secreta)',
                JSON.stringify(job.skills),
                JSON.stringify(benefits),
                false,
                'advanced',
                'open',
                job.workMode
            ]);
        }

        console.log(`   ✓ Los Pollos Hermanos: ${losPollosJobs.length} vagas criadas`);
    } catch (error) {
        console.error('   ❌ Erro Los Pollos Hermanos:', error.message);
    }
}

export async function seedSpringfieldNuclear() {
    console.log('☢️ Seeding Springfield Nuclear Power Plant (Simpsons)...');

    try {
        const countryResult = await pool.query("SELECT id FROM countries WHERE iso2 = 'US'");
        const usaId = countryResult.rows[0]?.id || null;

        // Create Company
        await pool.query(`
            INSERT INTO companies (name, slug, type, document, address, country_id, phone, email, website, description, verified, active)
            VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12)
            ON CONFLICT (slug) DO UPDATE SET name = EXCLUDED.name, description = EXCLUDED.description
        `, [
            'Springfield Nuclear Power Plant',
            'Springfield Nuclear Power Plant',
            'company',
            '88.888.888/0001-88',
            '100 Industrial Way, Springfield, State Unknown',
            usaId,
            '+1-555-BURNS',
            'careers@snpp.com',
            'https://snpp.com',
            JSON.stringify({
                tagline: 'Excellent...',
                founded: '1968',
                ceo: 'Charles Montgomery Burns (103 anos)',
                assistant: 'Waylon Smithers Jr.',
                safetyOfficer: 'Homer J. Simpson (Setor 7-G)',
                incidents: '342 por ano (média)',
                mascot: 'Blinky (peixe de 3 olhos)',
                values: ['Lucro máximo', 'Custo mínimo', 'Segurança opcional']
            }),
            true,
            true
        ]);

        // Create company (let DB auto-generate id)
        await pool.query(`
            INSERT INTO companies (name, slug, document)
            VALUES ($1, $2, $3)
            ON CONFLICT (slug) DO NOTHING
        `, ['Springfield Nuclear Power Plant', 'springfield-nuclear', '88.888.888/0001-88']);

        // Get company ID (SERIAL)
        const companyRes = await pool.query("SELECT id FROM companies WHERE slug = 'springfield-nuclear'");
        const companyId = companyRes.rows[0]?.id;

        const seedUserRes = await pool.query("SELECT id FROM users LIMIT 1");
        const seedUserId = seedUserRes.rows[0]?.id || 1;

        const benefits = ['Tickets de Cafeteria', 'Dosímetro Pessoal', 'Desconto na Taverna do Moe', 'Estacionamento (longe do reator)'];

        for (let i = 0; i < springfieldJobs.length; i++) {
            const job = springfieldJobs[i];

            await pool.query(`
                INSERT INTO jobs ( company_id, created_by, title, description, 
                    salary_min, salary_max, salary_type, employment_type, working_hours,
                    location, requirements, benefits, visa_support, language_level, status, work_mode)
                VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12, $13, $14, $15, $16)
            `, [

                companyId,
                seedUserId,
                job.title,
                `☢️ SPRINGFIELD NUCLEAR POWER PLANT está contratando!\n\n${job.desc}\n\nRequisitos:\n- ${job.skills.join('\n- ')}\n- Tolerância a radiação (medida em donuts/hora)\n- Não questionar ordens do Sr. Burns\n- Disponibilidade para trabalhar no Setor 7-G\n\n"Excelente..." - Sr. Burns`,
                job.salaryRange[0],
                job.salaryRange[1],
                'monthly',
                'full-time',
                '6:00-18:00 (horas extras obrigatórias)',
                'Springfield Nuclear Power Plant, Setor 7-G',
                JSON.stringify(job.skills),
                JSON.stringify(benefits),
                false,
                'beginner',
                'open',
                job.workMode
            ]);
        }

        console.log(`   ✓ Springfield Nuclear: ${springfieldJobs.length} vagas criadas`);
    } catch (error) {
        console.error('   ❌ Erro Springfield Nuclear:', error.message);
    }
}

// Export all seeders
export async function seedFictionalCompanies() {
    await seedStarkIndustries();
    await seedLosPollosHermanos();
    await seedSpringfieldNuclear();
    console.log('   🎬 Todas as empresas fictícias criadas!');
}
