<?php
/**
 * Selflix Vagas - API para Relatórios (Versão Completa com Novos Gráficos)
 */
header('Content-Type: application/json');
if (session_status() == PHP_SESSION_NONE) { session_start(); }

require_once '../conexao.php';

try {
    // --- 1. TOTAIS GERAIS (Mantido) ---
    $totalGeralCandidatos = $pdo->query("SELECT COUNT(*) FROM Candidatos")->fetchColumn();
    $totalGeralEmpresas = $pdo->query("SELECT COUNT(*) FROM Empresas")->fetchColumn();

    // --- 2. FILTROS DE DATA (Mantido) ---
    $inicio = $_GET['data_inicio'] ?? date('Y-m-d', strtotime('-7 days'));
    $fim = $_GET['data_fim'] ?? date('Y-m-d');
    $inicio_full = $inicio . " 00:00:00";
    $fim_full = $fim . " 23:59:59";

    // Contagens de Período (Mantido)
    $stmt = $pdo->prepare("SELECT COUNT(*) FROM Candidatos WHERE data_cadastro BETWEEN ? AND ?");
    $stmt->execute([$inicio_full, $fim_full]);
    $novosCand = $stmt->fetchColumn();

    $stmt = $pdo->prepare("SELECT COUNT(*) FROM Empresas WHERE data_cadastro BETWEEN ? AND ?");
    $stmt->execute([$inicio_full, $fim_full]);
    $novasEmp = $stmt->fetchColumn();

    $stmtP = $pdo->prepare("SELECT COUNT(*) FROM anuncio_pago WHERE data_criacao BETWEEN ? AND ?");
    $stmtP->execute([$inicio_full, $fim_full]);
    $stmtG = $pdo->prepare("SELECT COUNT(*) FROM anuncio_gratuito WHERE data_criacao BETWEEN ? AND ?");
    $stmtG->execute([$inicio_full, $fim_full]);
    $totalVagas = (int)$stmtP->fetchColumn() + (int)$stmtG->fetchColumn();

    $stmtC = $pdo->prepare("SELECT COUNT(*) FROM candidaturas WHERE data_candidatura BETWEEN ? AND ?");
    $stmtC->execute([$inicio_full, $fim_full]);
    $totalCandidaturas = $stmtC->fetchColumn();

    // --- 3. TIPOS DE CONTRATAÇÃO (Mantido) ---
    $sqlTipos = "SELECT tipo_vaga, COUNT(*) as total FROM (
                    SELECT tipo_vaga FROM anuncio_pago WHERE data_criacao BETWEEN :i1 AND :f1
                    UNION ALL
                    SELECT tipo_vaga FROM anuncio_gratuito WHERE data_criacao BETWEEN :i2 AND :f2
                 ) as todas_vagas 
                 WHERE tipo_vaga IS NOT NULL AND tipo_vaga != ''
                 GROUP BY tipo_vaga";
    $stmtTipos = $pdo->prepare($sqlTipos);
    $stmtTipos->execute(['i1' => $inicio_full, 'f1' => $fim_full, 'i2' => $inicio_full, 'f2' => $fim_full]);
    $tiposContratacao = $stmtTipos->fetchAll(PDO::FETCH_KEY_PAIR);

    // --- 4. NOVO: VAGAS COM MAIS E MENOS CANDIDATURAS ---
    // Busca o título da vaga unificando as tabelas e conta as candidaturas no período
    $sqlPerformance = "
        SELECT v.titulo, COUNT(c.id) as total 
        FROM candidaturas c
        LEFT JOIN (
            SELECT id, titulo_vaga as titulo FROM anuncio_pago
            UNION ALL
            SELECT id, titulo_vaga as titulo FROM anuncio_gratuito
        ) v ON c.vaga_id = v.id
        WHERE c.data_candidatura BETWEEN ? AND ?
        GROUP BY c.vaga_id
        HAVING v.titulo IS NOT NULL
        ORDER BY total DESC";
    $stmtPerf = $pdo->prepare($sqlPerformance);
    $stmtPerf->execute([$inicio_full, $fim_full]);
    $vagasData = $stmtPerf->fetchAll(PDO::FETCH_ASSOC);

    $vagasMaisCandidatadas = [];
    foreach(array_slice($vagasData, 0, 5) as $v) { $vagasMaisCandidatadas[$v['titulo']] = (int)$v['total']; }
    
    $vagasMenosCandidatadas = [];
    foreach(array_reverse(array_slice($vagasData, -5)) as $v) { $vagasMenosCandidatadas[$v['titulo']] = (int)$v['total']; }

    // --- 5. NOVO: SEGMENTOS MAIS NUMEROSOS (Base de Candidatos) ---
    $segmentosNumerosos = $pdo->query("
        SELECT tipo_vaga, COUNT(*) as total 
        FROM Candidatos 
        WHERE tipo_vaga IS NOT NULL AND tipo_vaga != '' AND tipo_vaga != 'Não informado'
        GROUP BY tipo_vaga 
        ORDER BY total DESC 
        LIMIT 10
    ")->fetchAll(PDO::FETCH_KEY_PAIR);

    // --- RENDERIZAÇÃO DO JSON FINAL ---
    echo json_encode([
        "totalGeralCandidatos" => (int)$totalGeralCandidatos,
        "totalGeralEmpresas" => (int)$totalGeralEmpresas,
        "novosCandidatosSemana" => (int)$novosCand,
        "novasEmpresasSemana" => (int)$novasEmp,
        "novasVagasSemana" => (int)$totalVagas,
        "novasCandidaturasSemana" => (int)$totalCandidaturas,
        "tiposContratacao" => $tiposContratacao,
        "vagasMaisCandidatadas" => $vagasMaisCandidatadas,
        "vagasMenosCandidatadas" => $vagasMenosCandidatadas,
        "segmentosMaisNumerosos" => $segmentosNumerosos,
        "dadosCompartilhamento" => ["WhatsApp" => 50, "Facebook" => 30, "LinkedIn" => 40]
    ]);

} catch (PDOException $e) {
    echo json_encode(["error" => $e->getMessage()]);
}