<?php
// Arquivo: busca_cv/listar_curriculo.php (dentro da pasta busca_cv)

// --- INCLUSÃO E CONFIGURAÇÃO DE AMBIENTE ---

require_once '../env.php';
require_once '../conexao.php';

// Variável de controle para debug no HTML
$debug_mode = false;

// Ativa a exibição de erros para depuração, se a aplicação estiver em modo DEBUG
if (isset($_ENV['APP_DEBUG']) && $_ENV['APP_DEBUG'] === 'true') {
    ini_set('display_errors', 1);
    ini_set('display_startup_errors', 1);
    error_reporting(E_ALL);
    $debug_mode = true;
} else {
    // Modo de produção
    ini_set('display_errors', 0);
    error_reporting(0);
}

// --- VERIFICAÇÃO DE SESSÃO E CONEXÃO ---

// Inicia a sessão, se não estiver iniciada
if (session_status() == PHP_SESSION_NONE) {
    session_start();
}

$mensagem_erro = null;

// Verifica a conexão (Variável $pdo deve ser fornecida por conexao.php)
if (!isset($pdo) || !$pdo) {
    $mensagem_erro = "Erro crítico: Conexão com o banco de dados não estabelecida.";
}

// Verifica o acesso do usuário
if (!isset($_SESSION['id']) || ($_SESSION['role'] ?? '') !== 'Empresas') {
    $_SESSION['mensagem_login'] = "Acesso restrito. Por favor, faça login como empresa/recrutador.";
    header("Location: ../login.php");
    exit();
}

$empresa_id_sessao = $_SESSION['id'];
$candidatosEncontrados = [];
$filtro_aplicado = false;

// --- DADOS DINÂMICOS E ESTÁTICOS PARA FILTROS ---

// Lista estática de fallback
$areas_fallback = [
    'Administrativo', 'Financeiro', 'Vendas', 'Marketing', 'TI',
    'Recursos Humanos', 'Saúde', 'Operacional', 'Engenharia'
];

// * 1. Área de Atuação / Segmento (BUSCA DINÂMICA NA TABELA 'Candidatos')
$areas_atuacao = [];
$mensagem_erro_area = null;

if (empty($mensagem_erro) && isset($pdo)) {
    try {
        // Buscando na coluna 'tipo_vaga' (área/segmento)
        $sql_areas = "SELECT DISTINCT tipo_vaga FROM Candidatos WHERE tipo_vaga IS NOT NULL AND tipo_vaga != '' ORDER BY tipo_vaga ASC";
        $stmt_areas = $pdo->query($sql_areas);
        
        $areas_atuacao = $stmt_areas->fetchAll(PDO::FETCH_COLUMN, 0);
        
        if (empty($areas_atuacao)) {
             $areas_atuacao = $areas_fallback;
             $mensagem_erro_area = "A base de dados de áreas está vazia. Exibindo lista de áreas padrão.";
        }
    } catch (PDOException $e) {
        error_log("Erro ao buscar áreas de atuação do BD: " . $e->getMessage());
        $areas_atuacao = $areas_fallback;
        $mensagem_erro_area = "Erro ao carregar áreas do BD. Exibindo lista padrão.";
    }
} else {
    $areas_atuacao = $areas_fallback;
}

// * 2. Tipo de Contrato (Estático)
$tipos_contrato = [
    'CLT', 'PJ', 'Temporário', 'Estágio', 'Freelancer'
];

// * 3. Localizações (Estático - Usando 'estado')
$estados_br = ['AC', 'AL', 'AP', 'AM', 'BA', 'CE', 'DF', 'ES', 'GO', 'MA', 'MT', 'MS', 'MG', 'PA', 'PB', 'PR', 'PE', 'PI', 'RJ', 'RN', 'RS', 'RO', 'RR', 'SC', 'SP', 'SE', 'TO'];

// --- PROCESSAMENTO DOS FILTROS E BUSCA NO BANCO ---

// Variáveis de Filtro (Coleta de dados GET)
$filtro_area = filter_input(INPUT_GET, 'area', FILTER_SANITIZE_STRING);
$filtro_localizacao_estado = filter_input(INPUT_GET, 'estado', FILTER_SANITIZE_STRING);
$filtro_salario_min_raw = filter_input(INPUT_GET, 'salario_min', FILTER_VALIDATE_FLOAT, ['options' => ['default' => null]]);
$filtro_salario_min = $filtro_salario_min_raw !== null ? $filtro_salario_min_raw : null;
$filtro_contrato = filter_input(INPUT_GET, 'contrato', FILTER_SANITIZE_STRING);
$filtro_palavra_chave = filter_input(INPUT_GET, 'palavra_chave', FILTER_SANITIZE_STRING);

