<?php
/**
 * Selflix Vagas - Exportação de Relatório Consolidado
 * Caminho: /export/exportar_relatorio_vagas.php
 */

if (session_status() == PHP_SESSION_NONE) { session_start(); }

// Ajuste de caminhos para subir um nível até a raiz
require_once dirname(__DIR__) . '/conexao.php';
require_once dirname(__DIR__) . '/env.php';

// 1. Verificação de Segurança (Apenas Admin)
if (($_SESSION['role'] ?? '') !== 'Administradores' && ($_SESSION['role'] ?? '') !== 'Administrador') {
    die("Acesso negado. Apenas administradores podem exportar relatórios.");
}

$site_url = rtrim($_ENV['SITE_URL'] ?? 'https://vagas.selflix.com.br', '/');

// 2. Configuração do Header para Download de CSV (Excel Friendly)
header('Content-Type: text/csv; charset=utf-8');
header('Content-Disposition: attachment; filename=relatorio_geral_vagas_' . date('Y-m-d_H-i') . '.csv');

// Criar ponteiro de saída
$output = fopen('php://output', 'w');

// BOM para o Excel identificar UTF-8 (corrige acentuação)
fprintf($output, chr(0xEF).chr(0xBB).chr(0xBF));

// Cabeçalho das Colunas
fputcsv($output, [
    'Nome da Empresa', 
    'Título da Vaga', 
    'Tipo de Anúncio', 
    'Data de Publicação', 
    'Link Direto', 
    'Total de Candidaturas'
]);

try {
    /* 3. SQL UNIFICADO COM JOIN 
       Vincula Empresas -> Anúncios -> Contagem de Candidaturas
    */
    $sql = "
        SELECT 
            e.nome_empresa, 
            ap.titulo_vaga, 
            'Select (Pago)' as tipo, 
            ap.data_criacao, 
            ap.slug,
            ap.id as vaga_actual_id,
            'pago' as tipo_ref,
            (SELECT COUNT(*) FROM candidaturas c WHERE c.vaga_id = ap.id AND c.tipo_anuncio = 'pago') as total_inscritos
        FROM Empresas e
        INNER JOIN anuncio_pago ap ON e.id = ap.empresa_id

        UNION ALL

        SELECT 
            e.nome_empresa, 
            ag.titulo_vaga, 
            'Gratuita' as tipo, 
            ag.data_criacao, 
            ag.slug,
            ag.id as vaga_actual_id,
            'gratuito' as tipo_ref,
            (SELECT COUNT(*) FROM candidaturas c WHERE c.vaga_id = ag.id AND c.tipo_anuncio = 'gratuito') as total_inscritos
        FROM Empresas e
        INNER JOIN anuncio_gratuito ag ON e.id = ag.empresa_id
        
        ORDER BY nome_empresa ASC, data_criacao DESC
    ";

    $stmt = $pdo->query($sql);

    while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
        // Define o script de destino baseado no tipo
        $pagina = ($row['tipo_ref'] == 'pago') ? 'vaga-select.php' : 'vaga-gratuita.php';
        
        // Gera o link usando slug ou ID como fallback
        $identificador = !empty($row['slug']) ? $row['slug'] : $row['vaga_actual_id'];
        $link_vaga = $site_url . '/' . $pagina . '?id=' . $identificador;

        fputcsv($output, [
            $row['nome_empresa'],
            $row['titulo_vaga'],
            $row['tipo'],
            date('d/m/Y H:i', strtotime($row['data_criacao'])),
            $link_vaga,
            $row['total_inscritos']
        ]);
    }

} catch (PDOException $e) {
    error_log("Erro na exportação de vagas: " . $e->getMessage());
}

fclose($output);
exit();