<?php
// listar-candidato.php

if (session_status() == PHP_SESSION_NONE) {
    session_start();
}
require_once 'conexao.php'; // Fornece $pdo globalmente
require_once 'env.php';     // Carrega $_ENV, se necessário

// Verifica se o usuário é administrador
if (($_SESSION['role'] ?? '') !== 'Administradores' && ($_SESSION['role'] ?? '') !== 'Administrador') {
    $_SESSION['mensagem_login'] = "Acesso negado! Você não tem permissão para acessar esta página.";
    header("Location: login.php");
    exit();
}

// Gerar token CSRF para os links de ação
if (empty($_SESSION['csrf_token_lista_candidato'])) {
    $_SESSION['csrf_token_lista_candidato'] = bin2hex(random_bytes(32));
}
$csrf_token_for_actions = $_SESSION['csrf_token_lista_candidato'];

$candidatos = [];
$mensagem_erro_pagina = null;

// Parâmetros de busca separados
$search_email = $_GET['search_email'] ?? '';
$search_nome = $_GET['search_nome'] ?? '';
$data_inicio = $_GET['data_inicio'] ?? '';
$data_fim = $_GET['data_fim'] ?? '';
$tipo_vaga = $_GET['tipo_vaga'] ?? '';
$segmento = $_GET['segmento'] ?? ''; 

// --- INÍCIO: LÓGICA DE PAGINAÇÃO ---
$itens_por_pagina = 12;
$pagina_atual = isset($_GET['pagina']) && is_numeric($_GET['pagina']) ? (int)$_GET['pagina'] : 1;
$offset = ($pagina_atual - 1) * $itens_por_pagina;

$total_candidatos = 0;
$total_paginas = 1;
// --- FIM: LÓGICA DE PAGINAÇÃO ---

if (!$pdo) {
    error_log("Falha ao listar candidatos: conexão PDO não disponível.");
    $mensagem_erro_pagina = "Erro crítico de sistema (DB). Não é possível listar os candidatos.";
} else {
    try {
        // BUSCAR SEGMENTOS DINAMICAMENTE PARA O FILTRO
        $segmentos_disponiveis = [];
        try {
            $stmt_seg = $pdo->query("SELECT DISTINCT segmento_vaga FROM anuncio_gratuito WHERE segmento_vaga IS NOT NULL AND segmento_vaga <> '' ORDER BY segmento_vaga ASC");
            $segmentos_disponiveis = $stmt_seg->fetchAll(PDO::FETCH_COLUMN);
        } catch (PDOException $e_seg) {
            $stmt_seg = $pdo->query("SELECT DISTINCT segmento FROM Candidatos WHERE segmento IS NOT NULL AND segmento <> '' ORDER BY segmento ASC");
            $segmentos_disponiveis = $stmt_seg->fetchAll(PDO::FETCH_COLUMN);
        }

        $where_clauses = [];
        $params_count = [];

        // Filtro por E-mail independente (busca em qualquer parte do e-mail)
        if (!empty($search_email)) {
            $where_clauses[] = "c.email LIKE :search_email";
            $params_count[':search_email'] = '%' . $search_email . '%';
        }
        
        // Filtro por Nome ajustado: busca registros que COMEÇAM exatamente com o termo digitado
        if (!empty($search_nome)) {
            $where_clauses[] = "c.nome LIKE :search_nome";
            $params_count[':search_nome'] = $search_nome . '%';
        }
        
        if (!empty($data_inicio)) {
            $where_clauses[] = "c.data_cadastro >= :data_inicio";
            $params_count[':data_inicio'] = $data_inicio;
        }
        if (!empty($data_fim)) {
            $where_clauses[] = "c.data_cadastro <= :data_fim";
            $params_count[':data_fim'] = $data_fim . ' 23:59:59';
        }
        if (!empty($tipo_vaga)) {
            $where_clauses[] = "c.tipo_vaga = :tipo_vaga";
            $params_count[':tipo_vaga'] = $tipo_vaga;
        }
        if (!empty($segmento)) {
            $where_clauses[] = "c.segmento = :segmento";
            $params_count[':segmento'] = $segmento;
        }

        $where_sql = count($where_clauses) > 0 ? " WHERE " . implode(" AND ", $where_clauses) : "";

        // 1. Consulta para contar o total de candidatos
        $sql_count = "SELECT COUNT(*) FROM Candidatos c" . $where_sql;
        $stmt_count = $pdo->prepare($sql_count);
        $stmt_count->execute($params_count);
        $total_candidatos = $stmt_count->fetchColumn();
        $total_paginas = ceil($total_candidatos / $itens_por_pagina);

        // 2. Consulta com JOIN para pegar o currículo
        $sql = "SELECT c.id, c.nome, c.email, c.celular, c.cidade, c.estado, c.salario_pretendido, 
                       c.tipo_vaga, c.modelo_contratacao, c.pcd, c.segmento, cc.caminho_arquivo AS curriculo 
                FROM Candidatos c 
                LEFT JOIN CandidatoCurriculos cc ON c.id = cc.candidato_id 
                " . $where_sql . " 
                ORDER BY c.nome ASC LIMIT :limit OFFSET :offset";
        
        $stmt_select = $pdo->prepare($sql);
        
        foreach ($params_count as $key => $val) {
            $stmt_select->bindValue($key, $val);
        }
        $stmt_select->bindValue(':limit', $itens_por_pagina, PDO::PARAM_INT);
        $stmt_select->bindValue(':offset', $offset, PDO::PARAM_INT);

        $stmt_select->execute();
        $candidatos = $stmt_select->fetchAll(PDO::FETCH_ASSOC);

    } catch (PDOException $e) {
        error_log("Erro PDO ao listar candidatos: " . $e->getMessage());
        $mensagem_erro_pagina = "Ocorreu um erro ao buscar a lista de candidatos.";
    }
}