// Define se algum filtro foi realmente aplicado
if (
    !empty($filtro_area) ||
    !empty($filtro_localizacao_estado) ||
    ($filtro_salario_min !== null && $filtro_salario_min > 0) ||
    !empty($filtro_contrato) ||
    !empty($filtro_palavra_chave)
) {
    $filtro_aplicado = true;
}

if ($filtro_aplicado && empty($mensagem_erro)) {
    
    $params = [];
    $sql_filtros = "";

    // 1. Filtro por Área de atuação / segmento
    if ($filtro_area && in_array($filtro_area, $areas_atuacao)) {
        $sql_filtros .= " AND c.tipo_vaga = :area_atuacao ";
        $params[':area_atuacao'] = $filtro_area;
    }

    // 2. Filtro por Localização (estado)
    if ($filtro_localizacao_estado && in_array($filtro_localizacao_estado, $estados_br)) {
        $sql_filtros .= " AND c.estado = :estado ";
        $params[':estado'] = $filtro_localizacao_estado;
    }

    // 3. Filtro por Faixa Salarial (salario_pretendido)
    if ($filtro_salario_min !== null && $filtro_salario_min > 0) {
        $sql_filtros .= " AND c.salario_pretendido IS NOT NULL AND c.salario_pretendido >= :salario_min ";
        $params[':salario_min'] = $filtro_salario_min;
    }

    // 4. Filtro por Tipo de Contrato
    if ($filtro_contrato && in_array($filtro_contrato, $tipos_contrato)) {
        $sql_filtros .= " AND c.modelo_contratacao = :contrato ";
        $params[':contrato'] = $filtro_contrato;
    }

    // 5. Filtro por Palavras-chave
    if ($filtro_palavra_chave) {
        $termo_busca = '%' . $filtro_palavra_chave . '%';
        
        $sql_filtros .= " AND (
            c.nome LIKE :termo_busca_nome OR
            c.cargo_pretendido LIKE :termo_busca_cargo OR
            c.cidade LIKE :termo_busca_cidade
        ) ";

        $params[':termo_busca_nome'] = $termo_busca;
        $params[':termo_busca_cargo'] = $termo_busca;
        $params[':termo_busca_cidade'] = $termo_busca;
    }
    
    try {
        // Monta a consulta SQL final
        $sql = "
            SELECT DISTINCT
                c.id AS candidato_id,
                c.nome,
                c.email,
                c.celular,
                c.tipo_vaga AS area_atuacao,
                c.estado AS localizacao_estado,
                COALESCE(c.salario_pretendido, 0) AS pretensao_salarial_minima,
                c.modelo_contratacao AS tipo_contrato_desejado,
                MAX(cc.caminho_arquivo) AS caminho_arquivo
            FROM Candidatos AS c
            LEFT JOIN CandidatoCurriculos AS cc ON c.id = cc.candidato_id
            WHERE 1=1
            " . $sql_filtros . "
            GROUP BY c.id, c.nome, c.email, c.celular, c.tipo_vaga, c.estado, c.salario_pretendido, c.modelo_contratacao
            ORDER BY c.id DESC
        ";

        $stmt = $pdo->prepare($sql);
        $stmt->execute($params);
        $candidatosEncontrados = $stmt->fetchAll(PDO::FETCH_ASSOC);

    } catch (PDOException $e) {
        $mensagem_erro = "Ocorreu um erro ao buscar os currículos: " . $e->getMessage();
        error_log($mensagem_erro);
        $debug_sql = $sql;
        $debug_params = $params;
    }
}
?>

