<?php
session_start();
if (!isset($_SESSION['logado'])) { 
    header("Location: index.php"); exit; 
}
require_once 'conexao.php';

$isAdmin = (strtolower($_SESSION['nivel']) === 'admin');
$usuarioLogado = $_SESSION['usuario'];

// --- 1. BUSCA CONFIGURAÇÕES DO SITE (NOME E COR) ---
$nomePainel = "IPTV PANEL"; 
$corPrimaria = "#7367f0"; 
try {
    $conf = $connGeral->query("SELECT NomePainel, TemaPainel FROM site_config WHERE id=1 LIMIT 1")->fetch(PDO::FETCH_ASSOC);
    if ($conf) {
        if (!empty($conf['NomePainel'])) $nomePainel = $conf['NomePainel'];
        if (!empty($conf['TemaPainel'])) $corPrimaria = $conf['TemaPainel'];
    }
} catch (Exception $e) { }

$msg = ""; $msg_tipo = "";

// --- 2. PROCESSAMENTO DE AÇÕES ---
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    try {
        $acao = $_POST['acao'];
        $id   = (int)($_POST['id'] ?? 0);
        $nome = trim($_POST['nome'] ?? '');
        $perfil = (int)($_POST['perfil'] ?? 0);
        $url    = trim($_POST['url'] ?? '');
        $porta  = trim($_POST['porta'] ?? '');
        
        $filtroSeguranca = $isAdmin ? "" : " AND CadUser = '$usuarioLogado'";

        if ($acao === 'criar') {
            $sql = "INSERT INTO mascaraurl (CadUser, perfil, nome, url, porta, bloqueado) VALUES (?, ?, ?, ?, ?, 'nao')";
            $connGeral->prepare($sql)->execute([$usuarioLogado, $perfil, $nome, $url, $porta]);
            $msg = "Máscara <b>$nome</b> criada com sucesso!"; $msg_tipo = "success";
        }
        if ($acao === 'editar') {
            $sql = "UPDATE mascaraurl SET perfil=?, nome=?, url=?, porta=? WHERE id=? $filtroSeguranca";
            $connGeral->prepare($sql)->execute([$perfil, $nome, $url, $porta, $id]);
            $msg = "Máscara atualizada!"; $msg_tipo = "primary";
        }
        if ($acao === 'toggle_block') {
            $curr = $connGeral->query("SELECT bloqueado FROM mascaraurl WHERE id=$id $filtroSeguranca")->fetchColumn();
            if ($curr !== false) {
                $novo = ($curr == 'sim') ? 'nao' : 'sim';
                $connGeral->prepare("UPDATE mascaraurl SET bloqueado=? WHERE id=?")->execute([$novo, $id]);
                $msg = "Status da máscara alterado!"; $msg_tipo = "warning";
            }
        }
        if ($acao === 'excluir') {
            $connGeral->prepare("DELETE FROM mascaraurl WHERE id=? $filtroSeguranca")->execute([$id]);
            $msg = "Máscara removida!"; $msg_tipo = "danger";
        }
    } catch (PDOException $e) { $msg = "Erro: " . $e->getMessage(); $msg_tipo = "danger"; }
}

// --- 3. BUSCAS ---
// Busca máscaras vinculando com o nome do Perfil e separando por usuário logado
$whereLista = $isAdmin ? "" : " WHERE m.CadUser = '$usuarioLogado'";
$sql_lista = "SELECT m.*, p.nome as nome_perfil 
              FROM mascaraurl m 
              LEFT JOIN perfil p ON m.perfil = p.id 
              $whereLista
              ORDER BY m.id DESC";
$mascaras = $connGeral->query($sql_lista)->fetchAll(PDO::FETCH_ASSOC);

