<?php
// listar-anuncios-gratuito.php - Estrutura Original com Lógica de Trial (Sincronizada) + Filtro de Busca

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

// Verifica se o usuário está autenticado
if (!isset($_SESSION['id'], $_SESSION['role'])) {
    $_SESSION['mensagem_login'] = "Acesso restrito. Faça login para continuar.";
    header("Location: login.php");
    exit();
}

// Permitir Empresas e Administradores
$user_role = $_SESSION['role'] ?? '';
if ($user_role !== 'Administrador' && $user_role !== 'Administradores' && $user_role !== 'Empresas') {
    $_SESSION['mensagem_painel'] = "Você não tem permissão para acessar esta página.";
    $_SESSION['tipo_mensagem_painel'] = "danger";
    header("Location: " . ($user_role === 'Candidatos' ? 'painel-de-gestao-candidato.php' : 'login.php'));
    exit();
}

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

// Captura o termo de busca (se houver) e limpa para evitar XSS
$search = trim(strip_tags($_GET['search'] ?? ''));

// --- SINCRONIZAÇÃO DE CONFIGURAÇÕES VIA BANCO (3 CHAVES) ---
try {
    $stmt_cfg = $pdo->query("SELECT chave, valor FROM ConfiguracoesGerais WHERE chave IN ('limite_vagas_gratuitas', 'limite_anuncios_trial', 'periodo_dias_trial')");
    $configs = $stmt_cfg->fetchAll(PDO::FETCH_KEY_PAIR);
} catch (Exception $e) { $configs = []; }

// Chaves sincronizadas com o Painel ADM
$limite_candidaturas = (int)($configs['limite_vagas_gratuitas'] ?? 0);
$limite_total_anuncios_gratuitos = (int)($configs['limite_anuncios_trial'] ?? 2);
$periodo_dias_limite_gratuitos = (int)($configs['periodo_dias_trial'] ?? 60);

$anuncios_recentes_contagem = 0;
$anuncios_restantes_calculado = $limite_total_anuncios_gratuitos;
$data_primeiro_anuncio = null;

$anuncios_gratuitos_lista = [];
$mensagem_pagina_erro = null;

