<?php
// historico_acessos.php

ini_set('display_errors', 1); // Desenvolvimento
ini_set('display_startup_errors', 1); // Desenvolvimento
error_reporting(E_ALL); // Desenvolvimento

if (session_status() == PHP_SESSION_NONE) {
    session_start();
}
require_once 'conexao.php'; // Fornece $pdo
require_once 'env.php';

// Verificar se o usuário é administrador
if (($_SESSION['role'] ?? '') !== 'Administradores' && ($_SESSION['role'] ?? '') !== 'Administrador') {
    $_SESSION['mensagem_login'] = "Acesso negado. Apenas administradores podem ver o histórico.";
    header("Location: login.php"); // Ou painel-adm.php se já logado mas sem role
    exit();
}


if (!$pdo) {
    error_log("Falha ao exibir histórico de acessos: conexão PDO não disponível.");
    die("Erro crítico de sistema (DB). Não é possível exibir o histórico.");
}

// Registrar o acesso do administrador a ESTA página
if (isset($_SESSION['id'], $_SESSION['role'])) {
    $usuario_id_log = $_SESSION['id'];
    $role_log = $_SESSION['role']; // Deve ser 'Administrador' ou 'Administradores' aqui
    $role_map_hist = ['Empresas' => 'empresa', 'Candidatos' => 'candidato', 'Administradores' => 'admin', 'Administrador' => 'admin'];
    $tipo_usuario_log = $role_map_hist[$role_log] ?? 'admin'; // Default to admin if role is unusual for an admin
    $pagina_acessada_log = basename($_SERVER['PHP_SELF']); // $_SERVER['REQUEST_URI'] pode incluir GET params
    
    try {
        $stmt_log_page = $pdo->prepare("INSERT INTO historico_acessos (usuario_id, tipo_usuario, pagina_acessada, data_acesso) VALUES (?, ?, ?, NOW())");
        $stmt_log_page->execute([$usuario_id_log, $tipo_usuario_log, $pagina_acessada_log]);
    } catch (PDOException $e_log) {
        error_log("Erro ao registrar histórico de acesso para historico_acessos.php: " . $e_log->getMessage());
    }
}


// Variáveis para armazenar os parâmetros de pesquisa e resultados
$email_usuario_filtro = trim($_GET['email_usuario'] ?? '');
$mes_ano_filtro = trim($_GET['mes_ano'] ?? ''); // Formato YYYY-MM
$tipo_usuario_filtro = trim($_GET['tipo_usuario'] ?? ''); // Novo filtro para tipo de usuário
$registros_historico = [];

