<?php
// gerar-csv-candidaturas.php

if (session_status() == PHP_SESSION_NONE) { session_start(); }
require_once 'conexao.php';
require_once 'env.php';

// Verificação de Administrador
if (($_SESSION['role'] ?? '') !== 'Administradores' && ($_SESSION['role'] ?? '') !== 'Administrador') {
    die("Acesso negado.");
}

header('Content-Type: text/csv; charset=utf-8');
header('Content-Disposition: attachment; filename="relatorio_candidaturas_selflix.csv"');

$output = fopen('php://output', 'w');
fprintf($output, chr(0xEF).chr(0xBB).chr(0xBF)); // BOM para acentos no Excel

// Cabeçalhos
fputcsv($output, ['ID', 'Candidato', 'Email', 'Celular', 'Cidade/Estado', 'Vaga', 'Empresa', 'Tipo', 'Data'], ';');

try {
    $sql = "
        SELECT 
            c.id AS id_cand,
            c.nome AS nome_cand,
            c.email AS email_cand,
            c.celular AS tel_cand,
            CONCAT(COALESCE(c.cidade, ''), '/', COALESCE(c.estado, '')) AS localidade,
            ca.data_candidatura,
            ca.tipo_anuncio,
            
            -- Título da Vaga
            COALESCE(ag.titulo_vaga, ap.titulo_vaga, 'Vaga Arquivada') AS vaga_titulo,
            
            -- LÓGICA DE EMPRESA CORRIGIDA (Baseada na estrutura real da sua tabela)
            COALESCE(
                e_pago.nome_empresa,        -- 1º Prioridade: Vaga Paga
                e_grat_1.nome_empresa,      -- 2º Prioridade: Vaga Gratuita via empresa_id
                e_grat_2.nome_empresa,      -- 3º Prioridade: Vaga Gratuita via id_empresa (A que não é nula)
                'Empresa não identificada'
            ) AS empresa_nome

        FROM candidaturas ca
        INNER JOIN Candidatos c ON ca.candidato_id = c.id
        
        -- Relacionamento com Anúncios Gratuitos (Tentando as duas chaves estrangeiras)
        LEFT JOIN anuncio_gratuito ag ON ca.vaga_id = ag.id AND ca.tipo_anuncio = 'gratuito'
        LEFT JOIN Empresas e_grat_1 ON ag.empresa_id = e_grat_1.id
        LEFT JOIN Empresas e_grat_2 ON ag.id_empresa = e_grat_2.id
        
        -- Relacionamento com Anúncios Pagos
        LEFT JOIN anuncio_pago ap ON ca.vaga_id = ap.id AND ca.tipo_anuncio = 'pago'
        LEFT JOIN Empresas e_pago ON ap.empresa_id = e_pago.id
        
        ORDER BY ca.data_candidatura DESC
    ";

    $stmt = $pdo->prepare($sql);
    $stmt->execute();

    while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
        fputcsv($output, [
            $row['id_cand'],
            $row['nome_cand'],
            $row['email_cand'],
            $row['tel_cand'],
            $row['localidade'],
            $row['vaga_titulo'],
            $row['empresa_nome'],
            ucfirst($row['tipo_anuncio'] ?? 'N/A'),
            date('d/m/Y H:i', strtotime($row['data_candidatura']))
        ], ';');
    }

} catch (PDOException $e) {
    fputcsv($output, ['ERRO DE SQL', $e->getMessage()], ';');
}

fclose($output);
exit();