if (!$pdo) {
    error_log("Falha ao listar anúncios gratuitos: conexão PDO não disponível.");
    $mensagem_pagina_erro = "Erro crítico de sistema (DB). Não é possível listar os anúncios.";
} else {
    try {
        if ($user_role === 'Empresas') {
            $id_empresa_sessao = $_SESSION['id'];

            // 1. Buscar a data do primeiro anúncio (Gatilho do Prazo de Trial)
            $stmt_first = $pdo->prepare("SELECT MIN(data_criacao) FROM anuncio_gratuito WHERE id_empresa = ?");
            $stmt_first->execute([$id_empresa_sessao]);
            $data_primeiro_anuncio = $stmt_first->fetchColumn();

            // 2. Contar total de anúncios (OCULTOS OU NÃO) para consumir a cota permanentemente
            $sql_contar = "SELECT COUNT(*) as total FROM anuncio_gratuito WHERE id_empresa = :id_empresa";
            $stmt_contar = $pdo->prepare($sql_contar);
            $stmt_contar->bindParam(':id_empresa', $id_empresa_sessao, PDO::PARAM_INT);
            $stmt_contar->execute();
            
            $resultado_contagem = $stmt_contar->fetch(PDO::FETCH_ASSOC);
            $anuncios_recentes_contagem = $resultado_contagem ? (int)$resultado_contagem['total'] : 0;
            
            $anuncios_restantes_calculado = $limite_total_anuncios_gratuitos - $anuncios_recentes_contagem;
            if ($anuncios_restantes_calculado < 0) $anuncios_restantes_calculado = 0;

            // 3. Verificar se o prazo expirou a partir da primeira postagem
            if ($data_primeiro_anuncio) {
                $data_expiracao_trial = date('Y-m-d H:i:s', strtotime($data_primeiro_anuncio . " + $periodo_dias_limite_gratuitos days"));
                if (time() > strtotime($data_expiracao_trial)) {
                    $anuncios_restantes_calculado = 0; 
                }
            }
        }

        // --- LÓGICA DE BUSCA/FILTRO APLICADA AQUI ---
        if ($user_role === 'Administrador' || $user_role === 'Administradores') {
            $sql_select_anuncios = "SELECT ag.*, e.nome_empresa FROM anuncio_gratuito ag LEFT JOIN Empresas e ON ag.id_empresa = e.id WHERE ag.status = 'ativo'";
            
            if (!empty($search)) {
                $sql_select_anuncios .= " AND (ag.titulo_vaga LIKE :search OR ag.cidade_vaga LIKE :search OR e.nome_empresa LIKE :search)";
            }
            $sql_select_anuncios .= " ORDER BY ag.data_criacao DESC";
            
            $stmt_select_anuncios = $pdo->prepare($sql_select_anuncios);
            
            if (!empty($search)) {
                $stmt_select_anuncios->bindValue(':search', "%$search%", PDO::PARAM_STR);
            }
            $stmt_select_anuncios->execute();

        } else { // Para 'Empresas'
            $id_empresa_sessao = $_SESSION['id'];
            $sql_select_anuncios = "SELECT * FROM anuncio_gratuito WHERE id_empresa = :id_empresa AND status = 'ativo'";
            
            if (!empty($search)) {
                $sql_select_anuncios .= " AND (titulo_vaga LIKE :search OR cidade_vaga LIKE :search OR estado LIKE :search)";
            }
            $sql_select_anuncios .= " ORDER BY data_criacao DESC";
            
            $stmt_select_anuncios = $pdo->prepare($sql_select_anuncios);
            $stmt_select_anuncios->bindParam(':id_empresa', $id_empresa_sessao, PDO::PARAM_INT);
            
            if (!empty($search)) {
                $stmt_select_anuncios->bindValue(':search', "%$search%", PDO::PARAM_STR);
            }
            $stmt_select_anuncios->execute();
        }
        
        $anuncios_gratuitos_lista = $stmt_select_anuncios->fetchAll(PDO::FETCH_ASSOC);

    } catch (PDOException $e) {
        error_log("Erro PDO ao buscar anúncios gratuitos: " . $e->getMessage());
        $mensagem_pagina_erro = "Ocorreu um erro ao buscar os anúncios gratuitos. Por favor, tente mais tarde.";
    }
}

