<?php
session_start();
require_once 'config.php'; 

$pdo = getConexaoAtiva();

// --- LÓGICA DE AUTO-CORREÇÃO AUTOMÁTICA DO BANCO ---
try {
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    $check_p2p = $pdo->query("SHOW COLUMNS FROM `users` LIKE 'is_p2p'");
    if (!$check_p2p->fetch()) {
        $pdo->exec("ALTER TABLE `users` ADD COLUMN `is_p2p` INT DEFAULT 0 AFTER `enabled`");
    }
    
    // VERIFICA E CRIA COLUNA DE ULTIMA ATIVIDADE E CANAL ATUAL
    $check_last = $pdo->query("SHOW COLUMNS FROM `users` LIKE 'last_activity'");
    if (!$check_last->fetch()) {
        $pdo->exec("ALTER TABLE `users` ADD COLUMN `last_activity` INT(11) DEFAULT 0");
    }
    
    $check_channel = $pdo->query("SHOW COLUMNS FROM `users` LIKE 'current_channel'");
    if (!$check_channel->fetch()) {
        $pdo->exec("ALTER TABLE `users` ADD COLUMN `current_channel` INT(11) DEFAULT NULL");
    }
} catch (PDOException $e) {}

// --- INÍCIO: BUSCA DE PERSONALIZAÇÃO DINÂMICA ---
$nome_painel = 'TOP IPTV';
$logo_url = '';
$cor_primaria = '#007bff';

try {
    $pdo_interno = getConexaoInterna();
    $tabela_existe = $pdo_interno->query("SHOW TABLES LIKE 'painel_config'")->rowCount() > 0;
    if ($tabela_existe) {
        $config_painel = $pdo_interno->query("SELECT * FROM painel_config LIMIT 1")->fetch(PDO::FETCH_ASSOC);
        if ($config_painel) {
            $nome_painel = !empty($config_painel['nome_painel']) ? $config_painel['nome_painel'] : $nome_painel;
            $logo_url = !empty($config_painel['logo_url']) ? $config_painel['logo_url'] : $logo_url;
            $cor_primaria = !empty($config_painel['cor_primaria']) ? $config_painel['cor_primaria'] : $cor_primaria;
        }
    }
} catch (Exception $e) { }

// --- LÓGICA DE VERIFICAÇÃO DA API BINSTREAM ---
$api_conf = ['api_binstream_url' => ''];
try {
    $pdo_interno = getConexaoInterna();
    $api_conf = $pdo_interno->query("SELECT api_binstream_url FROM painel_config LIMIT 1")->fetch(PDO::FETCH_ASSOC) ?: ['api_binstream_url' => ''];
} catch (Exception $e) {}
// --- FIM: BUSCA DE PERSONALIZAÇÃO DINÂMICA ---

if (!isset($_SESSION['user_id'])) { header("Location: login.php"); exit; }

$role = $_SESSION['user_role'] ?? 'reseller'; 
$nome_usuario = $_SESSION['username'] ?? 'Usuário';
$user_id_logado = $_SESSION['user_id'];

// ==============================================================================
// --- MINI API DE RENOVAÇÃO RÁPIDA (COM POPUP NOVO) ---
// ==============================================================================
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['acao_renovar']) && $_POST['acao_renovar'] === 'true') {
    header('Content-Type: application/json');
    $id_cliente = (int)$_POST['id_cliente'];
    
    try {
        $check_owner = ($role === 'admin') ? "" : " AND member_id = $user_id_logado";
        $stmtC = $pdo->query("SELECT * FROM users WHERE id = $id_cliente $check_owner");
        $uData = $stmtC->fetch(PDO::FETCH_ASSOC);

        if (!$uData) { echo json_encode(['erro' => true, 'msg' => 'Cliente não encontrado ou sem permissão']); exit; }

        if ($role !== 'admin') {
            $creditos = $pdo->query("SELECT credits FROM reg_users WHERE id = $user_id_logado")->fetchColumn();
            if ($creditos < 1) { echo json_encode(['erro' => true, 'msg' => 'Sem saldo de créditos']); exit; }
            $pdo->prepare("UPDATE reg_users SET credits = credits - 1 WHERE id = ?")->execute([$user_id_logado]);
        }

        $nova_data = ($uData['exp_date'] > time()) ? $uData['exp_date'] + (30 * 86400) : time() + (30 * 86400);
        $pdo->prepare("UPDATE users SET exp_date = ?, enabled = 1 WHERE id = ?")->execute([$nova_data, $id_cliente]);

        echo json_encode(['erro' => false, 'nova_data' => date('d/m/Y', $nova_data)]);
    } catch (Exception $e) {
        echo json_encode(['erro' => true, 'msg' => 'Erro interno']);
    }
    exit;
}
// ==============================================================================

