<?php
// relatorio_feedback.php (dentro da pasta /relatorios/)
// Versão 16.0 - Adicionando Filtro por Período (Data)

// 1. GARANTIR A SESSÃO
if (session_status() == PHP_SESSION_NONE) {
    session_start();
}

// 2. SEGURANÇA E DEPENDÊNCIAS
require_once '../middleware-auth.php';
authAdministrador();

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

// Força o PDO a reportar erros
if (isset($pdo)) {
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}

// 3. INFORMAÇÕES DO PAINEL
$nome_usuario = $_SESSION['usuario_nome'] ?? 'Administrador';

function saudacao() {
    $hora = date("H");
    if ($hora >= 6 && $hora < 12) return "Bom dia";
    elseif ($hora >= 12 && $hora < 18) return "Boa tarde";
    else return "Boa noite";
}

// 4. RASTREAR O ACESSO
if (isset($_SESSION['id'], $_SESSION['role']) && $pdo) {
    $usuario_id_log = $_SESSION['id'];
    $role_log = $_SESSION['role'];
    $tipo_usuario_log = 'desconhecido';
    $role_map_hist = ['Empresas' => 'empresa', 'Candidatos' => 'candidato', 'Administradores' => 'admin', 'Administrador' => 'admin'];
    
    if (array_key_exists($role_log, $role_map_hist)) {
        $tipo_usuario_log = $role_map_hist[$role_log];
    }

    try {
        $sql_inserir_hist = "INSERT INTO historico_acessos (usuario_id, tipo_usuario, pagina_acessada, data_acesso) VALUES (?, ?, ?, NOW())";
        $stmt_hist = $pdo->prepare($sql_inserir_hist);
        $stmt_hist->execute([$usuario_id_log, $tipo_usuario_log, $_SERVER['REQUEST_URI']]);
    } catch (PDOException $e_log) {
        error_log("Erro log: " . $e_log->getMessage());
    }
}

// 5. LÓGICA DO RELATÓRIO COM FILTROS (TEXTO E DATA)
$notificados = [];
$erro_db = null;

// Captura os inputs
$busca = filter_input(INPUT_GET, 'busca', FILTER_SANITIZE_SPECIAL_CHARS);
$data_inicio = filter_input(INPUT_GET, 'data_inicio', FILTER_SANITIZE_SPECIAL_CHARS);
$data_fim = filter_input(INPUT_GET, 'data_fim', FILTER_SANITIZE_SPECIAL_CHARS);