// Rastrear o acesso
if (isset($_SESSION['id'], $_SESSION['role']) && $pdo) {
    $usuario_id_log = $_SESSION['id'];
    $role_log = $_SESSION['role'];
    $role_map_hist = ['Empresas' => 'empresa', 'Candidatos' => 'candidato', 'Administradores' => 'admin', 'Administrador' => 'admin'];
    $tipo_usuario_log = $role_map_hist[$role_log] ?? 'admin';
    $pagina_acessada_log = $_SERVER['REQUEST_URI'];
    
    try {
        $stmt_hist = $pdo->prepare("INSERT INTO historico_acessos (usuario_id, tipo_usuario, pagina_acessada, data_acesso) VALUES (?, ?, ?, NOW())");
        $stmt_hist->execute([$usuario_id_log, $tipo_usuario_log, $pagina_acessada_log]);
    } catch (PDOException $e_log) {
        error_log("Erro ao registrar histórico de acesso em listar-candidato.php: " . $e_log->getMessage());
    }
}

// Função para formatar salário
function formatarPreco($valor) {
    if (empty($valor) || !is_numeric($valor)) return 'Não informado';
    return 'R$ ' . number_format($valor, 2, ',', '.');
}
?>
<!DOCTYPE html>
<html lang="pt-br">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Lista de Candidatos - Self Lix Vagas</title>
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap/5.3.0/css/bootstrap.min.css">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/all.min.css">
    <link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/slick-carousel/1.8.1/slick.min.css"/>
    <link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/slick-carousel/1.8.1/slick-theme.min.css"/>