try {
    $user_credits = $pdo->query("SELECT credits FROM reg_users WHERE id = " . intval($user_id_logado))->fetchColumn() ?: 0;
    
    // Filtro para queries
    $filtro_and = ($role === 'admin') ? "" : "AND member_id = $user_id_logado";

    // --- CONTADORES IPTV (is_p2p = 0 ou NULL) ---
    $total_clientes = $pdo->query("SELECT COUNT(id) FROM users WHERE (is_p2p = 0 OR is_p2p IS NULL) $filtro_and")->fetchColumn();
    // Pagantes = Ativos + Validade ilimitada ou Validade maior que 48 horas (172800 seg)
    $clientesAtivos = $pdo->query("SELECT COUNT(id) FROM users WHERE enabled = 1 AND (exp_date IS NULL OR (exp_date - UNIX_TIMESTAMP()) >= 172800) AND (is_p2p = 0 OR is_p2p IS NULL) $filtro_and")->fetchColumn();
    // Testes = Menor que 48h e maior que data atual
    $testesTotal    = $pdo->query("SELECT COUNT(id) FROM users WHERE (exp_date - UNIX_TIMESTAMP()) < 172800 AND exp_date > UNIX_TIMESTAMP() AND (is_p2p = 0 OR is_p2p IS NULL) $filtro_and")->fetchColumn();
    
    // --- CONTADORES P2P (is_p2p = 1) ---
    $p2p_total  = $pdo->query("SELECT COUNT(id) FROM users WHERE is_p2p = 1 $filtro_and")->fetchColumn();
    $p2p_ativos = $pdo->query("SELECT COUNT(id) FROM users WHERE enabled = 1 AND (exp_date IS NULL OR (exp_date - UNIX_TIMESTAMP()) >= 172800) AND is_p2p = 1 $filtro_and")->fetchColumn();
    $p2p_testes = $pdo->query("SELECT COUNT(id) FROM users WHERE (exp_date - UNIX_TIMESTAMP()) < 172800 AND exp_date > UNIX_TIMESTAMP() AND is_p2p = 1 $filtro_and")->fetchColumn();

    // --- CLIENTES ONLINE (Nos últimos 35 segundos - MODO HEARTBEAT) ---
    $time_limit = time() - 35; // 35 segundos atrás
    $clientes_online = $pdo->query("SELECT COUNT(id) FROM users WHERE last_activity >= $time_limit AND (is_p2p = 0 OR is_p2p IS NULL) $filtro_and")->fetchColumn();

    $totalRevendas = 0;
    $liveStreams = 0;

    if ($role === 'admin') {
        $totalRevendas = $pdo->query("SELECT COUNT(id) FROM reg_users WHERE member_group_id != 1")->fetchColumn();
        // Conta APENAS canais onde direct_source = 0 (ou seja, estão em LIVE no servidor)
        $liveStreams = $pdo->query("SELECT COUNT(id) FROM streams WHERE type = 1 AND (direct_source = 0 OR direct_source IS NULL)")->fetchColumn();
    }
    
    // --- DADOS DINÂMICOS BINSTREAM ---
    $bin_ativos = 0; 
    $bin_testes = 0; 
    $bin_vencidos = 0;
    
    // Só pesquisa no banco do Binstream se a API estiver configurada
    if (!empty($api_conf['api_binstream_url'])) {
        try {
            $pdo_interno = getConexaoInterna(); // Usa a conexão interna onde está a tabela binstream_clientes
            $bin_ativos = $pdo_interno->query("SELECT COUNT(id) FROM binstream_clientes WHERE status = 'ativo' AND vencimento > NOW()")->fetchColumn();
            $bin_testes = $pdo_interno->query("SELECT COUNT(id) FROM binstream_clientes WHERE status = 'ativo' AND vencimento > NOW() AND vencimento < DATE_ADD(NOW(), INTERVAL 24 HOUR)")->fetchColumn();
            $bin_vencidos = $pdo_interno->query("SELECT COUNT(id) FROM binstream_clientes WHERE vencimento < NOW()")->fetchColumn();
        } catch (Exception $e) {}
    }
    // ---------------------------------

    // --- VENCIMENTOS PRÓXIMOS 7 DIAS (SOMENTE IPTV NO DASHBOARD - EXCLUI TESTES > 48h) ---
    $sql_venc = "SELECT id, username, password, exp_date, whatsapp FROM users WHERE exp_date >= (UNIX_TIMESTAMP() + 172800) AND exp_date <= (UNIX_TIMESTAMP() + (7 * 86400)) AND enabled = 1 AND (is_p2p = 0 OR is_p2p IS NULL) $filtro_and ORDER BY exp_date ASC LIMIT 50";
    $lista_vencendo_bd = $pdo->query($sql_venc)->fetchAll(PDO::FETCH_ASSOC);
    
    $lista_vencimentos_formatada = [];
    foreach($lista_vencendo_bd as $r) {
        $lista_vencimentos_formatada[] = [
            'id'    => $r['id'],
            'user'  => $r['username'],
            'pass'  => $r['password'],
            'nome'  => $r['username'],
            'phone' => preg_replace('/[^0-9]/', '', (string)$r['whatsapp']),
            'data'  => date('d/m/Y H:i', $r['exp_date'])
        ];
    }

} catch (Exception $e) { 
    $total_clientes = $totalRevendas = $user_credits = $liveStreams = $testesTotal = $clientesAtivos = $p2p_total = $p2p_ativos = $p2p_testes = $clientes_online = 0; 
    $lista_vencimentos_formatada = []; 
}