try {
    // Início da Query
    $sql = "
        SELECT 
            c.nome AS candidato_nome,
            c.email AS candidato_email,
            v.titulo_vaga AS vaga_nome,
            v.slug AS vaga_slug, 
            e.nome_empresa AS empresa_nome,
            cand.data_candidatura
        FROM 
            candidaturas AS cand
        JOIN 
            Candidatos AS c ON cand.candidato_id = c.id
        JOIN 
            anuncio_gratuito AS v ON cand.vaga_id = v.id 
        JOIN 
            Empresas AS e ON v.id_empresa = e.id
        WHERE 
            cand.notificado_expiracao = 1
    ";

    $params = [];

    // Filtro de Texto
    if (!empty($busca)) {
        $sql .= " AND (c.nome LIKE :busca OR v.titulo_vaga LIKE :busca OR e.nome_empresa LIKE :busca)";
        $params[':busca'] = "%" . $busca . "%";
    }

    // Filtro de Data Inicial
    if (!empty($data_inicio)) {
        $sql .= " AND cand.data_candidatura >= :data_inicio";
        $params[':data_inicio'] = $data_inicio . " 00:00:00";
    }

    // Filtro de Data Final
    if (!empty($data_fim)) {
        $sql .= " AND cand.data_candidatura <= :data_fim";
        $params[':data_fim'] = $data_fim . " 23:59:59";
    }

    $sql .= " ORDER BY cand.id DESC";
    
    $stmt = $pdo->prepare($sql);
    $stmt->execute($params);
    $notificados = $stmt->fetchAll(PDO::FETCH_ASSOC);

} catch (Exception $e) {
    $erro_db = $e->getMessage();
}
?>
<!DOCTYPE html>
<html lang="pt-br">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Relatório de Feedbacks - Painel Administrativo</title>
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
    
    <style>
        /* Reset básico */
        * { box-sizing: border-box; margin: 0; padding: 0; }
        body { font-family: Arial, sans-serif; line-height: 1.6; background-color: #f8f9fa; color: #333; }
        
        .main-container {
            width: 100%;
            max-width: 1140px;
            margin: 30px auto;
            padding: 20px 15px;
        }

        /* Header */
        .admin-header {
            background-color: #fff;
            padding: 25px;
            border-radius: 8px;
            box-shadow: 0 2px 10px rgba(0,0,0,0.07);
            margin-bottom: 30px;
            text-align: center;
        }
        .admin-header h2 { color: #12929e; margin-bottom: 10px; font-size: 26px; font-weight: 600; }
        .admin-header p { font-size: 1rem; color: #555; }

        /* Conteúdo Principal */
        .admin-report-content {
            background-color: #fff;
            padding: 30px;
            border-radius: 8px;
            box-shadow: 0 2px 10px rgba(0,0,0,0.07);
            text-align: left;
        }
        .admin-report-content h3 {
            color: #333;
            border-bottom: 2px solid #eee;
            padding-bottom: 10px;
            margin-bottom: 20px;
            font-size: 22px;
        }
        .admin-report-content h3 i { color: #12929e; margin-right: 10px; }

        /* Botão Voltar */
        .btn-voltar {
            display: inline-block;
            padding: 10px 18px;
            margin-bottom: 20px;
            background-color: #6c757d;
            color: #ffffff;
            text-decoration: none;
            border-radius: 5px;
            font-size: 0.95rem;
            font-weight: bold;
            transition: background-color 0.3s ease;
        }
        .btn-voltar:hover { background-color: #5a6268; }

        /* --- ESTILOS DO FILTRO DE BUSCA E DATA --- */
        .search-container {
            margin-bottom: 30px;
            display: flex;
            gap: 15px;
            flex-wrap: wrap; /* Quebra linha no mobile */
            align-items: flex-end; /* Alinha o botão com os inputs */
            background-color: #f9f9f9;
            padding: 15px;
            border-radius: 8px;
            border: 1px solid #eee;
        }

        .form-group {
            display: flex;
            flex-direction: column;
            gap: 5px;
            flex: 1;
            min-width: 200px;
        }
        
        .form-group label {
            font-size: 0.9rem;
            font-weight: bold;
            color: #555;
        }

        .search-input {
            width: 100%;
            padding: 10px 15px;
            border: 1px solid #ddd;
            border-radius: 5px;
            font-size: 1rem;
        }
        
        .search-btn-group {
            display: flex;
            gap: 10px;
        }

        .search-btn {
            padding: 10px 20px;
            background-color: #12929e;
            color: white;
            border: none;
            border-radius: 5px;
            cursor: pointer;
            font-weight: bold;
            font-size: 1rem;
            height: 42px; /* Altura fixa para alinhar com inputs */
        }
        .search-btn:hover { background-color: #0e7a84; }
        
        .btn-limpar {
            padding: 10px 20px;
            background-color: #e9ecef;
            color: #333;
            border: 1px solid #ddd;
            border-radius: 5px;
            text-decoration: none;
            font-weight: bold;
            display: flex;
            align-items: center;
            justify-content: center;
            height: 42px;
        }
        .btn-limpar:hover { background-color: #dde0e3; }

        /* --- ESTILOS DOS CARDS --- */
        .cards-grid {
            display: grid;
            grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); /* Grid responsivo */
            gap: 20px;
        }

        .card {
            background-color: #ffffff;
            border: 1px solid #e0e0e0;
            border-radius: 8px;
            padding: 20px;
            box-shadow: 0 2px 5px rgba(0,0,0,0.05);
            transition: transform 0.2s ease, box-shadow 0.2s ease;
            display: flex;
            flex-direction: column;
        }

        .card:hover {
            transform: translateY(-3px);
            box-shadow: 0 5px 15px rgba(0,0,0,0.1);
            border-color: #12929e;
        }

        .card-header {
            border-bottom: 1px solid #f0f0f0;
            padding-bottom: 10px;
            margin-bottom: 10px;
        }

        .card-title {
            font-size: 1.1rem;
            font-weight: bold;
            color: #333;
            margin-bottom: 5px;
        }

        .card-date {
            font-size: 0.85rem;
            color: #777;
        }

        .card-body {
            font-size: 0.95rem;
            color: #555;
        }

        .card-row {
            margin-bottom: 8px;
            word-break: break-word; /* Quebra e-mails longos */
        }

        .card-label {
            font-weight: bold;
            color: #12929e;
            margin-right: 5px;
        }
        
        .card-link {
            color: #12929e;
            text-decoration: none;
            font-weight: bold;
        }
        .card-link:hover { text-decoration: underline; }

        /* Alertas e Erros */
        .error { color: #D8000C; background-color: #FFD2D2; border: 1px solid #D8000C; padding: 15px; border-radius: 5px; }
        .no-data { color: #555; background-color: #f0f0f0; padding: 20px; border-radius: 5px; text-align: center; width: 100%; }
        .alert { padding: 1rem; margin-bottom: 1rem; border-radius: .375rem; }
        .alert-success { color: #0f5132; background-color: #d1e7dd; }
        .alert-danger { color: #842029; background-color: #f8d7da; }

        @media screen and (max-width: 768px) {
            .admin-header h2 { font-size: 22px; }
            .cards-grid { grid-template-columns: 1fr; } /* 1 coluna no celular */
            .search-container { flex-direction: column; align-items: stretch; }
            .search-btn, .btn-limpar { width: 100%; }
        }
    </style>
</head>
<body>

<?php include '../menu.php'; ?>

<div class="main-container">

    <div class="admin-header">
        <h2><i class="fas fa-user-shield"></i> Painel Administrativo</h2>
        <p><?php echo saudacao() . ", <strong>" . htmlspecialchars($nome_usuario); ?></strong>! Bem-vindo(a) à área de gerenciamento.</p>
    </div>

    <?php
    if (isset($_SESSION['mensagem_painel_adm'])) {
        $tipo_alerta = $_SESSION['tipo_mensagem_painel_adm'] ?? 'info';
        echo "<div class='alert alert-" . htmlspecialchars($tipo_alerta) . "'>" . htmlspecialchars($_SESSION['mensagem_painel_adm']) . "</div>";
        unset($_SESSION['mensagem_painel_adm'], $_SESSION['tipo_mensagem_painel_adm']);
    }
    ?>

    <div class="admin-report-content">
        <h3><i class="fas fa-envelope-open-text"></i>Relatório de Feedbacks de Vagas Expiradas</h3>
        
        <a href="../painel-adm.php" class="btn-voltar">Voltar ao Painel Administrativo</a>
        
        <p>Esta página lista os candidatos notificados automaticamente sobre a expiração de vagas não visualizadas.</p>
        <br>

        <form method="GET" class="search-container">
            <div class="form-group" style="flex: 2;">
                <label>Buscar (Nome, Vaga ou Empresa):</label>
                <input type="text" name="busca" class="search-input" placeholder="Digite para buscar..." value="<?php echo htmlspecialchars($busca ?? ''); ?>">
            </div>
            
            <div class="form-group">
                <label>Data Inicial (Candidatura):</label>
                <input type="date" name="data_inicio" class="search-input" value="<?php echo htmlspecialchars($data_inicio ?? ''); ?>">
            </div>
            
            <div class="form-group">
                <label>Data Final:</label>
                <input type="date" name="data_fim" class="search-input" value="<?php echo htmlspecialchars($data_fim ?? ''); ?>">
            </div>

            <div class="search-btn-group">
                <button type="submit" class="search-btn"><i class="fas fa-search"></i> Filtrar</button>
                <?php if(!empty($busca) || !empty($data_inicio) || !empty($data_fim)): ?>
                    <a href="relatorio_feedback.php" class="btn-limpar">Limpar</a>
                <?php endif; ?>
            </div>
        </form>

        <?php if ($erro_db): ?>
            <div class="error">
                <strong>Erro ao consultar o banco de dados:</strong><br>
                <?php echo htmlspecialchars($erro_db); ?>
            </div>

        <?php elseif (empty($notificados)): ?>
            <div class="no-data">
                Nenhum registro encontrado com os filtros selecionados.
            </div>

        <?php else: ?>
            
            <p style="margin-bottom: 20px;"><strong>Total encontrado: <?php echo count($notificados); ?></strong></p>
            
            <div class="cards-grid">
                <?php foreach ($notificados as $row): ?>
                    <div class="card">
                        <div class="card-header">
                            <div class="card-title"><?php echo htmlspecialchars($row['candidato_nome']); ?></div>
                            <div class="card-date">
                                <i class="far fa-calendar-alt"></i> 
                                <?php 
                                $data = new DateTime($row['data_candidatura']);
                                echo $data->format('d/m/Y \à\s H:i'); 
                                ?>
                            </div>
                        </div>
                        <div class="card-body">
                            <div class="card-row">
                                <span class="card-label">Vaga:</span>
                                <a href="../vaga-gratuita.php?id=<?php echo htmlspecialchars($row['vaga_slug']); ?>" target="_blank" class="card-link">
                                    <?php echo htmlspecialchars($row['vaga_nome']); ?>
                                </a>
                            </div>
                            <div class="card-row">
                                <span class="card-label">Empresa:</span>
                                <?php echo htmlspecialchars($row['empresa_nome']); ?>
                            </div>
                            <div class="card-row">
                                <span class="card-label">E-mail:</span>
                                <?php echo htmlspecialchars($row['candidato_email']); ?>
                            </div>
                        </div>
                    </div>
                <?php endforeach; ?>
            </div>

        <?php endif; ?>

    </div>
</div>

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