try {
    // Base da Consulta SQL - Ajustado para buscar 'celular' em Candidatos e Empresas
    $sql = "SELECT h.id, h.pagina_acessada, h.data_acesso, h.tipo_usuario, h.usuario_id,
            CASE 
                WHEN h.tipo_usuario = 'empresa' THEN e.nome_empresa
                WHEN h.tipo_usuario = 'candidato' THEN c.nome
                WHEN h.tipo_usuario = 'admin' THEN adm.nome 
            END as nome_usuario,
            CASE 
                WHEN h.tipo_usuario = 'empresa' THEN e.email
                WHEN h.tipo_usuario = 'candidato' THEN c.email
                WHEN h.tipo_usuario = 'admin' THEN adm.login 
            END as email_usuario,
            CASE 
                WHEN h.tipo_usuario = 'empresa' THEN e.celular
                WHEN h.tipo_usuario = 'candidato' THEN c.celular
                ELSE NULL
            END as celular_usuario,
            CASE 
                WHEN h.tipo_usuario = 'empresa' THEN 
                    CASE WHEN e.tipo_anuncio = 'pago' THEN 'Pago' ELSE 'Gratuito' END 
                ELSE 'N/A' 
            END as plano_empresa,
            CASE 
                WHEN h.tipo_usuario = 'empresa' THEN 'Empresa' 
                WHEN h.tipo_usuario = 'candidato' THEN 'Candidato' 
                WHEN h.tipo_usuario = 'admin' THEN 'Administrador'
            END as perfil_tipo_formatado
        FROM historico_acessos h
        LEFT JOIN Empresas e ON e.id = h.usuario_id AND h.tipo_usuario = 'empresa'
        LEFT JOIN Candidatos c ON c.id = h.usuario_id AND h.tipo_usuario = 'candidato'
        LEFT JOIN Administradores adm ON adm.id = h.usuario_id AND h.tipo_usuario = 'admin'
        WHERE 1=1";

    $params_query = [];

    // Adiciona a condição para o novo filtro de tipo de usuário
    if (!empty($tipo_usuario_filtro)) {
        $sql .= " AND h.tipo_usuario = ?";
        $params_query[] = $tipo_usuario_filtro;
    }

    if (!empty($email_usuario_filtro)) {
        $sql .= " AND (
            (h.tipo_usuario = 'empresa' AND e.email LIKE ?) OR 
            (h.tipo_usuario = 'candidato' AND c.email LIKE ?) OR 
            (h.tipo_usuario = 'admin' AND adm.login LIKE ?)
        )";
        $like_email = "%" . $email_usuario_filtro . "%";
        $params_query[] = $like_email;
        $params_query[] = $like_email;
        $params_query[] = $like_email;
    }

    if (!empty($mes_ano_filtro) && preg_match('/^\d{4}-\d{2}$/', $mes_ano_filtro)) {
        $sql .= " AND DATE_FORMAT(h.data_acesso, '%Y-%m') = ?";
        $params_query[] = $mes_ano_filtro;
    }

    $sql .= " ORDER BY h.data_acesso DESC LIMIT 200"; // Adicionar um limite para evitar sobrecarga

    $stmt_select = $pdo->prepare($sql);
    $stmt_select->execute($params_query);
    $registros_historico = $stmt_select->fetchAll(PDO::FETCH_ASSOC);

} catch (PDOException $e) {
    error_log("Erro PDO ao buscar histórico de acessos: " . $e->getMessage());
    $_SESSION['mensagem_historico'] = "Erro ao carregar histórico de acessos. Por favor, tente novamente mais tarde."; // Mensagem mais genérica para o usuário
    $_SESSION['tipo_mensagem_historico'] = "danger";
    // Não redirecionar, apenas exibir a mensagem na página
}
?>
<!DOCTYPE html>
<html lang="pt-BR">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Histórico de Acessos - 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/5.15.4/css/all.min.css">
    <style>
        /* Seus estilos CSS originais */
        :root { --primary-color: #12929e; --primary-hover: #0e7a84; --secondary-color: #6c757d; --light-bg: #f8f9fa; --card-border: #eee; }
        body { background-color: #f4f4f4; font-family: Arial, sans-serif; line-height: 1.6; padding: 20px; color: #333; }
        
        .container-main { 
            max-width: 1300px; 
            background-color: #fff; 
            padding: 25px; 
            border-radius: 8px; 
            box-shadow: 0 0 15px rgba(0,0,0,0.1); 
            margin: 20px auto 30px auto; 
        }
        h1 { text-align: center; margin-bottom: 25px; color: var(--primary-color); font-size: 28px; }
        .form-filtro { background-color: var(--light-bg); padding: 20px; border-radius: 8px; margin-bottom: 25px; border: 1px solid var(--card-border); }
        .btn-primary { background-color: var(--primary-color); border-color: var(--primary-color); }
        .btn-primary:hover { background-color: var(--primary-hover); border-color: var(--primary-hover); }
        .btn-outline-secondary { color: var(--secondary-color); border-color: var(--secondary-color); }
        .btn-outline-secondary:hover { background-color: var(--secondary-color); color: #fff; }

        .tag { display: inline-block; padding: .35em .65em; font-size: .75em; font-weight: 700; line-height: 1; text-align: center; white-space: nowrap; vertical-align: baseline; border-radius: .25rem; }
        .tag-empresa { background-color: #dbeaff; color: #004085; } 
        .tag-candidato { background-color: #d4edda; color: #155724; } 
        .tag-admin { background-color: #f8d7da; color: #721c24; } 
        .tag-pago { background-color: #fff3cd; color: #856404; } 
        .tag-gratuito { background-color: #e2e3e5; color: #383d41; } 
        
        .cards-container-grid { 
            display: grid; 
            grid-template-columns: repeat(auto-fill, minmax(320px, 1fr)); 
            gap: 1.5rem; 
            margin-top: 20px;
        }

        .card-historico {
            border-left: 4px solid var(--primary-color); 
            box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075); 
        }
        .card-historico .card-header {
            background-color: var(--light-bg);
            border-bottom: 1px solid var(--card-border);
            padding-bottom: 0.5rem;
        }
        .card-historico .card-title {
            color: var(--primary-color);
            font-size: 1.1rem;
            margin-bottom: 0.25rem;
        }
        .card-historico .card-subtitle {
            font-size: 0.9rem;
            color: var(--secondary-color);
        }
        .card-historico .card-body p {
            margin-bottom: 0.5rem; 
        }
        .card-historico .card-body strong {
            display: inline-block;
            min-width: 80px; 
        }

        .table-responsive {
            display: none !important;
        }
        
        .form-group {
            margin-bottom: 1rem; 
        }
        .d-flex.align-items-end .btn {
            margin-top: auto; 
        }

        /* Estilo do ícone flutuante do WhatsApp */
        .whatsapp-icon-link {
            color: #25d366;
            font-size: 1.5rem;
            text-decoration: none;
            transition: transform 0.2s;
            display: inline-block;
            vertical-align: middle;
            margin-left: 10px;
        }
        .whatsapp-icon-link:hover {
            color: #128c7e;
            transform: scale(1.2);
        }
        .divider {
            border-top: 1px solid #eee;
            margin: 10px 0;
        }

    </style>
</head>
<body>
    <div class="container-main">
        <h1><i class="fas fa-history"></i> Histórico de Acessos</h1>
        
        <a href="painel-adm.php" class="btn btn-outline-secondary mb-4">
            <i class="fas fa-arrow-left"></i> Voltar ao Painel Administrativo
        </a>
        
        <?php if (isset($_SESSION['mensagem_historico'])): ?>
            <div class="alert alert-<?= htmlspecialchars($_SESSION['tipo_mensagem_historico']) ?> alert-dismissible fade show" role="alert">
                <?= htmlspecialchars($_SESSION['mensagem_historico']) ?>
                <button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
            </div>
            <?php unset($_SESSION['mensagem_historico'], $_SESSION['tipo_mensagem_historico']); ?>
        <?php endif; ?>

        <div class="form-filtro">
            <form method="get" action="historico_acessos.php">
                <div class="row">
                    <div class="col-md-4 form-group">
                        <label for="tipo_usuario_filtro">Tipo de Usuário:</label>
                        <select id="tipo_usuario_filtro" name="tipo_usuario" class="form-control">
                            <option value="">Todos</option>
                            <option value="empresa" <?= ($tipo_usuario_filtro == 'empresa') ? 'selected' : '' ?>>Empresas</option>
                            <option value="candidato" <?= ($tipo_usuario_filtro == 'candidato') ? 'selected' : '' ?>>Candidatos</option>
                            <option value="admin" <?= ($tipo_usuario_filtro == 'admin') ? 'selected' : '' ?>>Administradores</option>
                        </select>
                    </div>
                    <div class="col-md-4 form-group">
                        <label for="email_usuario_filtro">E-mail do Usuário:</label>
                        <input type="email" id="email_usuario_filtro" name="email_usuario" class="form-control" placeholder="Filtrar por e-mail" value="<?= htmlspecialchars($email_usuario_filtro) ?>">
                    </div>
                    <div class="col-md-4 form-group">
                        <label for="mes_ano_filtro">Período (Mês/Ano):</label>
                        <input type="month" id="mes_ano_filtro" name="mes_ano" class="form-control" value="<?= htmlspecialchars($mes_ano_filtro) ?>">
                    </div>
                    <div class="col-12 form-group d-flex justify-content-end">
                        <button type="submit" class="btn btn-primary me-2"> <i class="fas fa-search"></i> Pesquisar
                        </button>
                        <a href="historico_acessos.php" class="btn btn-outline-secondary" title="Limpar Filtros"><i class="fas fa-eraser"></i> Limpar</a>
                    </div>
                </div>
            </form>
        </div>

        <?php if (!empty($registros_historico)): ?>
            <div class="cards-container-grid">
                <?php foreach ($registros_historico as $linha): 
                    $nome_usr = $linha['nome_usuario'] ?: 'N/A';
                    $email_usr = $linha['email_usuario'] ?: 'N/A';
                    $plano_emp = $linha['plano_empresa'] ?? 'N/A';
                    $perfil_fmt = $linha['perfil_tipo_formatado'] ?? 'N/A';
                    
                    $tipoClass = '';
                    if ($perfil_fmt == 'Empresa') $tipoClass = 'tag-empresa';
                    else if ($perfil_fmt == 'Candidato') $tipoClass = 'tag-candidato';
                    else if ($perfil_fmt == 'Administrador') $tipoClass = 'tag-admin';
                    
                    $planoClass = '';
                    if ($plano_emp == 'Pago') $planoClass = 'tag-pago';
                    else if ($plano_emp == 'Gratuito') $planoClass = 'tag-gratuito';
                ?>
                    <div class="card card-historico">
                        <div class="card-header">
                            <h5 class="card-title mb-0"><?= htmlspecialchars($nome_usr) ?></h5>
                            <small class="text-muted d-block"><?= htmlspecialchars($email_usr) ?></small>
                        </div>
                        <div class="card-body">
                            <p class="card-text mb-1"><strong>Tipo Perfil:</strong> <span class="tag <?= $tipoClass ?>"><?= htmlspecialchars($perfil_fmt) ?></span></p>
                            <?php if ($plano_emp != 'N/A'): ?>
                            <p class="card-text mb-1"><strong>Plano:</strong> <span class="tag <?= $planoClass ?>"><?= htmlspecialchars($plano_emp) ?></span></p>
                            <?php endif; ?>
                            <p class="card-text mb-1"><strong>Página Acessada:</strong> <?= htmlspecialchars($linha['pagina_acessada']) ?></p>
                            
                            <p class="card-text mb-0">
                                <small class="text-muted"><strong>Data:</strong> <?= htmlspecialchars(date('d/m/Y H:i:s', strtotime($linha['data_acesso']))) ?></small>
                                
                                <?php if (!empty($linha['celular_usuario'])): ?>
                                    <div class="divider"></div>
                                    <?php $num_limpo = preg_replace('/\D/', '', $linha['celular_usuario']); ?>
                                    <strong>Contato:</strong> 
                                    <a href="https://api.whatsapp.com/send?phone=55<?= $num_limpo ?>" target="_blank" class="whatsapp-icon-link" title="Chamar no WhatsApp">
                                        <i class="fab fa-whatsapp"></i>
                                    </a>
                                <?php endif; ?>
                            </p>
                        </div>
                    </div>
                <?php endforeach; ?>
            </div>

        <?php else: ?>
            <div class="alert alert-info mt-4">
                <i class="fas fa-info-circle"></i> Nenhum registro de acesso encontrado para os filtros selecionados.
            </div>
        <?php endif; ?>
    </div>

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