?>
<!DOCTYPE html>
<html lang="pt-BR">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
    <title>Dashboard - <?php echo htmlspecialchars($nome_painel); ?></title>
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
    <script src="https://cdn.jsdelivr.net/npm/sweetalert2@11"></script>
    <script src="https://cdn.jsdelivr.net/npm/apexcharts"></script>
    <style>
        :root { --bg-dark: #121519; --bg-sidebar: #1e2227; --bg-card: #272c33; --text-main: #d1d5da; --text-muted: #8a94a1; --accent: <?php echo $cor_primaria; ?>; --border-color: #3a4149; --success: #28a745; --danger: #dc3545; }
        body { margin: 0; font-family: 'Segoe UI', sans-serif; background-color: var(--bg-dark); color: var(--text-main); display: flex; height: 100vh; overflow: hidden; }
        
        .sidebar { width: 260px; background-color: var(--bg-sidebar); display: flex; flex-direction: column; transition: 0.3s; border-right: 1px solid var(--border-color); z-index: 1001; flex-shrink: 0; }
        .sidebar-header { padding: 25px 20px; text-align: center; font-size: 22px; font-weight: bold; color: white; border-bottom: 1px solid var(--border-color); }
        .sidebar-logo { max-width: 180px; max-height: 55px; object-fit: contain; }
        .user-info { padding: 20px; text-align: center; border-bottom: 1px solid var(--border-color); }
        .user-info .badge { background: rgba(255, 255, 255, 0.05); color: var(--accent); padding: 4px 10px; border-radius: 4px; font-size: 11px; text-transform: uppercase; font-weight: bold; margin-top: 5px; display: inline-block; }
        .credits-badge { display: block; margin-top: 10px; color: var(--success); font-weight: bold; font-size: 13px; }
        
        .menu-list { list-style: none; padding: 0; margin: 0; overflow-y: auto; flex: 1; }
        .menu-item { padding: 14px 20px; color: var(--text-main); text-decoration: none; display: flex; align-items: center; transition: 0.2s; border-left: 3px solid transparent; font-size: 14px; cursor: pointer; }
        .menu-item i:first-child { margin-right: 12px; width: 20px; text-align: center; color: var(--text-muted); }
        .menu-item:hover, .menu-item.active { background-color: #2c3138; color: white; border-left-color: var(--accent); }
        .menu-item.active i:first-child { color: var(--accent); }
        
        .submenu { display: none; background: #16191d; list-style: none; padding: 0; margin: 0; }
        .submenu .menu-item { padding-left: 52px; font-size: 13px; border-left: none; }
        .arrow-icon { margin-left: auto; transition: 0.3s; font-size: 11px; }
        .rotate { transform: rotate(180deg); }
        .menu-category { padding: 20px 20px 8px; font-size: 10px; text-transform: uppercase; color: var(--text-muted); font-weight: bold; letter-spacing: 1px; }
        .logout-btn { padding: 15px; background-color: #dc3545; color: white; text-align: center; text-decoration: none; font-weight: bold; }

        .main-content { flex: 1; display: flex; flex-direction: column; overflow-y: auto; width: 100%; position: relative; }
        .topbar { display: flex; justify-content: space-between; align-items: center; padding: 15px 30px; background-color: var(--bg-sidebar); border-bottom: 1px solid var(--border-color); }
        .menu-toggle { display: none; background: none; border: none; color: white; font-size: 22px; cursor: pointer; padding: 5px; }
        .mode-badge { padding: 6px 15px; background: rgba(40, 167, 69, 0.15); color: var(--success); border-radius: 20px; font-size: 12px; font-weight: bold; border: 1px solid var(--success); }
        
        .content-area { padding: 20px; flex: 1; }
        .section-header { display: flex; align-items: center; margin: 15px 0 15px 0; font-size: 16px; font-weight: 700; color: white; border-bottom: 1px solid var(--border-color); padding-bottom: 8px; }
        .section-header i { margin-right: 10px; font-size: 18px; }
        .text-iptv { color: #0ea5e9; } .text-p2p { color: #22c55e; } .text-yellow { color: #facc15; } 
        
        .grid-cards { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 15px; margin-bottom: 25px; }
        .app-card { background-color: var(--bg-card); border-radius: 8px; padding: 20px; display: flex; justify-content: space-between; align-items: center; border: 1px solid var(--border-color); transition: 0.2s; }
        .app-card:hover { transform: translateY(-3px); box-shadow: 0 5px 15px rgba(0,0,0,0.3); }
        .card-icon { font-size: 35px; }
        .icon-cyan { color: #0ea5e9; } .icon-green { color: #22c55e; } .icon-yellow { color: #facc15; } .icon-red { color: #ef4444; } .icon-orange { color: #f59e0b; } .icon-purple { color: #8b5cf6; }
        .card-number { font-size: 28px; font-weight: 800; color: white; line-height: 1; display: block; margin-bottom: 4px; text-align: right; }
        .card-label { font-size: 11px; text-transform: uppercase; color: var(--text-muted); font-weight: 700; text-align: right; display: block; }
        
        .chart-card, .table-card { background-color: var(--bg-card); border: 1px solid var(--border-color); border-radius: 8px; padding: 20px; margin-bottom: 20px; }
        .table-header-custom, .table-row-custom { display: flex; justify-content: space-between; align-items: center; padding: 12px 0; border-bottom: 1px solid var(--border-color); color: var(--text-main); }
        .table-header-custom { font-weight: bold; color: var(--text-muted); font-size: 11px; text-transform: uppercase; border-bottom: 2px solid var(--border-color); }
        
        .paginacao-controles { display: flex; justify-content: center; align-items: center; gap: 15px; margin-top: 15px; }
        .btn-pag { background: var(--bg-sidebar); border: 1px solid var(--border-color); color: white; padding: 6px 14px; border-radius: 4px; cursor: pointer; transition: 0.2s; }
        .btn-pag:hover { background: var(--accent); border-color: var(--accent); }
        .btn-pag:disabled { opacity: 0.3; cursor: not-allowed; }
        
        .btn-action { border: none; width: 35px; height: 35px; border-radius: 5px; cursor: pointer; color: white; margin-left: 5px; font-size: 14px; display: inline-flex; align-items: center; justify-content: center; }
        .btn-wpp { background-color: #25D366; } .btn-wpp:hover { filter: brightness(1.1); }
        .btn-ren { background-color: #0ea5e9; } .btn-ren:hover { filter: brightness(1.1); }

        .sidebar-overlay { display: none; position: fixed; top: 0; left: 0; width: 100%; height: 100%; background: rgba(0,0,0,0.7); z-index: 1000; }

        @media (max-width: 768px) {
            .menu-toggle { display: block; }
            .sidebar { position: fixed; left: -260px; height: 100%; box-shadow: 10px 0 20px rgba(0,0,0,0.5); }
            .sidebar.active { left: 0; }
            .sidebar-overlay.active { display: block; }
            .topbar { padding: 15px; }
            .content-area { padding: 15px; }
        }
    </style>
</head>
<body>
    <div class="sidebar-overlay" id="overlay"></div>
    <nav class="sidebar" id="sidebar">
        <div class="sidebar-header">
            <?php if(!empty($logo_url) && file_exists($logo_url)): ?>
                <img src="<?php echo htmlspecialchars($logo_url); ?>" alt="Logo" class="sidebar-logo">
            <?php else: ?>
                <?php echo htmlspecialchars($nome_painel); ?>
            <?php endif; ?>
        </div>
        <div class="user-info">
            <div style="color:white; font-size: 14px;">Olá, <strong><?php echo htmlspecialchars($nome_usuario); ?></strong></div>
            <span class="badge"><?php echo $role === 'admin' ? 'Administrador' : 'Revendedor'; ?></span>
            <div class="credits-badge"><i class="fas fa-coins"></i> Saldo: <?php echo number_format($user_credits, 1); ?></div>
        </div>
        
        <div class="menu-list">
            <a href="dashboard.php" class="menu-item active"><i class="fas fa-chart-line"></i> Dashboard</a>
            <a href="perfil.php" class="menu-item active"><i class="fas fa-user-circle"></i> Meu Perfil</a>
            
            <a href="lancamentos.php" class="menu-item active"><i class="fas fa-fire"></i> Últimos Adicionados</a>
            
            <a href="ajuda.php" class="menu-item active"><i class="fas fa-question-circle"></i> Material de Ajuda</a>
            <a href="meus_links.php" class="menu-item active"><i class="fas fa-link" style="color: var(--accent);"></i> Central de Links</a>
            
            <div class="menu-category">Gestão</div>
            <a href="clientes.php" class="menu-item active"><i class="fas fa-users"></i> Clientes IPTV</a>
            <a href="testes.php" class="menu-item active"><i class="fas fa-vial"></i> Gerenciar Testes</a>
            <a href="online.php" class="menu-item active"><i class="fas fa-plug"></i> Clientes Online</a>
            <a href="revendedores.php" class="menu-item active"><i class="fas fa-user-tie"></i> Revendedores</a>
            <a href="migrar_clientes.php" class="menu-item active"><i class="fas fa-exchange-alt"></i> Migrar Clientes</a>
            <a href="logs_creditos.php" class="menu-item active"><i class="fas fa-list-alt"></i> Extrato de Créditos</a>
            <a href="marketing.php" class="menu-item active"><i class="fas fa-bullhorn"></i> Central de Marketing</a>
            
            
            <div class="menu-category">Clientes P2P</div>
            <a href="p2p_clientes.php" class="menu-item active"><i class="fas fa-tv"></i> Clientes P2P</a>
            
            <?php if (!empty($api_conf['api_binstream_url'])): ?>
                <a href="binstream_p2p.php" class="menu-item active"><i class="fas fa-tv"></i> Binstream P2P</a>
            <?php endif; ?>

 <?php if($role === 'admin'): ?>
<div class="menu-category">Gerar Licença</div>
<a href="admin_licencas.php" class="menu-item active"> <i class="fas fa-key" style="color: #28a745;"></i> <span>Gerador SaaS</span> </a>
<?php endif; ?>

<div class="menu-category">Api WhatsApp</div>
                <a href="integracoes_api_whatsapp.php" class="menu-item active"><i class="fas fa-plug"></i> Integrações API WhatsApp</a>


            <div class="menu-category">Integração & Cobrança</div>
            <a href="pagamentos.php" class="menu-item active"><i class="fas fa-dollar-sign"></i> Pagamento Automático</a>
            <a href="cobranca.php" class="menu-item active"><i class="fas fa-comment-dollar"></i> Central de Cobrança</a>
            <a href="admin_planos.php" class="menu-item active"><i class="fas fa-tags"></i> Meus Planos de Venda</a>
            <a href="comprar_creditos.php" class="menu-item active"><i class="fas fa-shopping-cart"></i> Comprar Créditos</a>
          
            <div class="menu-item active" onclick="toggleSubmenu('appsSub')">
                <i class="fas fa-rocket"></i><span>Aplicações</span><i class="fas fa-chevron-down arrow-icon" id="arrow-appsSub"></i>

            </div>
            <div class="submenu" id="appsSub">
                <a href="loja_apps.php" class="menu-item active"><i class="fas fa-store"></i> Loja de Aplicativos</a>
                <?php if($role === 'admin'): ?>
                    <a href="admin_loja.php" class="menu-item active"><i class="fas fa-cogs"></i> Gerenciar Loja</a>
                <?php endif; ?>
                <a href="chatbot.php" class="menu-item active"><i class="fab fa-whatsapp"></i> Chatbot Automático</a>
            </div>
           <a href="admin_player_revenda.php" class="menu-item active"><i class="fas fa-play-circle"></i> WebPlayer</a>
            
   <div class="menu-category">Segurança</div>
            <a href="historico_logins.php" class="menu-item active"><i class="fas fa-shield-alt"></i> Sessões Ativas</a>

            <?php if($role === 'admin'): ?>
                <div class="menu-category">Administração</div>
                <a href="admin_monitor.php" class="menu-item active"><i class="fas fa-heartbeat"></i> Monitor do Servidor</a>
                <a href="admin_template.php" class="menu-item active"><i class="fas fa-edit"></i> Editor de Template</a>
                <a href="admin_token.php" class="menu-item active"><i class="fas fa-user-secret"></i> Token Links Xui</a>
                <a href="admin_lb.php" class="menu-item active"><i class="fas fa-server"></i> Load Balancers</a>
                <a href="guia_cloudflare.php" class="menu-item active"><i class="fas fa-cloud"></i> Guia Cloudflare</a>
                 <a href="admin_loja_creditos.php" class="menu-item active"><i class="fas fa-store"></i> Configurar Loja (PIX)</a>
                 <a href="integracoes_api.php" class="menu-item active"><i class="fas fa-plug"></i> Integrações API</a>
                 <a href="admin_robo.php" class="menu-item active"><i class="fas fa-robot"></i> Robô de Cobrança</a>
                 <a href="admin_anti_bloqueio.php" class="menu-item active"><i class="fas fa-bolt"></i> Botão de Pânico</a>
                 <a href="admin_anti_fraude.php" class="menu-item active"><i class="fas fa-user-secret"></i> Radar Anti-Fraude</a>  
                 <a href="admin_watchdog.php" class="menu-item active"><i class="fas fa-dog"></i> Watchdog LB</a>  
                 
                 <a href="admin_epg_sync.php" class="menu-item active">
        <i class="fas fa-clock"></i> Sincronizar EPG
    </a>
    

 <div class="menu-item active" onclick="toggleSubmenu('painelSub')">
                    <i class="fas fa-desktop"></i><span>Painel</span><i class="fas fa-chevron-down arrow-icon" id="arrow-painelSub"></i>
                </div>
                <div class="submenu" id="painelSub">
                    <a href="personalizacao.php" class="menu-item active"><i class="fas fa-paint-brush"></i> Personalização</a>
                </div>
             
                <div class="menu-item active" onclick="toggleSubmenu('adminSub')">
                    <i class="fas fa-toolbox"></i><span>Ferramentas</span><i class="fas fa-chevron-down arrow-icon" id="arrow-adminSub"></i>
                </div>
                <div class="submenu" id="adminSub">
                    <a href="importar.php" class="menu-item active"><i class="fas fa-file-import"></i> Importador</a>
                    <a href="importar3.php" class="menu-item active"><i class="fas fa-file-import"></i> Importador Turbo</a>
                    <a href="dns_manager.php" class="menu-item active"><i class="fas fa-link"></i> Alterar DNS</a>
                    <a href="admin_logos.php" class="menu-item active"><i class="fas fa-image"></i> Alterar Logos</a>
                    <a href="mover_conteudos.php" class="menu-item active"><i class="fas fa-exchange-alt"></i> Mover Conteúdos</a>
                    <a href="limpeza.php" class="menu-item active"><i class="fas fa-trash-alt"></i> Limpeza de Dados</a>
                    <a href="limpar_duplicados.php" class="menu-item active"><i class="fas fa-copy"></i> Limpeza de Duplicados</a>
                    <a href="backup.php" class="menu-item active"><i class="fas fa-database"></i> Backup do Sistema</a>
                    <a href="seguranca.php" class="menu-item active"><i class="fas fa-shield-alt"></i> Sistema de Segurança</a>
                    <a href="configuracoes.php" class="menu-item active"><i class="fas fa-tools"></i> Configurações</a>
                </div>

                 <?php if($role === 'admin'): ?>
    <div class="menu-category">Financeiro</div>
     <!-- NOVO MENU FINANCEIRO COM SUBMENU -->
            <div class="menu-item active" onclick="toggleSubmenu('finSub')">
                <i class="fas fa-hand-holding-usd"></i><span>Financeiro</span><i class="fas fa-chevron-down arrow-icon rotate" id="arrow-finSub"></i>
            </div>
            <div class="submenu" id="finSub" style="display: block;">
                <a href="financeiro.php" class="menu-item active">Faturamento</a>
            </div>
    
    <?php endif; ?>

                <div class="menu-category">Conteúdos</div>
                <a href="categorias.php" class="menu-item active"><i class="fas fa-folder-open"></i><span>Categorias</span></a>
                <div class="menu-item active" onclick="toggleSubmenu('contentSub')">
                    <i class="fas fa-layer-group"></i><span>Mídias</span><i class="fas fa-chevron-down arrow-icon" id="arrow-contentSub"></i>
                </div>
                <div class="submenu" id="contentSub">
                    <a href="bouquets.php" class="menu-item active">Editar Bouquets</a>
                    <a href="canais.php" class="menu-item active">Canais Ao Vivo</a>
                    <a href="filmes.php" class="menu-item active">Filmes (VOD)</a>
                    <a href="series.php" class="menu-item active">Séries</a>
                </div>
                 <a href="admin_autofix_vod.php" class="menu-item active"><i class="fas fa-magic"></i> Auto-Fix TMDB</a>
            <?php endif; ?>
        </div>
        <a href="logout.php" class="logout-btn"><i class="fas fa-power-off"></i> Sair</a>
    </nav>

    <div class="main-content">
        <header class="topbar">
            <button class="menu-toggle" onclick="toggleMenu()"><i class="fas fa-bars"></i></button>
            <h2 style="margin:0; font-size: 18px; color:white;">Dashboard</h2>
            <div class="topbar-right">
                <span class="mode-badge"><i class="fas fa-database"></i> <?php echo strtoupper(MODO_SISTEMA); ?></span>
            </div>
        </header>

        <div class="content-area">

            <div class="section-header"><i class="fas fa-desktop text-iptv"></i> <span>Clientes IPTV</span></div>
            <div class="grid-cards">
                <div class="app-card">
                    <div class="card-icon icon-cyan"><i class="fas fa-users"></i></div>
                    <div class="card-data"><span class="card-number"><?php echo $total_clientes; ?></span><span class="card-label">Total Clientes</span></div>
                </div>
                
                <div class="app-card" style="border-left: 4px solid #28a745;">
                    <div class="card-icon icon-green"><i class="far fa-check-circle"></i></div>
                    <div class="card-data"><span class="card-number"><?php echo $clientesAtivos; ?></span><span class="card-label">Ativos (Pagantes)</span></div>
                </div>
                
                <div class="app-card" style="border-left: 4px solid #facc15;">
                    <div class="card-icon icon-yellow"><i class="fas fa-clock"></i></div>
                    <div class="card-data"><span class="card-number"><?php echo $testesTotal; ?></span><span class="card-label">Total de Testes</span></div>
                </div>
                
                <div class="app-card" style="border-left: 4px solid #17a2b8;">
                    <div class="card-icon" style="color: #17a2b8;"><i class="fas fa-plug"></i></div>
                    <div class="card-data"><span class="card-number"><?php echo $clientes_online; ?></span><span class="card-label">Clientes Online</span></div>
                </div>
                
            </div>

            <div class="section-header"><i class="fas fa-share-alt text-p2p"></i> <span>Clientes P2P</span></div>
            <div class="grid-cards">
                <div class="app-card" style="border-left: 4px solid #22c55e;">
                    <div class="card-icon icon-cyan"><i class="fas fa-users"></i></div>
                    <div class="card-data"><span class="card-number"><?php echo $p2p_total; ?></span><span class="card-label">Total P2P</span></div>
                </div>
                <div class="app-card" style="border-left: 4px solid #22c55e;">
                    <div class="card-icon icon-green"><i class="fas fa-check-circle"></i></div>
                    <div class="card-data"><span class="card-number"><?php echo $p2p_ativos; ?></span><span class="card-label">P2P Ativos</span></div>
                </div>
                <div class="app-card" style="border-left: 4px solid #8b5cf6;">
                    <div class="card-icon icon-purple"><i class="fas fa-clock"></i></div>
                    <div class="card-data"><span class="card-number"><?php echo $p2p_testes; ?></span><span class="card-label">Testes P2P</span></div>
                </div>
            </div>

            <?php if (!empty($api_conf['api_binstream_url'])): ?>
            <div class="section-header"><i class="fas fa-satellite-dish" style="color: #8b5cf6;"></i> <span style="color:white;">Clientes Binstream</span></div>
            <div class="grid-cards">
                <div class="app-card" style="border-left: 4px solid #8b5cf6;">
                    <div class="card-icon" style="color: #8b5cf6;"><i class="fas fa-check-circle"></i></div>
                    <div class="card-data"><span class="card-number"><?php echo $bin_ativos; ?></span><span class="card-label">Ativos Binstream</span></div>
                </div>
                <div class="app-card" style="border-left: 4px solid #f59e0b;">
                    <div class="card-icon icon-orange"><i class="fas fa-clock"></i></div>
                    <div class="card-data"><span class="card-number"><?php echo $bin_testes; ?></span><span class="card-label">Testes Binstream</span></div>
                </div>
                <div class="app-card" style="border-left: 4px solid #dc3545;">
                    <div class="card-icon icon-red"><i class="fas fa-times-circle"></i></div>
                    <div class="card-data"><span class="card-number"><?php echo $bin_vencidos; ?></span><span class="card-label">Vencidos Binstream</span></div>
                </div>
            </div>
            <?php endif; ?>

            <?php if ($role === 'admin'): ?>
            <div class="section-header"><i class="fas fa-cogs text-yellow"></i> <span>Sistema</span></div>
            <div class="grid-cards">
                <div class="app-card">
                    <div class="card-icon icon-yellow"><i class="fas fa-user-tie"></i></div>
                    <div class="card-data"><span class="card-number"><?php echo $totalRevendas; ?></span><span class="card-label">Revendas</span></div>
                </div>
                <div class="app-card">
                    <div class="card-icon icon-red"><i class="fas fa-signal"></i></div>
                    <div class="card-data"><span class="card-number"><?php echo $liveStreams; ?></span><span class="card-label">Canais Live</span></div>
                </div>
            </div>
            <?php endif; ?>

            <div class="section-header"><i class="fas fa-chart-line"></i> <span>Crescimento</span></div>
            <div class="chart-card"><div id="growthChart"></div></div>

            <div class="section-header"><i class="fas fa-hourglass-half"></i> <span>Expiram em 7 dias (IPTV)</span></div>
            <div class="table-card">
                <div class="table-header-custom"><span>Login / Vencimento</span><span>Ações</span></div>
                
                <div id="lista-expirando-container">
                    <div class="table-row-custom" style="justify-content:center; color: var(--text-muted);">Carregando...</div>
                </div>

                <div class="paginacao-controles" id="paginacao-box" style="display:none;">
                    <button class="btn-pag" id="btn-ant" onclick="mudarPagina(-1)"><i class="fas fa-chevron-left"></i></button>
                    <span style="font-size:12px; font-weight:bold; color:var(--text-muted);" id="pag-info">1 / 1</span>
                    <button class="btn-pag" id="btn-prox" onclick="mudarPagina(1)"><i class="fas fa-chevron-right"></i></button>
                </div>
            </div>

        </div>
        <?php include 'rodape.php'; ?>
    </div>

    <script>
        const sidebar = document.getElementById('sidebar');
        const overlay = document.getElementById('overlay');
        function toggleMenu() { sidebar.classList.toggle('active'); overlay.classList.toggle('active'); }
        overlay.onclick = toggleMenu;

        function toggleSubmenu(id) {
            const sub = document.getElementById(id);
            const arrow = document.getElementById('arrow-' + id);
            if (sub.style.display === "block") { sub.style.display = "none"; if(arrow) arrow.classList.remove('rotate'); } 
            else { sub.style.display = "block"; if(arrow) arrow.classList.add('rotate'); }
        }

        // LÓGICA DA TABELA E RENOVAÇÃO RÁPIDA
        const clientesVencendo = <?php echo json_encode($lista_vencimentos_formatada); ?>;
        let paginaAtual = 1;
        const itensPorPagina = 5;

        document.addEventListener("DOMContentLoaded", function() {
            var options = {
                series: [{ name: 'Vendas', data: [10, 15, 8, 20, 15, 25, 30] }],
                chart: { height: 250, type: 'area', toolbar: { show: false }, background: 'transparent' },
                dataLabels: { enabled: false }, stroke: { curve: 'smooth', width: 2 },
                xaxis: { categories: ["Seg", "Ter", "Qua", "Qui", "Sex", "Sab", "Dom"], labels: { style: { colors: '#8a94a1' } } },
                yaxis: { labels: { style: { colors: '#8a94a1' } } },
                fill: { type: 'gradient', gradient: { shadeIntensity: 1, opacityFrom: 0.6, opacityTo: 0.1 } }, 
                colors: ['#0ea5e9']
            };
            var chart = new ApexCharts(document.querySelector("#growthChart"), options); 
            chart.render();

            renderizarTabela();
        });

        function cobrarWpp(nome, data, phone) {
            const msg = `Olá *${nome}*! 👋\n\nPassando para lembrar que seu plano IPTV vence dia *${data}*.\nEvite o bloqueio e renove agora mesmo! 😉\n\nQualquer dúvida estou à disposição.`;
            const url = phone ? `https://wa.me/${phone}?text=${encodeURIComponent(msg)}` : `https://wa.me/?text=${encodeURIComponent(msg)}`;
            window.open(url, '_blank');
        }

        function renovarCliente(id, user, pass) {
            Swal.fire({
                title: 'Renovar 30 Dias?',
                text: `Deseja renovar o usuário ${user} por mais 1 mês? (Custa 1 crédito)`,
                icon: 'question',
                showCancelButton: true,
                confirmButtonColor: '#0ea5e9',
                cancelButtonColor: '#d33',
                confirmButtonText: 'Sim, Renovar!',
                background: '#272c33',
                color: '#fff'
            }).then((result) => {
                if (result.isConfirmed) {
                    const formData = new FormData();
                    formData.append('acao_renovar', 'true');
                    formData.append('id_cliente', id);

                    fetch(window.location.href, { method: 'POST', body: formData })
                    .then(response => response.json())
                    .then(data => {
                        if(data.erro) {
                            Swal.fire({icon: 'error', title: 'Erro!', text: data.msg, background: '#272c33', color: '#fff'});
                        } else {
                            const msgSucesso = `✅ *RENOVAÇÃO CONCLUÍDA*\n\n👤 Usuário: ${user}\n🔑 Senha: ${pass}\n📆 Vencimento: ${data.nova_data}`;

                            Swal.fire({
                                title: 'Renovado!',
                                html: `<textarea id="msgCopy" style="width:100%; height:100px; background:#121519; border:1px solid #3a4149; color:white; border-radius:5px; padding:10px;">${msgSucesso}</textarea>`,
                                icon: 'success',
                                showCancelButton: true, showDenyButton: true,
                                confirmButtonText: '<i class="fab fa-whatsapp"></i> Enviar WhatsApp',
                                confirmButtonColor: '#25D366',
                                denyButtonText: '<i class="fas fa-copy"></i> Copiar',
                                denyButtonColor: '#0ea5e9',
                                cancelButtonText: 'Fechar',
                                cancelButtonColor: '#6c757d',
                                background: '#272c33', color: '#fff'
                            }).then((res) => {
                                if(res.isConfirmed) {
                                    window.open(`https://wa.me/?text=${encodeURIComponent(msgSucesso)}`, '_blank');
                                    setTimeout(() => { location.reload(); }, 1000);
                                } else if (res.isDenied) {
                                    const copyText = document.getElementById("msgCopy");
                                    copyText.select(); document.execCommand("copy");
                                    Swal.fire({icon: 'success', title: 'Copiado!', background: '#272c33', color: '#fff'}).then(() => { location.reload(); });
                                } else { location.reload(); }
                            });
                        }
                    })
                    .catch(err => Swal.fire({icon: 'error', title: 'Erro!', text: 'Falha na comunicação.', background: '#272c33', color: '#fff'}));
                }
            });
        }

        function renderizarTabela() {
            const container = document.getElementById('lista-expirando-container');
            const boxPag = document.getElementById('paginacao-box');
            const infoPag = document.getElementById('pag-info');
            const btnAnt = document.getElementById('btn-ant');
            const btnProx = document.getElementById('btn-prox');

            if (!clientesVencendo || clientesVencendo.length === 0) {
                container.innerHTML = '<div class="table-row-custom" style="justify-content:center; color: var(--text-muted);">Nenhum cliente IPTV expirando em 7 dias.</div>';
                boxPag.style.display = 'none';
                return;
            }

            const totalPaginas = Math.ceil(clientesVencendo.length / itensPorPagina);
            if (paginaAtual < 1) paginaAtual = 1;
            if (paginaAtual > totalPaginas) paginaAtual = totalPaginas;

            const inicio = (paginaAtual - 1) * itensPorPagina;
            const fim = inicio + itensPorPagina;
            const itensAtuais = clientesVencendo.slice(inicio, fim);

            let html = '';
            itensAtuais.forEach(cli => {
                html += `
                    <div class="table-row-custom">
                        <div style="display:flex; flex-direction:column;">
                            <span style="font-weight:bold; color: white;">${cli.nome}</span>
                            <span style="font-size:12px; color:var(--danger); font-weight:bold;"><i class="far fa-clock"></i> Vence: ${cli.data}</span>
                        </div>
                        <div style="display:flex;">
                            <button class="btn-action btn-wpp" onclick="cobrarWpp('${cli.nome}', '${cli.data}', '${cli.phone}')" title="Cobrar Whatsapp"><i class="fab fa-whatsapp"></i></button>
                            <button class="btn-action btn-ren" onclick="renovarCliente(${cli.id}, '${cli.user}', '${cli.pass}')" title="Renovar +30 Dias"><i class="fas fa-sync-alt"></i></button>
                        </div>
                    </div>
                `;
            });
            container.innerHTML = html;

            if (totalPaginas > 1) {
                boxPag.style.display = 'flex';
                infoPag.innerText = `${paginaAtual} / ${totalPaginas}`;
                btnAnt.disabled = (paginaAtual === 1);
                btnProx.disabled = (paginaAtual === totalPaginas);
            } else {
                boxPag.style.display = 'none';
            }
        }

        function mudarPagina(direcao) {
            paginaAtual += direcao;
            renderizarTabela();
        }
    </script>
</body>
</html>