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

/**
 * 📝 Applications Seeder
 * 
 * Creates realistic job applications with candidates like:
 * - Ana Silva (Senior Full Stack Developer)
 * - Carlos Santos (Designer UX/UI)
 * - Maria Oliveira (Product Manager)
 */

const candidateProfiles = [
    {
        name: 'Ana Silva',
        email: 'ana.silva@email.com',
        phone: '+55 11 99999-1111',
        whatsapp: '+55 11 99999-1111',
        message: 'Tenho 5 anos de experiência como desenvolvedora Full Stack, trabalhando com React, Node.js e PostgreSQL. Busco uma posição desafiadora onde possa crescer profissionalmente.',
        resume_url: 'https://cdn.gohorsejobs.com/docs/ana_silva_cv.pdf',
    },
    {
        name: 'Carlos Santos',
        email: 'carlos.santos@email.com',
        phone: '+55 11 98888-2222',
        whatsapp: '+55 11 98888-2222',
        message: 'Designer UX/UI com 3 anos de experiência em produtos digitais. Especialista em Figma, Design Systems e pesquisa com usuários. Portfolio: behance.net/carlossantos',
        resume_url: 'https://cdn.gohorsejobs.com/docs/carlos_santos_portfolio.pdf',
    },
    {
        name: 'Maria Oliveira',
        email: 'maria.oliveira@email.com',
        phone: '+55 21 97777-3333',
        whatsapp: '+55 21 97777-3333',
        message: 'Product Manager com 4 anos de experiência em startups tech. Certificada em Scrum e experiência com metodologias ágeis. Busco liderar produtos inovadores.',
        resume_url: 'https://cdn.gohorsejobs.com/docs/maria_oliveira_resume.pdf',
    },
    {
        name: 'Pedro Costa',
        email: 'pedro.costa@email.com',
        phone: '+55 11 96666-4444',
        whatsapp: '+55 11 96666-4444',
        message: 'Desenvolvedor Backend com experiência em Go, Python e microsserviços. Apaixonado por performance e arquitetura de sistemas.',
        resume_url: 'https://cdn.gohorsejobs.com/docs/pedro_costa_cv.pdf',
    },
    {
        name: 'Juliana Ferreira',
        email: 'juliana.ferreira@email.com',
        phone: '+55 11 95555-5555',
        whatsapp: '+55 11 95555-5555',
        message: 'Data Scientist com mestrado em Machine Learning. Experiência com Python, TensorFlow e análise de dados em larga escala.',
        resume_url: 'https://cdn.gohorsejobs.com/docs/juliana_ferreira_cv.pdf',
    },
];

const statuses = ['pending', 'reviewed', 'shortlisted', 'rejected', 'hired'];

export async function seedApplications() {
    console.log('📝 Seeding applications...');

    try {
        // Get jobs
        const jobsRes = await pool.query('SELECT id, title FROM jobs LIMIT 20');
        const jobs = jobsRes.rows;

        if (jobs.length === 0) {
            console.log('   ⚠️  No jobs found, skipping applications');
            return;
        }

        let totalApps = 0;

        // Create applications - each candidate applies to multiple jobs
        for (let i = 0; i < candidateProfiles.length; i++) {
            const candidate = candidateProfiles[i];

            // Each candidate applies to 3-5 random jobs
            const numApplications = 3 + (i % 3);

            for (let j = 0; j < numApplications && j < jobs.length; j++) {
                const job = jobs[(i + j) % jobs.length];
                const appId = crypto.randomUUID();
                const status = statuses[(i + j) % statuses.length];

                // Calculate a random date in the past 30 days
                const daysAgo = Math.floor(Math.random() * 30);
                const createdAt = new Date();
                createdAt.setDate(createdAt.getDate() - daysAgo);

                await pool.query(`
                    INSERT INTO applications (job_id, name, email, phone, whatsapp, message, resume_url, status, created_at, updated_at)
                    VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10)
                    ON CONFLICT DO NOTHING
                `, [
                    job.id,
                    candidate.name,
                    candidate.email,
                    candidate.phone,
                    candidate.whatsapp,
                    `${candidate.message}\n\nInteressado na vaga: ${job.title}`,
                    candidate.resume_url,
                    status,
                    createdAt,
                    createdAt
                ]);

                totalApps++;
            }
        }

        console.log(`   ✓ ${totalApps} applications criadas`);
        console.log(`   👤 Candidatos: Ana Silva, Carlos Santos, Maria Oliveira, Pedro Costa, Juliana Ferreira`);
    } catch (error) {
        console.error('   ❌ Error seeding applications:', error.message);
        throw error;
    }
}