<style>
        body { font-family: Arial, sans-serif; background-color: #f8f9fa; color: #333; line-height: 1.6; padding: 20px; }
        .container-main { width: 100%; max-width: 1200px; margin: 0 auto; background-color: white; padding: 25px; border-radius: 8px; box-shadow: 0 0 15px rgba(0,0,0,0.1); }
        h2 { text-align: left; margin-bottom: 25px; color: #12929e; font-size: 26px; }
        .btn-adicionar { background-color: #12929e; color: white; }
        .btn-adicionar:hover { background-color: #0e7a84; }
        .header-actions { display: flex; justify-content: space-between; align-items: center; margin-bottom: 20px; flex-wrap: wrap; gap:10px; }
        .nenhum-candidato { text-align: left; color: #6c757d; padding: 40px 20px; background-color: #f9f9f9; border-radius: 5px; margin-top: 20px; }
        
        .cards-container {
            display: grid;
            grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
            gap: 1rem;
            margin-top: 20px;
        }
        .card-candidato {
            border-left: 4px solid #12929e;
            margin-bottom: 0rem;
            box-shadow: 0 2px 5px rgba(0,0,0,0.1);
        }
        .card-candidato .card-title {
            color: #000;
            font-weight: bold;
            font-size: 1.25rem;
            text-align: left;
            margin-bottom: 0;
        }
        .card-candidato .card-subtitle {
            color: #6c757d;
            font-size: 0.875rem;
            margin-top: 5px;
            text-align: left;
        }

        .card-candidato .id-separator {
            border: 0;
            height: 1px;
            background-image: linear-gradient(to right, rgba(0, 0, 0, 0.1), rgba(0, 0, 0, 0.1), rgba(0, 0, 0, 0.1));
            margin: 10px 0;
        }

        .card-candidato .card-text { text-align: left; }
        .card-candidato .card-text small strong {
            min-width: 60px;
            display: inline-block;
        }
        .card-candidato .card-body {
            display: flex;
            flex-direction: column;
            justify-content: space-between;
            height: 100%;
        }
        
        .candidatura-item {
            border-bottom: 1px dashed #ddd;
            padding-bottom: 5px;
            margin-bottom: 5px;
            text-align: left;
        }
        .candidatura-item:last-child {
            border-bottom: none;
        }

        .search-form {
            display: flex;
            gap: 10px;
            margin-bottom: 20px;
            flex-wrap: wrap;
        }
        .search-form .form-control,
        .search-form .form-select {
            flex-grow: 1;
            min-width: 180px;
        }
        .search-form .btn {
            white-space: nowrap;
        }

        .btn-back-to-panel {
            background-color: transparent;
            border: 1px solid #ccc;
            color: #6c757d;
            font-weight: bold;
            padding: 8px 15px;
            border-radius: 5px;
            text-decoration: none;
            transition: all 0.3s ease;
        }

        .btn-back-to-panel:hover {
            background-color: #e9ecef;
            color: #5a6268;
            border-color: #b0b5bb;
        }

        .btn-download-csv {
            background-color: #28a745;
            color: white;
            border: none;
        }
        .btn-download-csv:hover {
            background-color: #218838;
        }

        .card-candidato .card-footer-actions {
            display: flex;
            justify-content: flex-end;
            gap: 10px;
            padding-top: 15px;
            border-top: 1px solid #eee;
            margin-top: auto;
        }

        .card-candidato .btn-action-icon {
            display: flex;
            justify-content: center;
            align-items: center;
            width: 38px;
            height: 38px;
            border-radius: 8px;
            text-decoration: none;
            color: white;
            font-size: 1rem;
            transition: background-color 0.2s ease-in-out, transform 0.2s ease-in-out;
        }

        .card-candidato .btn-action-icon:hover {
            transform: translateY(-2px);
            opacity: 0.9;
        }

        .card-candidato .btn-edit { background-color: #007bff; }
        .card-candidato .btn-delete { background-color: #dc3545; }
        
        .paginacao {
            display: flex;
            justify-content: center;
            align-items: center;
            gap: 10px;
            margin-top: 30px;
            margin-bottom: 50px;
        }
        .paginacao a, .paginacao span {
            display: flex;
            justify-content: center;
            align-items: center;
            width: 40px;
            height: 40px;
            border-radius: 50%;
            text-decoration: none;
            color: #000;
            background-color: #e0e0e0;
            transition: background-color 0.3s;
            font-weight: 500;
        }
        .paginacao a:hover { background-color: #d0d0d0; }
        .paginacao .ativo {
            background-color: #927516;
            color: #fff;
            font-weight: bold;
        }
        .paginacao .proximo {
            border-radius: 20px;
            width: auto;
            padding: 0 20px;
            background-color: #d0d0d0;
            color: #333;
            font-weight: normal;
        }
        .paginacao .proximo:hover { background-color: #c0c0c0; }
        .paginacao .disabled { pointer-events: none; opacity: 0.5; }

        /* ==========================================
           ESTILIZAÇÃO DO SLIDER E DOTS (AJUSTADO)
           ========================================== */
        .candidatura-slider {
            margin-bottom: 25px; /* Empurra os botões de ação para baixo */
        }
        
        .candidatura-slider .slick-slide {
            padding-bottom: 45px; /* Garante que o texto não colida com as bolinhas */
        }

        /* Oculta as setas anterior/próximo do carrossel */
        .candidatura-slider .slick-prev,
        .candidatura-slider .slick-next {
            display: none !important;
        }

        /* Ajustando as bolinhas de paginação do carrossel */
        .candidatura-slider .slick-dots {
            position: absolute;
            bottom: -5px; /* Posiciona firmemente abaixo do conteúdo */
            display: block;
            width: 100%;
            padding: 0;
            margin: 0;
            list-style: none;
            text-align: center;
        }

        .candidatura-slider .slick-dots li {
            position: relative;
            display: inline-block;
            width: 16px;  /* Área física do li ampliada */
            height: 16px; /* Área física do li ampliada */
            margin: 0 6px;
            padding: 0;
            cursor: pointer;
        }

        .candidatura-slider .slick-dots li button {
            font-size: 0;
            line-height: 0;
            display: block;
            width: 16px;  /* Área do botão ampliada */
            height: 16px; /* Área do botão ampliada */
            padding: 5px;
            cursor: pointer;
            color: transparent;
            border: 0;
            outline: none;
            background: transparent;
        }

        /* O círculo visível em si */
        .candidatura-slider .slick-dots li button:before {
            font-family: 'slick';
            font-size: 20px; /* Bolinha visual maior */
            line-height: 16px;
            position: absolute;
            top: 0;
            left: 0;
            width: 16px;
            height: 16px;
            content: '•';
            text-align: center;
            opacity: 0.25;
            color: #12929e; /* Usando a identidade de cor primária */
            -webkit-font-smoothing: antialiased;
            -moz-osx-font-smoothing: grayscale;
        }

        /* Círculo ativo selecionado */
        .candidatura-slider .slick-dots li.slick-active button:before {
            opacity: 0.85;
            color: #12929e;
            font-size: 20px; /* Destaque para o slide ativo */
        }

        @media (max-width: 576px) {
            .cards-container { grid-template-columns: 1fr; }
            .header-actions { flex-direction: column; align-items: stretch; }
            .header-actions > div { width: 100%; display: flex; flex-direction: column; gap: 10px; }
            .header-actions .btn { width: 100%; }
            .search-form { flex-direction: column; }
            .search-form .form-control, .search-form .btn { width: 100%; }
            .card-candidato .card-footer-actions { justify-content: center; gap: 15px; }
            .paginacao { gap: 5px; }
            .paginacao a, .paginacao span { width: 35px; height: 35px; font-size: 0.9em; }
            .paginacao .proximo { display: none; }
        }

        .modal-overlay {
            display: none;
            position: fixed;
            z-index: 1050;
            left: 0;
            top: 0;
            width: 100%;
            height: 100%;
            overflow: auto;
            background-color: rgba(0,0,0,0.6);
            backdrop-filter: blur(4px);
            align-items: center;
            justify-content: center;
        }

        #modalExclusao .modal-content {
            background-color: #38b4a0;
            color: #ffffff;
            border: none;
            border-radius: 12px;
            padding: 35px 25px;
            width: 90%;
            max-width: 400px;
            text-align: center;
            box-shadow: 0 8px 20px rgba(0,0,0,0.25);
            position: relative;
            animation: fadeInModal 0.3s ease-out;
        }

        @keyframes fadeInModal {
            from { opacity: 0; transform: scale(0.9); }
            to { opacity: 1; transform: scale(1); }
        }

        #modalExclusao .close-btn {
            color: rgba(255, 255, 255, 0.8);
            position: absolute;
            top: 15px;
            right: 20px;
            font-size: 2rem;
            cursor: pointer;
            line-height: 1;
        }
        #modalExclusao .close-btn:hover { color: #ffffff; }

        #modalExclusao h4 {
            color: #ffffff;
            font-size: 1.5rem;
            font-weight: 700;
            margin-bottom: 15px;
        }

        #modalExclusao p {
            color: rgba(255, 255, 255, 0.95);
            font-size: 1.1rem;
            margin-bottom: 30px;
        }

        #modalExclusao .btn-modal-white {
            background-color: #ffffff;
            color: #38b4a0;
            border: none;
            width: 100%;
            padding: 12px 0;
            font-size: 1rem;
            font-weight: bold;
            text-transform: uppercase;
            border-radius: 6px;
            margin-bottom: 12px;
            cursor: pointer;
            transition: transform 0.2s, box-shadow 0.2s;
            display: block;
            text-decoration: none;
            line-height: 1.5;
        }

        #modalExclusao .btn-modal-white:hover {
            background-color: #f1f1f1;
            transform: translateY(-2px);
            box-shadow: 0 4px 8px rgba(0,0,0,0.15);
            color: #2a8f7d;
        }

        .btn-cv-download {
            color: #12929e;
            text-decoration: underline;
            font-weight: bold;
        }
        .btn-ver-vaga {
            color: #12929e;
            font-weight: bold;
            text-decoration: none;
            display: inline-block;
            margin-top: 4px;
        }
        .btn-ver-vaga:hover {
            text-decoration: underline;
        }
    </style>
</head>
<body>
    <div class="container-main">
        <div class="header-actions">
            <h2><i class="fas fa-users"></i> Lista de Candidatos</h2>
            <div>
                <a href="cadastrar-candidato.php" class="btn btn-adicionar"><i class="fas fa-user-plus"></i> Novo Candidato</a>
                <a href="gerar-csv-candidaturas.php" class="btn btn-download-csv"><i class="fas fa-file-csv"></i> Baixar Candidaturas</a>
                <a href="gerar-csv-candidatos.php?search_email=<?= urlencode($search_email) ?>&search_nome=<?= urlencode($search_nome) ?>&data_inicio=<?= urlencode($data_inicio) ?>&data_fim=<?= urlencode($data_fim) ?>&tipo_vaga=<?= urlencode($tipo_vaga) ?>&segmento=<?= urlencode($segmento) ?>" class="btn btn-download-csv"><i class="fas fa-file-csv"></i> Baixar Candidatos</a>
                
                <?php if(!empty($segmento)): ?>
                    <a href="gerar-csv-segmento.php?segmento=<?= urlencode($segmento) ?>" class="btn btn-warning"><i class="fas fa-download"></i> Exportar Segmento</a>
                <?php endif; ?>

                <a href="painel-adm.php" class="btn btn-back-to-panel"><i class="fas fa-arrow-left"></i> Voltar ao Painel</a>
            </div>
        </div>

        <div class="mb-4">
            <form action="listar-candidato.php" method="GET" class="search-form">
                <input type="text" name="search_email" class="form-control" placeholder="Buscar por E-mail..." value="<?= htmlspecialchars($search_email) ?>">
                <input type="text" name="search_nome" class="form-control" placeholder="Buscar por Nome..." value="<?= htmlspecialchars($search_nome) ?>">
                
                <input type="date" name="data_inicio" class="form-control" placeholder="Data Início" value="<?= htmlspecialchars($data_inicio) ?>">
                <input type="date" name="data_fim" class="form-control" placeholder="Data Fim" value="<?= htmlspecialchars($data_fim) ?>">
                
                <select name="tipo_vaga" class="form-select">
                    <option value="">Todos os Tipos</option>
                    <option value="gratuito" <?= ($tipo_vaga == 'gratuito') ? 'selected' : '' ?>>Gratuito</option>
                    <option value="pago" <?= ($tipo_vaga == 'pago') ? 'selected' : '' ?>>Pago</option>
                </select>

                <select name="segmento" class="form-select">
                    <option value="">Todos os Segmentos</option>
                    <?php if(!empty($segmentos_disponiveis)): ?>
                        <?php foreach($segmentos_disponiveis as $item_seg): ?>
                            <option value="<?= htmlspecialchars($item_seg) ?>" <?= ($segmento == $item_seg) ? 'selected' : '' ?>>
                                <?= htmlspecialchars($item_seg) ?>
                            </option>
                        <?php endforeach; ?>
                    <?php endif; ?>
                </select>

                <button type="submit" class="btn btn-primary"><i class="fas fa-search"></i> Buscar</button>
                <?php if (!empty($search_email) || !empty($search_nome) || !empty($data_inicio) || !empty($data_fim) || !empty($tipo_vaga) || !empty($segmento)): ?>
                    <a href="listar-candidato.php" class="btn btn-secondary"><i class="fas fa-times-circle"></i> Limpar Busca</a>
                <?php endif; ?>
            </form>
        </div>

        <?php if (isset($_SESSION['mensagem_lista_candidatos'])): ?>
            <div class="alert alert-<?php echo htmlspecialchars($_SESSION['tipo_mensagem_lista_candidatos'] ?? 'info'); ?> alert-dismissible fade show" role="alert">
                <?php echo htmlspecialchars($_SESSION['mensagem_lista_candidatos']); ?>
                <button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
            </div>
            <?php unset($_SESSION['mensagem_lista_candidatos'], $_SESSION['tipo_mensagem_lista_candidatos']); ?>
        <?php endif; ?>

        <?php if ($mensagem_erro_pagina): ?>
            <div class="alert alert-danger"><i class="fas fa-exclamation-triangle"></i> <?php echo htmlspecialchars($mensagem_erro_pagina); ?></div>
        <?php else: ?>
            <?php if (!empty($candidatos)): ?>
                <div class="cards-container">
                    <?php foreach ($candidatos as $candidato_item): ?>
                        <div class="card card-candidato">
                            <div class="card-body">
                                <div>
                                    <h5 class="card-title"><?= htmlspecialchars($candidato_item['nome']) ?></h5>
                                    <hr class="id-separator">
                                    <h6 class="card-subtitle text-muted">Candidato nº: <?= htmlspecialchars($candidato_item['id']) ?></h6>
                                    <hr class="id-separator">
                                </div>
                                <div class="card-text">
                                    <p class="mb-1"><small><strong>Email:</strong> <?= htmlspecialchars($candidato_item['email']) ?></small></p>
                                    <p class="mb-1"><small><strong>Celular:</strong> <?= htmlspecialchars($candidato_item['celular']) ?></small></p>
                                    <p class="mb-2"><small><strong>Localização:</strong> <?= htmlspecialchars($candidato_item['cidade']) ?>/<?= htmlspecialchars($candidato_item['estado']) ?></small></p>
                                    <p class="mb-2"><small><strong>Segmento:</strong> <?= htmlspecialchars($candidato_item['segmento'] ?? 'N/A') ?></small></p>
                                    <p class="mb-2"><small><strong>Salário Pretendido:</strong> <?= formatarPreco($candidato_item['salario_pretendido']) ?></small></p>
                                    <p class="mb-2"><small><strong>Tipo de Vaga:</strong> <?= htmlspecialchars($candidato_item['tipo_vaga'] ?? 'N/A') ?></small></p>
                                    <p class="mb-2"><small><strong>Tipo de Contratação:</strong> <?= htmlspecialchars($candidato_item['modelo_contratacao'] ?? 'N/A') ?></small></p>
                                    <p class="mb-2"><small><strong>PCD:</strong> <?= htmlspecialchars($candidato_item['pcd'] ?? 'Não') ?></small></p>
                                    
                                    <p class="mb-2">
                                        <small><strong>Currículo:</strong> 
                                            <?php if (!empty($candidato_item['curriculo'])): ?>
                                                <a href="/<?= ltrim($candidato_item['curriculo'], '/') ?>" target="_blank" class="btn-cv-download">
                                                    Baixar
                                                </a>
                                            <?php else: ?>
                                                <span class="text-muted">Não enviado</span>
                                            <?php endif; ?>
                                        </small>
                                    </p>
                                </div>

                                <?php
                                $candidaturas = [];
                                try {
                                    $stmt_candidaturas = $pdo->prepare("
                                        SELECT
                                            COALESCE(ag.slug, ap.slug) AS slug_vaga,
                                            COALESCE(ag.titulo_vaga, ap.titulo_vaga) AS titulo_vaga,
                                            COALESCE(e1.nome_empresa, e2.nome_empresa) AS nome_empresa,
                                            ca.data_candidatura
                                        FROM candidaturas ca
                                        LEFT JOIN anuncio_gratuito ag ON ca.vaga_id = ag.id AND ca.tipo_anuncio = 'gratuito'
                                        LEFT JOIN anuncio_pago ap ON ca.vaga_id = ap.id AND ca.tipo_anuncio = 'pago'
                                        LEFT JOIN Empresas e1 ON ag.empresa_id = e1.id
                                        LEFT JOIN Empresas e2 ON ap.empresa_id = e2.id
                                        WHERE ca.candidato_id = ?
                                        ORDER BY ca.data_candidatura DESC
                                    ");
                                    $stmt_candidaturas->execute([$candidato_item['id']]);
                                    $candidaturas = $stmt_candidaturas->fetchAll(PDO::FETCH_ASSOC);
                                } catch (PDOException $e) {
                                    error_log("Erro PDO ao buscar candidaturas do candidato " . $candidato_item['id'] . ": " . $e->getMessage());
                                    $candidaturas = [];
                                }
                                ?>
                                <div class="mt-3">
                                    <strong>Candidaturas:</strong>
                                    <?php if (!empty($candidaturas)): ?>
                                        <div class="candidatura-slider">
                                            <?php foreach ($candidaturas as $candidatura): ?>
                                                <div>
                                                    <ul class="list-unstyled mb-0">
                                                        <li class="candidatura-item">
                                                            <small>
                                                                <i class="fas fa-briefcase"></i> <?= htmlspecialchars($candidatura['titulo_vaga'] ?? 'Vaga Indisponível') ?>
                                                                <br>
                                                                <i class="fas fa-building"></i> <?= htmlspecialchars($candidatura['nome_empresa'] ?? 'N/A') ?>
                                                                <br>
                                                                <i class="fas fa-calendar-alt"></i> <?= date('d/m/Y H:i:s', strtotime($candidatura['data_candidatura'])) ?>
                                                                <br>
                                                                <a href="vaga-select.php?id=<?= urlencode($candidatura['slug_vaga']) ?>" class="btn-ver-vaga" target="_blank">
                                                                    <i class="fas fa-eye"></i> Ver Detalhes da Vaga
                                                                </a>
                                                            </small>
                                                        </li>
                                                    </ul>
                                                </div>
                                            <?php endforeach; ?>
                                        </div>
                                    <?php else: ?>
                                        <p class="text-muted"><small>Nenhuma candidatura encontrada.</small></p>
                                    <?php endif; ?>
                                </div>
                                <div class="card-footer-actions">
                                    <?php $urlDelecao = "excluir_candidato.php?id=" . $candidato_item['id'] . "&csrf_token=" . urlencode($csrf_token_for_actions); ?>
                                    <a href="#" 
                                       class="btn-action-icon btn-delete" 
                                       title="Excluir" 
                                       onclick="event.preventDefault(); abrirModalExclusao('<?php echo $urlDelecao; ?>');">
                                         <i class="fas fa-trash-alt"></i>
                                    </a>
                                </div>
                            </div>
                        </div>
                    <?php endforeach; ?>
                </div>

                <?php if ($total_paginas > 1): ?>
                    <div class="paginacao" style="margin-top: 2rem;">
                        <?php
                        $url_params = http_build_query([
                            'search_email' => $search_email,
                            'search_nome' => $search_nome,
                            'data_inicio' => $data_inicio,
                            'data_fim' => $data_fim,
                            'tipo_vaga' => $tipo_vaga,
                            'segmento' => $segmento,
                        ]);
                        $url_base = 'listar-candidato.php?' . $url_params . '&';
                        $paginas_mostradas = 5;
                        $metade = floor($paginas_mostradas / 2);
                        $start_page = max(1, $pagina_atual - $metade);
                        $end_page = min($total_paginas, $pagina_atual + $metade);
                        
                        if ($pagina_atual > 1): ?>
                            <a href="<?php echo htmlspecialchars($url_base . 'pagina=' . ($pagina_atual - 1)); ?>">
                                <i class="fas fa-arrow-left"></i>
                            </a>
                        <?php endif;

                        for ($i = $start_page; $i <= $end_page; $i++): ?>
                            <a href="<?php echo htmlspecialchars($url_base . 'pagina=' . $i); ?>" class="<?php echo ($i == $pagina_atual) ? 'ativo' : ''; ?>"><?php echo $i; ?></a>
                        <?php endfor;

                        if ($pagina_atual < $total_paginas): ?>
                            <a href="<?php echo htmlspecialchars($url_base . 'pagina=' . ($pagina_atual + 1)); ?>" class="proximo">Próximo</a>
                        <?php endif; ?>
                    </div>
                <?php endif; ?>
                <?php else: ?>
                <div class="nenhum-candidato">
                    <p><i class="fas fa-info-circle"></i> Nenhum candidato encontrado.</p>
                </div>
            <?php endif; ?>
        <?php endif; ?>
    </div>

    <div class="modal-overlay" id="modalExclusao">
        <div class="modal-content">
            <span class="close-btn" onclick="fecharModalExclusao()">&times;</span>
            <h4>Tem certeza?</h4>
            <p>Deseja realmente excluir este candidato? Esta ação não pode ser desfeita.</p>
            <a href="#" id="btnConfirmarExclusao" class="btn-modal-white">Sim, Excluir</a>
            <button type="button" class="btn-modal-white" onclick="fecharModalExclusao()">Cancelar</button>
        </div>
    </div>

    <script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap/5.3.0/js/bootstrap.bundle.min.js"></script>
    <script type="text/javascript" src="https://code.jquery.com/jquery-3.7.1.min.js"></script>
    <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/slick-carousel/1.8.1/slick.min.js"></script>

    <script>
    $(document).ready(function(){
        $('.candidatura-slider').slick({
            dots: true,
            infinite: false,
            speed: 300,
            slidesToShow: 1,
            slidesToScroll: 1,
            adaptiveHeight: true
        });
    });

    function abrirModalExclusao(url) {
        var modal = document.getElementById('modalExclusao');
        var btnConfirmar = document.getElementById('btnConfirmarExclusao');
        btnConfirmar.setAttribute('href', url);
        modal.style.display = 'flex';
    }

    function fecharModalExclusao() {
        document.getElementById('modalExclusao').style.display = 'none';
    }

    window.onclick = function(event) {
        var modal = document.getElementById('modalExclusao');
        if (event.target == modal) fecharModalExclusao();
    }
    
    window.addEventListener("keydown", function(e) {
        if (e.key === "Escape") fecharModalExclusao();
    });
    </script>
</body>
</html>