<!DOCTYPE html>
<html lang="pt-br">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Busca Ativa de Currículos - Selflix Vagas</title>
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
    
    <style>
        body { background-color: #f8f9fa; }
        .container-main { max-width: 1100px; margin: 30px auto; padding: 30px; background-color: #fff; border-radius: 8px; box-shadow: 0 0 15px rgba(0,0,0,0.07); }
        h2 { color: #12929e; margin-bottom: 25px; text-align: center; }
        .card-candidato { transition: transform 0.2s ease, box-shadow 0.2s ease; }
        .card-candidato:hover { transform: translateY(-3px); box-shadow: 0 8px 16px rgba(0,0,0,0.1); }
        .filter-section { background-color: #e9ecef; padding: 20px; border-radius: 6px; margin-bottom: 30px; }
        .filter-section .form-control, .filter-section .form-select { border-radius: 4px; }
        
        .input-group-search-actions {
            display: flex;
            align-items: flex-end;
            gap: 10px;
            flex-wrap: wrap;
        }
        
        .search-input-col {
            flex-grow: 1;
            width: 100%;
        }

        .search-buttons-container {
            width: 100%;
            margin-top: 5px;
        }

        @media (min-width: 768px) {
            .search-input-col {
                width: 58.333333%;
            }
            .search-buttons-container {
                width: 41.666666%;
                margin-top: 0;
            }
        }

        .search-buttons-group {
            display: flex;
            gap: 5px;
            width: 100%;
        }
        .search-buttons-group .btn {
            white-space: nowrap;
            flex-grow: 1;
        }
    </style>
</head>
<body>

<div class="container container-main">
    <div class="d-flex justify-content-between align-items-center mb-4 flex-wrap">
        <a href="../painel-de-gestao-empresa.php" class="btn btn-secondary mb-2 mb-md-0">Painel</a>
        <h2 class="flex-grow-1 text-center mb-0">Busca Ativa de Currículos</h2>
    </div>

    <?php if ($debug_mode && $filtro_aplicado && (isset($debug_sql) || $mensagem_erro)): ?>
        <div class="alert alert-warning">
            <strong>DEBUG DA CONSULTA SQL:</strong><br>
            <pre style="white-space: pre-wrap; word-wrap: break-word; font-size: 0.85rem; margin-top: 10px;">
                <strong>SQL:</strong> <?php echo htmlspecialchars($debug_sql ?? $sql); ?><br>
                <strong>Parâmetros:</strong> <?php echo htmlspecialchars(print_r($debug_params ?? $params, true)); ?>
            </pre>
            <?php if ($mensagem_erro): ?>
                <p class="text-danger"><strong>Mensagem de Erro PDO:</strong> <?php echo htmlspecialchars($mensagem_erro); ?></p>
            <?php endif; ?>
        </div>
    <?php endif; ?>

    <?php if (!empty($mensagem_erro_area)): ?>
           <div class="alert alert-info text-center"><?php echo htmlspecialchars($mensagem_erro_area); ?></div>
    <?php endif; ?>
    
    <div class="filter-section">
        <form action="" method="GET" class="row g-3">
            <div class="col-md-3">
                <label for="area" class="form-label fw-bold">Área de Atuação</label>
                <select class="form-select" name="area" id="area">
                    <option value="">Todas as Áreas</option>
                    <?php foreach ($areas_atuacao as $area): ?>
                        <option value="<?php echo htmlspecialchars($area); ?>" <?php echo ($filtro_area === $area) ? 'selected' : ''; ?>>
                            <?php echo htmlspecialchars($area); ?>
                        </option>
                    <?php endforeach; ?>
                </select>
            </div>
            
            <div class="col-md-3">
                <label for="estado" class="form-label fw-bold">Localização (Estado)</label>
                <select class="form-select" name="estado" id="estado">
                    <option value="">Todo o Brasil</option>
                    <?php foreach ($estados_br as $estado): ?>
                        <option value="<?php echo htmlspecialchars($estado); ?>" <?php echo ($filtro_localizacao_estado === $estado) ? 'selected' : ''; ?>>
                            <?php echo htmlspecialchars($estado); ?>
                        </option>
                    <?php endforeach; ?>
                </select>
            </div>
            
            <div class="col-md-3">
                <label for="salario_min_display" class="form-label fw-bold">Pretensão Salarial Min. (R$)</label>
                <input type="text" 
                       class="form-control" 
                       name="salario_min_display" 
                       id="salario_min_display" 
                       placeholder="Ex: 3.000,00" 
                       value="<?php echo htmlspecialchars(number_format((float)($filtro_salario_min ?: 0), 2, ',', '.')); ?>"
                       onkeyup="formatCurrency(this)" 
                       onblur="formatCurrency(this, true)">
                <input type="hidden" 
                       name="salario_min" 
                       id="salario_min" 
                       value="<?php echo htmlspecialchars($filtro_salario_min ?: ''); ?>">
            </div>
            
            <div class="col-md-3">
                <label for="contrato" class="form-label fw-bold">Tipo de Contrato</label>
                <select class="form-select" name="contrato" id="contrato">
                    <option value="">Qualquer Contrato</option>
                    <?php foreach ($tipos_contrato as $contrato): ?>
                        <option value="<?php echo htmlspecialchars($contrato); ?>" <?php echo ($filtro_contrato === $contrato) ? 'selected' : ''; ?>>
                            <?php echo htmlspecialchars($contrato); ?>
                        </option>
                    <?php endforeach; ?>
                </select>
            </div>
            
            <div class="col-12 input-group-search-actions">
                <div class="search-input-col">
                    <label for="palavra_chave" class="form-label fw-bold">Palavras-chave (Ex: Secretária, Administrativo)</label>
                    <input type="text" class="form-control" name="palavra_chave" id="palavra_chave" placeholder="Buscar por habilidades, cargo, etc." value="<?php echo htmlspecialchars($filtro_palavra_chave ?: ''); ?>">
                </div>
                
                <div class="search-buttons-container d-flex justify-content-end">
                    <div class="search-buttons-group">
                        <button class="btn btn-primary" type="submit"><i class="fas fa-search me-1"></i> Buscar</button>
                        <a href="<?php echo htmlspecialchars(basename(__FILE__)); ?>" class="btn btn-outline-secondary"><i class="fas fa-eraser me-1"></i> Limpar</a>
                    </div>
                </div>
            </div>
        </form>
    </div>

    <?php if ($mensagem_erro): ?>
        <div class="alert alert-danger text-center"><?php echo htmlspecialchars($mensagem_erro); ?></div>
    <?php endif; ?>
    
    <div class="lista-candidatos">
        <h3 class="mb-3">Candidatos (<?php echo count($candidatosEncontrados); ?>)</h3>
        
        <?php if ($filtro_aplicado && empty($mensagem_erro) && !empty($candidatosEncontrados)): ?>
            <?php foreach ($candidatosEncontrados as $candidato): ?>
                <?php
                    // O caminho do arquivo (URL completa ou caminho relativo do DB)
                    $caminho_curriculo_db = $candidato['caminho_arquivo'] ?? '';
                    
                    // **********************************************
                    // 1. GERAÇÃO DO LINK SEGURO (CORREÇÃO DE TOKEN)
                    // **********************************************
                    $link_seguro = '#';
                    if (!empty($candidato['candidato_id'])) {
                        // Converte o ID explicitamente para string para evitar problemas no base64
                        $id_str = (string)$candidato['candidato_id'];
                        $token_base64 = base64_encode($id_str);
                        
                        // Usa http_build_query para garantir que caracteres como '=' ou '+' sejam codificados corretamente na URL
                        $query_string = http_build_query(['token' => $token_base64]);
                        
                        $link_seguro = '../download-curriculo.php?' . $query_string;
                    }

                    // Prepara o WhatsApp
                    $celular = $candidato['celular'] ?? '';
                    $whatsapp_number = '';
                    if (!empty($celular)) {
                        $whatsapp_number = '55' . preg_replace('/[^0-9]/', '', $celular);
                    }
                ?>
                <div class="card card-candidato mb-4">
                    <div class="card-header bg-light">
                        <h5 class="card-title mb-0 text-primary">
                            <?php echo htmlspecialchars($candidato['nome'] ?? 'Candidato Desconhecido'); ?>
                        </h5>
                    </div>
                    <div class="card-body">
                        <div class="row">
                            <div class="col-md-7">
                                <p class="card-text mb-1"><strong>Área de Interesse:</strong> <span class="badge bg-info text-dark"><?php echo htmlspecialchars($candidato['area_atuacao'] ?? 'N/D'); ?></span></p>
                                <p class="card-text mb-1"><strong>Localização:</strong> <i class="fas fa-map-marker-alt"></i> <?php echo htmlspecialchars($candidato['localizacao_estado'] ?? 'N/D'); ?></p>
                                <p class="card-text mb-1"><strong>Contrato Desejado:</strong> <span class="badge bg-secondary"><?php echo htmlspecialchars($candidato['tipo_contrato_desejado'] ?? 'N/D'); ?></span></p>
                                <p class="card-text mb-1"><strong>Pretensão Salarial Mínima:</strong> R$ <?php echo htmlspecialchars(number_format($candidato['pretensao_salarial_minima'] ?? 0, 2, ',', '.') ?: 'A combinar'); ?></p>
                            </div>
                            
                            <div class="col-md-5 d-flex flex-column justify-content-center mt-3 mt-md-0 border-start ps-md-4">
                                
                                <p class="card-text mb-1"><strong>Email:</strong> <?php echo htmlspecialchars($candidato['email'] ?? 'N/D'); ?></p>
                                <p class="card-text mb-3"><strong>Celular:</strong> <?php echo htmlspecialchars($candidato['celular'] ?? 'N/D'); ?></p>

                                <?php if (!empty($caminho_curriculo_db)): ?>
                                    <a href="<?php echo htmlspecialchars($link_seguro); ?>" target="_blank" class="btn btn-primary w-100 mb-2">
                                        <i class="fas fa-file-download me-2"></i> <strong>Baixar Currículo (Seguro)</strong>
                                    </a>
                                <?php else: ?>
                                    <button class="btn btn-outline-secondary w-100 mb-2" disabled>Currículo Indisponível</button>
                                <?php endif; ?>

                                <?php if (!empty($whatsapp_number)): ?>
                                    <a href="https://wa.me/<?php echo $whatsapp_number; ?>" target="_blank" class="btn btn-success w-100 mt-1">
                                        <i class="fab fa-whatsapp me-2"></i> Contato via WhatsApp
                                    </a>
                                <?php endif; ?>
                            </div>
                        </div>
                    </div>
                </div>
            <?php endforeach; ?>
        <?php elseif (!$filtro_aplicado): ?>
            <div class="alert alert-warning text-center" role="alert">
                <i class="fas fa-info-circle me-2"></i> Utilize os filtros acima para iniciar sua busca ativa no banco de currículos.
            </div>
        <?php elseif (empty($mensagem_erro)): ?>
            <div class="alert alert-info text-center" role="alert">
                <i class="fas fa-frown me-2"></i> Nenhum currículo encontrado com os filtros aplicados. Tente refinar a busca.
            </div>
        <?php endif; ?>
    </div>
</div>

<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/js/bootstrap.bundle.min.js"></script>

<script>
    /**
     * Função para aplicar máscara de moeda (0.000,00) e atualizar campo escondido.
     * @param {HTMLInputElement} input O campo de entrada visível.
     */
    function formatCurrency(input) {
        let value = input.value;
        
        // 1. Limpar valor (mantém apenas números)
        value = value.replace(/\D/g, ''); 
        
        const hiddenInput = document.getElementById('salario_min');

        // Se estiver vazio, zera ambos os campos
        if (value === '') {
            hiddenInput.value = '';
            input.value = '';
            return;
        }

        // 2. Converção para formato numérico (divide por 100 para ter as casas decimais)
        let cleanValue = parseInt(value, 10);
        if (isNaN(cleanValue)) cleanValue = 0;

        let floatValue = cleanValue / 100;

        // 3. Formatar para moeda brasileira (0.000,00)
        let formattedValue = floatValue.toLocaleString('pt-BR', { 
            minimumFractionDigits: 2, 
            maximumFractionDigits: 2 
        });

        // 4. Inserir no input visível
        input.value = formattedValue;

        // 5. Atualizar o campo escondido com o valor float limpo
        // O PHP espera um float para o filtro (usando '.' como separador decimal)
        hiddenInput.value = floatValue.toFixed(2);
    }
    
    // Adicionar listener para limpar o campo escondido ao limpar o display
    document.addEventListener('DOMContentLoaded', function() {
        const displayInput = document.getElementById('salario_min_display');
        const hiddenInput = document.getElementById('salario_min');
        
        // Garante que a formatação seja mantida se o valor já estiver na URL
        if (displayInput.value && parseFloat(hiddenInput.value) > 0) {
            // Reaplica a formatação visual ao carregar a página
            formatCurrency(displayInput);
        } else {
             // Se o valor for 0 (default do PHP para number_format(0)) ou vazio, limpa o display
             displayInput.value = '';
        }
        
    });
</script>

</body>
</html>