// Busca perfis ativos para o select do modal (Revendedor vê só o que pode vender)
$perfis_ativos = [];
if ($isAdmin) {
    $perfis_ativos = $connGeral->query("SELECT id, nome FROM perfil WHERE (bloqueado IS NULL OR bloqueado != 'sim') ORDER BY nome ASC")->fetchAll(PDO::FETCH_ASSOC);
} else {
    $st_rev = $connUser->prepare("SELECT perfil FROM rev WHERE usuario = ? LIMIT 1");
    $st_rev->execute([$usuarioLogado]);
    $perfil_liberado = $st_rev->fetchColumn();
    
    if (!empty($perfil_liberado)) {
        $nomes = explode(',', $perfil_liberado);
        $in_query = str_repeat('?,', count($nomes) - 1) . '?';
        $st_p = $connGeral->prepare("SELECT id, nome FROM perfil WHERE (bloqueado IS NULL OR bloqueado != 'sim') AND nome IN ($in_query) ORDER BY nome ASC");
        $st_p->execute($nomes);
        $perfis_ativos = $st_p->fetchAll(PDO::FETCH_ASSOC);
    }
}

// Para o sistema do topo
$total_msg_nao_lidas = 0;
try {
    $stmtMsg = $connUser->prepare("SELECT COUNT(*) FROM chamados_suporte WHERE destinatario = ? AND lida = 'nao'");
    $stmtMsg->execute([$usuarioLogado]);
    $total_msg_nao_lidas = $stmtMsg->fetchColumn();
} catch (Exception $e) { } 
?>

<!DOCTYPE html>
<html lang="pt-br">
<head>