// 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] ?? 'desconhecido';
    $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: " . $e_log->getMessage());
    }
}
?>
<!DOCTYPE html>
<html lang="pt-br">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Anúncios Gratuitos - Self Lix 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>
        body { font-family: Arial, sans-serif; background-color: #f8f9fa; padding: 20px; }
        .container-main { max-width: 1200px; margin: 0 auto; background-color: #fff; padding: 25px; border-radius: 8px; box-shadow: 0 0 10px rgba(0,0,0,0.1); }
        h1 { text-align: center; margin-bottom: 30px; color: #12929e; font-size: 28px; }
        .info-box { background-color: #e7f3ff; padding: 15px; border-radius: 5px; margin-bottom: 20px; border-left: 4px solid #12929e; font-size: 0.95rem; }
        .cards { display: grid; grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); gap: 25px; }
        .card { background: white; border: 1px solid #e0e0e0; border-radius: 8px; padding: 0; box-shadow: 0 4px 8px rgba(0,0,0,0.05); display: flex; flex-direction: column; transition: transform 0.2s ease, box-shadow 0.2s ease; }
        .card:hover { transform: translateY(-5px); box-shadow: 0 8px 16px rgba(0,0,0,0.1); }
        .card-body { padding: 20px; flex-grow: 1; display: flex; flex-direction: column; }
        .card-title { font-size: 1.15rem; font-weight: bold; margin-bottom: 0.75rem; color: #12929e; }
        .card-info { font-size: 0.9rem; color: #555; margin-bottom: 0.3rem; }
        .card-info strong { color: #333; }
        .card-info .status { font-weight: bold; }
        .card-info .status-ativo { color: #198754; }
        .card-actions { margin-top: auto; padding-top: 15px; padding-bottom: 10px; border-top: 1px solid #f0f0f0; text-align: center; }
        .card-actions .btn { margin: 5px; font-size: 0.85rem; padding: 0.375rem 0.75rem; }
        .btn-delete { background-color: #dc3545; color:white; } .btn-delete:hover { background-color: #bb2d3b;}
        .btn-view { background-color: #12929e; color: white; } .btn-view:hover { background-color: #0e747e; color: white; }
        .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 .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; }
    </style>
</head>
<body>
<?php include 'menu.php'; ?><br><br>
<div class="container-main">
    <h1>Anúncios Gratuitos</h1>

    <div class="mb-3 d-flex justify-content-between align-items-center">
        <a href="<?php echo ($user_role === 'Administrador' || $user_role === 'Administradores') ? 'painel-adm.php' : 'painel-de-gestao-empresa.php'; ?>" class="btn btn-outline-secondary">
            <i class="fas fa-arrow-left"></i> Voltar ao Painel
        </a>
        <?php if ($user_role === 'Empresas'): ?>
            <?php if ($anuncios_restantes_calculado > 0): ?>
                <a href="criar-anuncio-gratuito.php" class="btn btn-primary"><i class="fas fa-plus-circle"></i> Criar Novo Anúncio Gratuito</a>
            <?php else: ?>
                <a href="#" class="btn btn-primary disabled" aria-disabled="true" onclick="event.preventDefault(); alert('Limite ou prazo atingido.'); return false;"><i class="fas fa-plus-circle"></i> Criar (Limite Atingido)</a>
            <?php endif; ?>
        <?php endif; ?>
    </div>

    <!-- Barra de Filtro / Busca -->
    <form method="GET" action="listar-anuncios-gratuito.php" class="mb-4 d-flex gap-2">
        <input type="text" name="search" class="form-control" placeholder="Buscar por título da vaga, cidade<?php echo ($user_role === 'Administrador' || $user_role === 'Administradores') ? ' ou empresa' : ''; ?>..." value="<?php echo htmlspecialchars($search); ?>">
        <button type="submit" class="btn btn-primary"><i class="fas fa-search"></i> Buscar</button>
        <?php if (!empty($search)): ?>
            <a href="listar-anuncios-gratuito.php" class="btn btn-outline-secondary">Limpar</a>
        <?php endif; ?>
    </form>

    <!-- Exibição de Alertas Gerais (Sucesso/Erro de Criação ou Exclusão) -->
    <?php if (isset($_SESSION['mensagem_sucesso_anuncio'])): ?>
        <div class="alert alert-success alert-dismissible fade show" role="alert">
            <i class="fas fa-check-circle"></i> <?php echo htmlspecialchars($_SESSION['mensagem_sucesso_anuncio']); unset($_SESSION['mensagem_sucesso_anuncio']); ?>
            <button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
        </div>
    <?php endif; ?>

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

    <?php if ($user_role === 'Empresas'): ?>
        <div class="info-box">
            <?php if ($data_primeiro_anuncio): ?>
                Você utilizou <strong><?php echo $anuncios_recentes_contagem; ?></strong> de <strong><?php echo $limite_total_anuncios_gratuitos; ?></strong> anúncios da sua cota única de teste.
                <br>Seu período de degustação expira em: <strong><?php echo date('d/m/Y', strtotime($data_primeiro_anuncio . " + $periodo_dias_limite_gratuitos days")); ?></strong>.
            <?php else: ?>
                Você tem direito a <strong><?php echo $limite_total_anuncios_gratuitos; ?></strong> anúncios gratuitos. O prazo de <strong><?php echo $periodo_dias_limite_gratuitos; ?> dias</strong> começará a contar após a sua primeira postagem.
            <?php endif; ?>
        </div>
    <?php endif; ?>

    <?php if (empty($anuncios_gratuitos_lista)): ?>
        <div class="alert alert-info text-center mt-4">
            Nenhum anúncio encontrado <?php echo !empty($search) ? 'para a busca: <strong>' . htmlspecialchars($search) . '</strong>' : ''; ?>.
        </div>
    <?php else: ?>
        <div class="cards">
            <?php foreach ($anuncios_gratuitos_lista as $anuncio): ?>
                <div class="card">
                    <div class="card-body">
                        <h5 class="card-title"><?php echo htmlspecialchars($anuncio['titulo_vaga']); ?></h5>
                        <?php if (($user_role === 'Administrador' || $user_role === 'Administradores') && isset($anuncio['nome_empresa'])): ?>
                            <p class="card-info"><strong>Empresa:</strong> <?php echo htmlspecialchars($anuncio['nome_empresa']); ?></p>
                        <?php endif; ?>
                        <p class="card-info"><strong>Local:</strong> <?php echo htmlspecialchars($anuncio['cidade_vaga'] ?? 'N/D'); ?>, <?php echo htmlspecialchars($anuncio['estado'] ?? 'N/D'); ?></p>
                        <p class="card-info"><strong>Publicado em:</strong> <small><?php echo date("d/m/Y", strtotime($anuncio['data_criacao'])); ?></small></p>
                        <p class="card-info"><strong>Status:</strong> <span class="status status-ativo">Ativo</span></p>
                    </div>
                    <div class="card-actions">
                        <a href="vaga-gratuita.php?id=<?php echo urlencode($anuncio['slug']); ?>" class="btn btn-sm btn-view" target="_blank">
                            <i class="fas fa-eye"></i> Visualizar
                        </a>

                        <?php if ($user_role === 'Administrador' || $user_role === 'Administradores'): ?>
                            <a href="editar-anuncio-gratuito.php?id=<?php echo $anuncio['id']; ?>" class="btn btn-sm btn-info" style="color:white;"><i class="fas fa-edit"></i> Editar</a>
                        <?php endif; ?>

                        <a href="#" class="btn btn-sm btn-delete" onclick="event.preventDefault(); abrirModalExclusao('deletar-anuncio-gratuito.php?id=<?php echo $anuncio['id']; ?>&csrf_token=<?php echo urlencode($csrf_token_for_delete); ?>');">
                            <i class="fas fa-trash-alt"></i> Excluir
                        </a>
                    </div>
                </div>
            <?php endforeach; ?>
        </div>
    <?php endif; ?>
</div>

<div class="modal-overlay" id="modalExclusao">
    <div class="modal-content">
        <span class="close-btn" onclick="fecharModalExclusao()">&times;</span>
        <h4>Exclusão do Anúncio!</h4>
        <p>Isso não liberará espaço em sua cota de teste.</p>
        <!-- Alterado para um <button> com chamada JS direta para garantir o redirecionamento -->
        <button type="button" class="btn-modal-white" onclick="confirmarExclusao()">Sim</button>
        <button type="button" class="btn-modal-white" onclick="fecharModalExclusao()">Não</button>
    </div>
</div>

<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/js/bootstrap.bundle.min.js"></script>
<script>
    let urlExclusaoAtual = ''; // Guarda a URL do anúncio selecionado

    function abrirModalExclusao(url) {
        urlExclusaoAtual = url;
        document.getElementById('modalExclusao').style.display = 'flex';
    }

    function confirmarExclusao() {
        if(urlExclusaoAtual !== '') {
            // Navega fisicamente para a URL, evitando qualquer conflito de link
            window.location.href = urlExclusaoAtual; 
        }
    }

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

    window.onclick = function(event) { 
        if (event.target == document.getElementById('modalExclusao')) {
            fecharModalExclusao(); 
        }
    }
</script>
</body>
</html>