<?php include 'tema_global.php'; ?>


    <meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
    <title>MÁSCARAS | <?= htmlspecialchars($nomePainel) ?></title>
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css" rel="stylesheet">
    <link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css" rel="stylesheet">
    <style>
        :root { --primary: <?= $corPrimaria ?>; --bg-body: #151521; --bg-card: #1e1e2d; --text-color: #d0d2d6; --border-color: #2b2b40; }
        body { background-color: var(--bg-body); color: var(--text-color); font-family: 'Segoe UI', sans-serif; overflow-x: hidden; margin: 0; padding: 0; }
        
        .sidebar { width: 260px; height: 100vh; position: fixed; background: var(--bg-card); border-right: 1px solid #333; z-index: 1050; padding: 20px; overflow-y: auto; transition: 0.3s; }
        .nav-link { color: #a6a6b7; padding: 12px 15px; border-radius: 8px; display: flex; align-items: center; gap: 12px; text-decoration: none; margin-bottom: 5px; font-weight: 500; transition: 0.2s; }
        .nav-link:hover, .nav-link.active { background: var(--primary); color: #fff; box-shadow: 0 4px 15px rgba(0,0,0,0.2); }
        .nav-group-title { font-size: 0.75rem; text-transform: uppercase; color: #5e5873; font-weight: 700; margin: 25px 0 10px 12px; letter-spacing: 1px; }
        
        .main-content { margin-left: 260px; transition: 0.3s; min-height: 100vh; }
        .top-header { background: linear-gradient(90deg, var(--bg-card) 0%, var(--primary) 100%); padding: 15px 30px; display: flex; align-items: center; justify-content: space-between; border-bottom: 1px solid rgba(255,255,255,0.1); }
        .header-title { font-size: 1.3rem; font-weight: 800; color: #fff; text-transform: uppercase; letter-spacing: 1px; }

        .card-custom { background: var(--bg-card) !important; border: 1px solid var(--border-color); border-radius: 12px; }
        .form-control, .form-select { background: #151521 !important; border: 1px solid #444 !important; color: #fff !important; }
        .table-responsive { background: var(--bg-card) !important; }
        .table-video { width: 100%; border-collapse: collapse; white-space: nowrap; }
        .table-video thead th { background: rgba(0,0,0,0.2) !important; color: #ffffff; text-transform: uppercase; font-weight: 700; font-size: 0.75rem; padding: 15px 12px; border-bottom: 1px solid var(--border-color); }
        .table-video td { width: 1% !important; white-space: nowrap !important; padding: 12px !important; border-bottom: 1px solid var(--border-color) !important; background: var(--bg-card) !important; color: #fff !important; vertical-align: middle !important; }
        
        .label-visivel { color: #ffffff !important; font-weight: 700; text-transform: uppercase; font-size: 0.75rem; }
        .nome-destaque { color: #ffffff !important; font-weight: 700; }
        
        .btn-sq { width: 32px; height: 32px; border-radius: 6px; border: none; color: #fff !important; display: inline-flex; align-items: center; justify-content: center; transition: 0.2s; box-shadow: 0 2px 4px rgba(0,0,0,0.3); }
        .bg-sq-blue { background-color: #00cfe8 !important; } 
        .bg-sq-purple { background-color: #7367f0 !important; } 
        .bg-sq-orange { background-color: #ff9f43 !important; } 
        .bg-sq-red { background-color: #ea5455 !important; }

        .status-dot { width: 8px; height: 8px; border-radius: 50%; display: inline-block; margin-right: 6px; }
        .online { background-color: #28c76f; box-shadow: 0 0 8px #28c76f; }
        .offline { background-color: #ea5455; box-shadow: 0 0 8px #ea5455; }

        @media (max-width: 992px) { .sidebar { transform: translateX(-100%); } .sidebar.show { transform: translateX(0); } .main-content { margin-left: 0; } .mobile-toggle { display: block !important; margin-right: 15px; position: absolute; left: 15px; top: 20px;} .header-title {margin:0 auto;} .top-header { flex-direction: column; padding: 20px 15px; } .top-header > .d-flex { width: 100%; justify-content: center; position: relative; } }
        .mobile-toggle { display: none; background: none; border: none; color: #fff; font-size: 1.5rem; z-index: 9999; cursor: pointer; }
        .overlay { display: none; position: fixed; inset: 0; background: rgba(0,0,0,0.5); z-index: 1040; }
        .overlay.show { display: block; }
    </style>
</head>
<body>
<?php include 'menu.php'; ?>


<main class="main-content">
    <div class="top-header">
        <div class="d-flex align-items-center w-100">
            <button class="mobile-toggle" onclick="toggleMenu()"><i class="fas fa-bars"></i></button>
            <div class="header-title">Máscaras URL</div>
        </div>
        <button class="btn btn-light btn-sm fw-bold px-3 rounded-pill shadow-sm mt-3 mt-lg-0" data-bs-toggle="modal" data-bs-target="#modalCriar" style="white-space: nowrap;">
            <i class="fas fa-plus me-1"></i> NOVO
        </button>
    </div>

    <div class="container-fluid p-2 p-md-4">
        <?php if($msg): ?><div class="alert alert-<?= $msg_tipo ?> alert-dismissible fade show border-0 shadow-sm mb-4"><?= $msg ?><button class="btn-close" data-bs-dismiss="alert"></button></div><?php endif; ?>

        <div class="card card-custom shadow-lg overflow-hidden">
            <div class="table-responsive">
                <table class="table table-video">
                    <thead>
                        <tr>
                            <th class="ps-4">Nome da Máscara</th>
                            <th>Perfil Vinculado</th>
                            <th>DNS Mascarado</th>
                            <th class="text-center">Porta</th>
                            <th>Status</th>
                            <th class="text-end pe-4">Ações</th>
                        </tr>
                    </thead>
                    <tbody>
                        <?php if(count($mascaras) > 0): ?>
                            <?php foreach($mascaras as $m): $is_block = ($m['bloqueado'] == 'sim'); ?>
                            <tr>
                                <td class="ps-4">
                                    <div class="d-flex align-items-center">
                                        <span class="status-dot <?= $is_block ? 'offline' : 'online' ?>"></span>
                                        <span class="nome-destaque <?= $is_block ? 'text-danger' : '' ?>"><?= htmlspecialchars($m['nome']) ?></span>
                                    </div>
                                </td>
                                <td><span class="badge bg-primary px-3 shadow-sm"><?= htmlspecialchars($m['nome_perfil'] ?? '---') ?></span></td>
                                <td class="fw-bold text-info"><?= htmlspecialchars($m['url']) ?></td>
                                <td class="text-center text-warning fw-bold"><?= htmlspecialchars($m['porta']) ?></td>
                                <td>
                                    <span class="badge <?= $is_block ? 'bg-danger' : 'bg-success' ?> p-2">
                                        <?= $is_block ? 'BLOQUEADO' : 'ATIVO' ?>
                                    </span>
                                </td>
                                <td class="text-end pe-4">
                                    <div class="d-flex gap-1 justify-content-end">
                                        <form method="POST" class="d-inline">
                                            <input type="hidden" name="acao" value="toggle_block"><input type="hidden" name="id" value="<?= $m['id'] ?>">
                                            <button class="btn-sq bg-sq-orange" title="Alterar Status"><i class="fas <?= $is_block ? 'fa-lock-open' : 'fa-lock' ?>"></i></button>
                                        </form>
                                        <button class="btn-sq bg-sq-blue" onclick='abrirEditar(<?= json_encode($m) ?>)' title="Editar"><i class="fas fa-pen"></i></button>
                                        <form method="POST" class="d-inline" onsubmit="return confirm('Excluir esta máscara?')">
                                            <input type="hidden" name="acao" value="excluir"><input type="hidden" name="id" value="<?= $m['id'] ?>">
                                            <button class="btn-sq bg-sq-red" title="Excluir"><i class="fas fa-trash"></i></button>
                                        </form>
                                    </div>
                                </td>
                            </tr>
                            <?php endforeach; ?>
                        <?php else: ?>
                            <tr><td colspan="6" class="text-center py-5 text-muted small">Nenhuma máscara cadastrada.</td></tr>
                        <?php endif; ?>
                    </tbody>
                </table>
            </div>
        </div>
    </div>
</main>

<div class="modal fade" id="modalCriar" tabindex="-1">
    <div class="modal-dialog modal-dialog-centered">
        <div class="modal-content bg-dark border-secondary">
            <form method="POST" id="formMascara">
                <input type="hidden" name="acao" value="criar" id="inputAcao">
                <input type="hidden" name="id" id="inputId">
                <div class="modal-header border-secondary text-white">
                    <h5 class="modal-title fw-bold" id="modalTitulo">Nova Máscara URL</h5>
                    <button type="button" class="btn-close btn-close-white" data-bs-dismiss="modal"></button>
                </div>
                <div class="modal-body p-4">
                    <div class="mb-3">
                        <label class="label-visivel mb-1">Nome da Máscara</label>
                        <input type="text" name="nome" id="nome" class="form-control" placeholder="Ex: DNS Claro HD" required>
                    </div>
                    <div class="mb-3">
                        <label class="label-visivel mb-1">Vincular ao Perfil</label>
                        <select name="perfil" id="perfil" class="form-select" required>
                            <option value="">Selecione o Perfil...</option>
                            <?php foreach($perfis_ativos as $p): ?>
                                <option value="<?= $p['id'] ?>"><?= htmlspecialchars($p['nome']) ?></option>
                            <?php endforeach; ?>
                        </select>
                        <div class="form-text text-white-50" style="font-size: 0.75rem;">Apenas os perfis liberados para você aparecerão aqui.</div>
                    </div>
                    <div class="row">
                        <div class="col-8 mb-3">
                            <label class="label-visivel mb-1">URL (DNS Mascarado)</label>
                            <input type="text" name="url" id="url" class="form-control" placeholder="dns.meuip.com" required>
                        </div>
                        <div class="col-4 mb-3">
                            <label class="label-visivel mb-1">Porta</label>
                            <input type="number" name="porta" id="porta" class="form-control" placeholder="80" required>
                        </div>
                    </div>
                </div>
                <div class="modal-footer border-secondary">
                    <button type="submit" class="btn btn-primary w-100 fw-bold py-2 shadow">SALVAR CONFIGURAÇÃO</button>
                </div>
            </form>
        </div>
    </div>
</div>

<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/js/bootstrap.bundle.min.js"></script>
<script>
    function toggleMenu() { document.getElementById('sidebar').classList.toggle('show'); document.getElementById('overlay').classList.toggle('show'); }
    
    function abrirEditar(m) {
        document.getElementById('inputAcao').value = 'editar'; 
        document.getElementById('inputId').value = m.id; 
        document.getElementById('modalTitulo').innerText = 'Editar Máscara URL';
        document.getElementById('nome').value = m.nome; 
        document.getElementById('perfil').value = m.perfil; 
        document.getElementById('url').value = m.url; 
        document.getElementById('porta').value = m.porta;
        new bootstrap.Modal(document.getElementById('modalCriar')).show();
    }

    document.getElementById('modalCriar').addEventListener('hidden.bs.modal', function () { 
        document.getElementById('formMascara').reset(); 
        document.getElementById('inputAcao').value = 'criar'; 
        document.getElementById('modalTitulo').innerText = 'Nova Máscara URL'; 
    });
</script>
</body>
</html>
