<?php
// --- CONFIGURAÇÃO ---
ini_set('display_errors', 0);
error_reporting(0);
session_start();
date_default_timezone_set('America/Sao_Paulo');

header('Content-Type: text/html; charset=utf-8');
require_once 'config.php';
$pdo = getConexaoAtiva(); // Banco Principal
$pdo_int = getConexaoInterna(); // Banco Local

$pdo->exec("SET NAMES utf8mb4");
$pdo_int->exec("SET NAMES utf8mb4");

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'];
$is_admin = ($role === 'admin');

// ====================================================================
// INTELIGÊNCIA ARTIFICIAL: DETECTA SE É XUI ONE OU XTREAM UI
// ====================================================================
$modo_ativo = 'interno';
try {
    $modo_ativo = $pdo_int->query("SELECT modo_ativo FROM configuracoes LIMIT 1")->fetchColumn() ?: 'interno';
} catch (Exception $e) {}

$tabela_clientes = ($modo_ativo === 'xui') ? '`lines`' : '`users`';
$tabela_revendedores = ($modo_ativo === 'xui') ? '`users`' : '`reg_users`';
$cond_p2p = ($modo_ativo === 'xui') ? "1=1" : "(is_p2p = 0 OR is_p2p IS NULL)";

// ====================================================================================
// AUTO-CORREÇÃO DO BANCO DE DADOS (Cria tabelas no Banco Interno para não afetar o XUI)
// ====================================================================================
$pdo_int->exec("CREATE TABLE IF NOT EXISTS `config_cobranca` (
    `id` int(11) NOT NULL AUTO_INCREMENT, `admin_id` int(11) NOT NULL,
    `msg_4dias` text, `img_4dias` varchar(255), `msg_1dia` text, `img_1dia` varchar(255),
    `msg_hoje` text, `img_hoje` varchar(255), `pix_chave` varchar(255), `pix_titular` varchar(255), `pix_banco` varchar(255),
    PRIMARY KEY (`id`)
)");

try {
    $chk_col = $pdo_int->query("SHOW COLUMNS FROM config_cobranca LIKE 'img_4dias'");
    if (!$chk_col->fetch()) {
        $pdo_int->exec("ALTER TABLE config_cobranca 
                    ADD COLUMN img_4dias varchar(255) DEFAULT '', 
                    ADD COLUMN img_1dia varchar(255) DEFAULT '', 
                    ADD COLUMN img_hoje varchar(255) DEFAULT '', 
                    ADD COLUMN pix_chave varchar(255) DEFAULT '', 
                    ADD COLUMN pix_titular varchar(255) DEFAULT '', 
                    ADD COLUMN pix_banco varchar(255) DEFAULT ''");
    }
} catch(Exception $e){}

// ====================================================================================
// GATILHO AJAX: DISPARO MANUAL VIA API DIRETO PELA TELA
// ====================================================================================
if (isset($_POST['ajax_api_disparo'])) {
    header('Content-Type: application/json');
    $id_cli = intval($_POST['cliente_id']);
    $dias = intval($_POST['dias']);
    
    // Busca a API no banco principal (onde estão os usuários)
    $api_stmt = $pdo->prepare("SELECT wa_api_url, wa_api_key, wa_instancia, wa_status FROM $tabela_revendedores WHERE id = ?");
    $api_stmt->execute([$user_id_logado]);
    $api = $api_stmt->fetch(PDO::FETCH_ASSOC);
    
    if (!$api || $api['wa_status'] == 0 || empty($api['wa_api_url'])) {
        echo json_encode(['sucesso' => false, 'erro' => 'Sua API de WhatsApp não está configurada ou está desativada. Configure no menu lateral.']);
        exit;
    }
    
    // Busca os textos do banco interno
    $cfg_stmt = $pdo_int->prepare("SELECT * FROM config_cobranca WHERE admin_id = ?");
    $cfg_stmt->execute([$user_id_logado]);
    $cfg = $cfg_stmt->fetch(PDO::FETCH_ASSOC);
    if (!$cfg) {
        echo json_encode(['sucesso' => false, 'erro' => 'Você precisa configurar as mensagens primeiro clicando no botão Configurar Mensagens.']);
        exit;
    }
    
    // Puxa o cliente da tabela inteligente
    $cli_stmt = $pdo->prepare("SELECT username, whatsapp, exp_date FROM $tabela_clientes WHERE id = ? AND member_id = ?");
    $cli_stmt->execute([$id_cli, $user_id_logado]);
    $cliente = $cli_stmt->fetch(PDO::FETCH_ASSOC);
    
    if (!$cliente || empty($cliente['whatsapp'])) {
        echo json_encode(['sucesso' => false, 'erro' => 'Cliente inválido ou sem número de WhatsApp cadastrado.']);
        exit;
    }
    
    $nome_exibir = $cliente['username'];
    $data_venc = date('d/m/Y', $cliente['exp_date']);
    
    $msg_base = ""; $img_url = "";
    if ($dias == 4) { $msg_base = $cfg['msg_4dias']; $img_url = $cfg['img_4dias']; }
    elseif ($dias == 1) { $msg_base = $cfg['msg_1dia']; $img_url = $cfg['img_1dia']; }
    else { $msg_base = $cfg['msg_hoje']; $img_url = $cfg['img_hoje']; }
    
    $msg_final = str_replace(['{nome}', '{vencimento}', '{login}', '{usuario}'], [$nome_exibir, $data_venc, $cliente['username'], $cliente['username']], $msg_base);
    
    if (!empty($cfg['pix_chave'])) {
        $msg_final .= "\n\n➖➖➖➖➖➖➖➖➖➖\n💳 *DADOS PARA RENOVAÇÃO*\n";
        $msg_final .= "👤 *Seu Usuário:* {$cliente['username']}\n";
        $msg_final .= "💠 *Chave PIX:* \n{$cfg['pix_chave']}\n";
        if (!empty($cfg['pix_titular'])) $msg_final .= "Nome: {$cfg['pix_titular']}\n";
        if (!empty($cfg['pix_banco'])) $msg_final .= "Banco: {$cfg['pix_banco']}\n";
        $msg_final .= "➖➖➖➖➖➖➖➖➖➖\n\n📸 _Por favor, me envie a foto do comprovante aqui no WhatsApp após o pagamento!_ 🚀";
    }
    
    $numero = preg_replace('/\D/', '', $cliente['whatsapp']);
    if (strlen($numero) == 10 || strlen($numero) == 11) { $numero = "55" . $numero; }
    
    $endpoint = rtrim($api['wa_api_url'], '/');
    $dados = ["number" => $numero, "options" => [ "delay" => 1200, "presence" => "composing" ]];
    
    if (!empty($img_url)) {
        if(strpos($endpoint, '/message/sendText') !== false) { $endpoint = str_replace('/sendText', '/sendMedia', $endpoint); }
        elseif(strpos($endpoint, '/sendMedia') === false) { $endpoint .= "/message/sendMedia/" . $api['wa_instancia']; }
        $dados["mediaMessage"] = ["mediatype" => "image", "caption" => $msg_final, "media" => $img_url];
    } else {
        if(strpos($endpoint, '/message/sendMedia') !== false) { $endpoint = str_replace('/sendMedia', '/sendText', $endpoint); }
        elseif(strpos($endpoint, '/sendText') === false) { $endpoint .= "/message/sendText/" . $api['wa_instancia']; }
        $dados["textMessage"] = ["text" => $msg_final];
    }
    
    $ch = curl_init($endpoint);
    curl_setopt_array($ch, [
        CURLOPT_RETURNTRANSFER => true, CURLOPT_POST => true, 
        CURLOPT_POSTFIELDS => json_encode($dados, JSON_UNESCAPED_UNICODE),
        CURLOPT_HTTPHEADER => ["Content-Type: application/json; charset=utf-8", "apikey: ".$api['wa_api_key'], "Authorization: Bearer ".$api['wa_api_key']], 
        CURLOPT_TIMEOUT => 8, CURLOPT_SSL_VERIFYPEER => false, CURLOPT_SSL_VERIFYHOST => false
    ]);
    $res = curl_exec($ch); 
    curl_close($ch);
    
    echo json_encode(['sucesso' => true, 'msg' => 'Cobrança enviada com sucesso via API!']);
    exit;
}

// ====================================================================================
// SALVAR CONFIGURAÇÕES DE COBRANÇA (MODAL) NO BANCO INTERNO
// ====================================================================================
$mensagem_aviso = "";
if (isset($_POST['action_save_msgs'])) {
    $m4 = $_POST['msg_4']; $i4 = $_POST['img_4'];
    $m1 = $_POST['msg_1']; $i1 = $_POST['img_1'];
    $m0 = $_POST['msg_0']; $i0 = $_POST['img_0'];
    $pix_c = $_POST['pix_chave']; $pix_t = $_POST['pix_titular']; $pix_b = $_POST['pix_banco'];
    
    $chk = $pdo_int->prepare("SELECT id FROM config_cobranca WHERE admin_id = ?");
    $chk->execute([$user_id_logado]);
    if($chk->rowCount() > 0) {
        $pdo_int->prepare("UPDATE config_cobranca SET msg_4dias=?, img_4dias=?, msg_1dia=?, img_1dia=?, msg_hoje=?, img_hoje=?, pix_chave=?, pix_titular=?, pix_banco=? WHERE admin_id=?")
            ->execute([$m4, $i4, $m1, $i1, $m0, $i0, $pix_c, $pix_t, $pix_b, $user_id_logado]);
    } else {
        $pdo_int->prepare("INSERT INTO config_cobranca (admin_id, msg_4dias, img_4dias, msg_1dia, img_1dia, msg_hoje, img_hoje, pix_chave, pix_titular, pix_banco) VALUES (?,?,?,?,?,?,?,?,?,?)")
            ->execute([$user_id_logado, $m4, $i4, $m1, $i1, $m0, $i0, $pix_c, $pix_t, $pix_b]);
    }
    $mensagem_aviso = "<div class='alert success'><i class='fas fa-check-circle'></i> Textos e PIX atualizados com sucesso!</div>";
}

// --- INÍCIO: BUSCA DE PERSONALIZAÇÃO DINÂMICA ---
$nome_painel = 'TOP IPTV'; $logo_url = ''; $cor_primaria = '#007bff';
try {
    $tabela_existe = $pdo_int->query("SHOW TABLES LIKE 'painel_config'")->rowCount() > 0;
    if ($tabela_existe) {
        $config_painel = $pdo_int->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) { }

try { $user_credits = $pdo_int->query("SELECT credits FROM reg_users WHERE id = " . intval($user_id_logado))->fetchColumn() ?: 0; } catch (Exception $e) { $user_credits = 0; }

// --- FILTRO DE REVENDEDOR ---
$id_visualizacao = $user_id_logado; 
$lista_revendedores = [];

if ($is_admin) {
    try {
        $sqlRev = "SELECT id, username as user FROM $tabela_revendedores WHERE id != '$user_id_logado' AND member_group_id != 1 ORDER BY username ASC";
        $stmtRev = $pdo->query($sqlRev);
        if ($stmtRev) { $lista_revendedores = $stmtRev->fetchAll(PDO::FETCH_ASSOC); }
    } catch (Exception $e) {}

    if (isset($_GET['ver_revendedor']) && is_numeric($_GET['ver_revendedor'])) {
        $id_visualizacao = (int)$_GET['ver_revendedor'];
    }
}

// ====================================================================================
// BUSCA DA CONFIGURAÇÃO DE COBRANÇA
// ====================================================================================
$config_cobranca = [
    'pix_chave' => '', 'pix_titular' => '', 'pix_banco' => '',
    'msg_4dias' => "🤖 Olá *{nome}*!\nLembrete: seu plano vence em *4 dias* ({vencimento}).",
    'msg_1dia' => "🤖 Olá *{nome}*!\nSeu plano vence *AMANHÃ* ({vencimento}).",
    'msg_hoje' => "🤖 Olá *{nome}*!\nSeu plano *VENCE HOJE* ({vencimento}).",
    'img_4dias' => '', 'img_1dia' => '', 'img_hoje' => ''
];

try {
    $stmtCfg = $pdo_int->query("SELECT * FROM config_cobranca WHERE admin_id = '$id_visualizacao'");
    if ($stmtCfg && $stmtCfg->rowCount() > 0) {
        $configDB = $stmtCfg->fetch(PDO::FETCH_ASSOC);
        foreach($configDB as $k => $v) {
            if(!empty($v) || $v === '') $config_cobranca[$k] = $v;
        }
    }
} catch (Exception $e) {}

// ====================================================================================
// BUSCA DE CLIENTES (LÓGICA INTELIGENTE)
// ====================================================================================
try {
    $sql = "SELECT id, username AS usuario, username AS name, FROM_UNIXTIME(exp_date) AS Vencimento, whatsapp AS Whatsapp, member_id AS admin_id,
            DATEDIFF(FROM_UNIXTIME(exp_date), CURDATE()) as dias_restantes
            FROM $tabela_clientes 
            WHERE exp_date IS NOT NULL AND exp_date > 0 
            AND $cond_p2p
            AND member_id = '$id_visualizacao'
            HAVING dias_restantes IN (4, 1, 0, -1, -2, -3) 
            ORDER BY dias_restantes ASC";

    $stmt = $pdo->query($sql);
    $clientes = $stmt->fetchAll(PDO::FETCH_ASSOC);
} catch (Exception $e) {
    $clientes = []; 
}

$grupos = [ 'hoje' => [], 'amanha' => [], '4dias' => [] ];

foreach ($clientes as $c) {
    $zap = isset($c['Whatsapp']) ? preg_replace('/[^0-9]/', '', $c['Whatsapp']) : '';
    $c['zap_limpo'] = $zap;
    $c['data_br'] = date('d/m/Y', strtotime($c['Vencimento']));
    $nome = !empty($c['usuario']) ? $c['usuario'] : $c['name'];
    $c['nome_show'] = ucfirst($nome);

    $pix_text = "";
    if (!empty($config_cobranca['pix_chave'])) {
        $pix_text .= "\n\n➖➖➖➖➖➖➖➖➖➖\n💳 *DADOS PARA RENOVAÇÃO*\n";
        $pix_text .= "👤 *Seu Usuário:* {$c['usuario']}\n";
        $pix_text .= "💠 *Chave PIX:* \n{$config_cobranca['pix_chave']}\n";
        if (!empty($config_cobranca['pix_titular'])) $pix_text .= "Nome: {$config_cobranca['pix_titular']}\n";
        if (!empty($config_cobranca['pix_banco'])) $pix_text .= "Banco: {$config_cobranca['pix_banco']}\n";
        $pix_text .= "➖➖➖➖➖➖➖➖➖➖\n\n📸 _Por favor, me envie a foto do comprovante aqui no WhatsApp após o pagamento!_ 🚀";
    }

    $tags = ['{nome}', '{vencimento}', '{login}', '{usuario}'];
    $vals = ["*{$c['nome_show']}*", $c['data_br'], $c['usuario'], $c['usuario']];

    if ($c['dias_restantes'] == 4) {
        $msg_bruta = str_replace($tags, $vals, $config_cobranca['msg_4dias']) . $pix_text;
        $c['msg_blindada'] = rawurlencode($msg_bruta);
        $c['img_final'] = $config_cobranca['img_4dias']; 
        $grupos['4dias'][] = $c;
    
    } elseif ($c['dias_restantes'] == 1) {
        $msg_bruta = str_replace($tags, $vals, $config_cobranca['msg_1dia']) . $pix_text;
        $c['msg_blindada'] = rawurlencode($msg_bruta);
        $c['img_final'] = $config_cobranca['img_1dia']; 
        $grupos['amanha'][] = $c;
    
    } else {
        $msg_bruta = str_replace($tags, $vals, $config_cobranca['msg_hoje']) . $pix_text;
        $c['msg_blindada'] = rawurlencode($msg_bruta);
        $c['img_final'] = $config_cobranca['img_hoje']; 
        $grupos['hoje'][] = $c;
    }
}
?>
<!DOCTYPE html>
<html lang="pt-BR">
<head>
    <link rel="stylesheet" href="tema.css">
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
    <title>Central de Cobrança - <?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>
    <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; --warning: #f39c12; --info: #17a2b8; }
        body { margin: 0; font-family: 'Segoe UI', sans-serif; background-color: var(--bg-dark); color: var(--text-main); display: flex; height: 100vh; overflow: hidden; }
        
        /* CSS OBRIGATÓRIO PARA A LOGO E MENU */
        .sidebar { width: 260px; background-color: var(--bg-sidebar); display: flex; flex-direction: column; transition: 0.3s; border-right: 1px solid var(--border-color); flex-shrink: 0; z-index: 1001;}
        .sidebar-header { padding: 25px 20px; text-align: center; color: white; border-bottom: 1px solid var(--border-color); font-weight: bold; font-size: 18px;}
        .sidebar-logo { max-width: 180px; max-height: 55px; object-fit: contain; display: block; margin: 0 auto; }
        .user-info { padding: 20px; text-align: center; border-bottom: 1px solid var(--border-color); }
        .user-info .badge { background: rgba(0, 123, 255, 0.2); 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; margin-top: auto;}

        .main-content { flex: 1; display: flex; flex-direction: column; overflow-y: auto; position: relative; width: 100vw; max-width: 100%;}
        .topbar { padding: 15px 30px; background-color: var(--bg-sidebar); border-bottom: 1px solid var(--border-color); display: flex; justify-content: space-between; align-items: center;}
        .menu-toggle { display: none; background: none; border: none; color: white; font-size: 24px; cursor: pointer; padding-right: 15px;}
        .sidebar-overlay { display: none; position: fixed; top: 0; left: 0; width: 100%; height: 100%; background: rgba(0,0,0,0.6); z-index: 1000; }
        .mode-badge { padding: 6px 12px; background: rgba(243, 156, 18, 0.15); color: var(--warning); border-radius: 20px; font-size: 11px; font-weight: bold; border: 1px solid var(--warning); white-space: nowrap; flex-shrink: 0; }

        .content-area { padding: 30px; }
        .page-title { font-size: 20px; font-weight: 700; color: white; margin-top: 0; margin-bottom: 20px; }
        
        .card { background: var(--bg-card); border: 1px solid var(--border-color); border-radius: 12px; padding: 25px; margin-bottom: 25px; }
        
        .container-cobranca { max-width: 900px; margin: 0 auto; }
        .btn-config { background: var(--accent); color: white; padding: 10px 20px; border-radius: 8px; text-decoration: none; font-weight: bold; float: right; margin-bottom: 25px; display: inline-flex; align-items: center; gap: 8px; transition: 0.2s; border:none; cursor:pointer;}
        .btn-config:hover { filter: brightness(1.1); }
        
        .admin-filter-box { background: var(--bg-card); padding: 15px 20px; border-radius: 10px; margin-bottom: 25px; border: 1px solid var(--border-color); display: flex; align-items: center; gap: 15px; flex-wrap: wrap; }
        .select-rev { padding: 10px; border-radius: 6px; border: 1px solid var(--border-color); flex-grow: 1; min-width: 200px; background: #121519; color: white; }
        
        .card-cliente { background: var(--bg-card); border-radius: 10px; padding: 20px; margin-bottom: 15px; border-left: 5px solid #555; display: flex; flex-direction: column; gap: 15px; border-top: 1px solid var(--border-color); border-right: 1px solid var(--border-color); border-bottom: 1px solid var(--border-color);}
        .border-red { border-left-color: var(--danger); } .border-orange { border-left-color: #f97316; } .border-yellow { border-left-color: var(--warning); }
        .text-red { color: var(--danger); } .text-orange { color: #f97316; } .text-yellow { color: var(--warning); }
        .info-user { display: flex; justify-content: space-between; align-items: center; border-bottom: 1px solid var(--border-color); padding-bottom: 10px;}
        .info-user strong { font-size: 16px; color: white; } 
        .info-user span { font-size: 13px; font-weight: bold; }

        .img-area { width: 100%; background: #121519; padding: 10px; border-radius: 8px; text-align: center; border: 1px dashed var(--border-color); }
        .img-area img { max-height: 140px; max-width: 100%; border-radius: 5px; cursor: pointer; }
        .img-hint { font-size: 11px; color: var(--text-muted); display: block; margin-top: 5px; }

        .actions-area { display: flex; flex-wrap:wrap; gap: 10px; width: 100%; }
        .btn-zap { flex: 1; min-width: 130px; background: #25D366; color: white; padding: 12px; border-radius: 8px; text-decoration: none; font-weight: bold; text-align: center; display: flex; align-items: center; justify-content: center; gap: 8px; border: none; cursor: pointer; font-size: 14px; transition: 0.2s;}
        .btn-zap:hover { background: #128C7E; color: white; }
        .btn-share { background: #8b5cf6; } 
        .btn-share:hover { background: #7c3aed; color: white; }
        .btn-api { background: #0ea5e9; } 
        .btn-api:hover { background: #0284c7; color: white; }

        .sem-zap { width: 100%; text-align: center; color: var(--text-muted); font-size: 13px; background: #121519; padding: 12px; border-radius: 8px; border: 1px dashed var(--border-color); }
        
        .paginacao-controles { display: flex; justify-content: center; align-items: center; gap: 15px; margin: 20px 0 30px; }
        .btn-pag { background: var(--bg-card); border: 1px solid var(--border-color); padding: 8px 15px; border-radius: 6px; cursor: pointer; color: white; transition: 0.2s;}
        .btn-pag:hover:not([disabled]) { background: var(--accent); border-color: var(--accent); }
        .btn-pag:disabled { opacity: 0.3; cursor: not-allowed; }
        
        .header-secao { margin: 40px 0 15px; font-weight: 800; font-size: 14px; text-transform: uppercase; display: flex; align-items: center; justify-content: space-between; border-bottom: 1px solid var(--border-color); padding-bottom: 10px;}
        .pill-badge { background: rgba(255,255,255,0.1); padding: 4px 12px; border-radius: 20px; font-size: 12px; color: white;}

        /* MODAL CSS */
        .modal { display: none; position: fixed; z-index: 2000; left: 0; top: 0; width: 100%; height: 100%; background: rgba(0,0,0,0.85); overflow-y: auto; align-items: center; justify-content: center; padding: 20px; box-sizing: border-box;}
        .modal-content { background: var(--bg-card); width: 100%; max-width: 600px; padding: 25px; border-radius: 12px; border: 1px solid var(--border-color); position: relative; margin: auto;}
        .modal h3 { margin-top:0; color:white; border-bottom: 1px solid var(--border-color); padding-bottom: 10px;}
        .form-group-modal { margin-bottom: 15px; }
        .form-group-modal label { display: block; margin-bottom: 5px; font-size: 13px; color: var(--text-muted); font-weight: bold;}
        .form-group-modal input, .form-group-modal textarea { width: 100%; padding: 10px; background: #121519; border: 1px solid var(--border-color); color: white; border-radius: 5px; box-sizing: border-box; font-family: sans-serif; resize:vertical; }
        .form-group-modal input:focus, .form-group-modal textarea:focus { outline: none; border-color: var(--accent); }
        .btn-save-modal { width: 100%; padding: 15px; background: var(--accent); border: none; color: white; border-radius: 5px; font-weight: bold; cursor: pointer; transition: 0.2s; font-size: 15px; margin-top: 10px;}
        .alert { padding: 15px; border-radius: 8px; margin-bottom: 20px; font-weight: bold; font-size: 14px; transition: opacity 0.5s ease; }
        .alert.success { background: rgba(40, 167, 69, 0.1); color: var(--success); border: 1px solid var(--success); }

        @media (max-width: 768px) {
            .sidebar { position: fixed; left: -260px; height: 100%; box-shadow: 10px 0 20px rgba(0,0,0,0.5); }
            .sidebar.active { left: 0; }
            .menu-toggle { display: block; margin-right: 15px; }
            .sidebar-overlay.active { display: block; }
            .topbar { padding: 15px 20px; justify-content: flex-start; }
            .topbar h2 { display: none; }
            .topbar-right { margin-left: auto; }
            .content-area { padding: 15px; }
            .admin-filter-box { flex-direction: column; align-items: stretch; padding: 15px; } 
            .select-rev { width: 100%; } 
            .actions-area { width: 100%; flex-direction: column;}
            .btn-config { float: none; width: 100%; justify-content: center; margin-bottom: 15px;}
        }
    </style>
</head>
<body>
    <div class="sidebar-overlay" id="overlay" onclick="toggleMenu()"></div>

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

    <div class="main-content">
        <header class="topbar">
            <div style="display:flex; align-items:center;">
                <button class="menu-toggle" onclick="toggleMenu()"><i class="fas fa-bars"></i></button>
                <h2 style="margin:0; font-size: 18px; color:white;">Central de Cobrança</h2>
            </div>
            <div class="topbar-right">
                <span class="mode-badge"><i class="fas fa-database"></i> MODO: <?php echo defined('MODO_SISTEMA') ? strtoupper(MODO_SISTEMA) : strtoupper($modo_ativo); ?></span>
            </div>
        </header>

        <div class="content-area">
            <div class="container-cobranca">
                
                <?php echo $mensagem_aviso; ?>

                <div style="margin-bottom: 20px; overflow: hidden;">
                    <button class="btn-config" onclick="openModal('modalEditMsgs')"><i class="fas fa-cogs"></i> Configurar Mensagens e PIX</button>
                </div>

                <?php if ($is_admin): ?>
                <div class="admin-filter-box">
                    <div style="display:flex; align-items:center; gap:8px; color: var(--info);">
                        <i class="fas fa-filter"></i> <strong>Filtrar:</strong>
                    </div>
                    <form method="GET" style="flex-grow:1; display:flex;">
                        <select name="ver_revendedor" class="select-rev" onchange="this.form.submit()">
                            <option value="<?php echo $user_id_logado; ?>" <?php echo ($id_visualizacao == $user_id_logado) ? 'selected' : ''; ?>>👤 Meus Clientes</option>
                            <?php if(!empty($lista_revendedores)): ?>
                                <optgroup label="Revendedores">
                                <?php foreach($lista_revendedores as $rev): ?>
                                    <option value="<?php echo $rev['id']; ?>" <?php echo ($id_visualizacao == $rev['id']) ? 'selected' : ''; ?>>👔 <?php echo htmlspecialchars($rev['user']); ?></option>
                                <?php endforeach; ?>
                                </optgroup>
                            <?php endif; ?>
                        </select>
                    </form>
                </div>
                <?php endif; ?>

                <div style="text-align: center; margin-bottom: 30px;">
                    <p style="margin:0; color:var(--text-muted); font-size:14px;">Exibindo clientes de: <strong style="color:var(--info);"><?php echo ($id_visualizacao == $user_id_logado) ? 'MIM' : 'REVENDEDOR'; ?></strong></p>
                </div>

                <div class="header-secao text-red"><span><i class="fas fa-exclamation-circle"></i> VENCEM HOJE</span><span class="pill-badge"><?php echo count($grupos['hoje']); ?></span></div>
                <div id="container-hoje"></div><div id="pag-hoje" class="paginacao-controles"></div>

                <div class="header-secao text-orange"><span><i class="fas fa-clock"></i> VENCEM AMANHÃ</span><span class="pill-badge"><?php echo count($grupos['amanha']); ?></span></div>
                <div id="container-amanha"></div><div id="pag-amanha" class="paginacao-controles"></div>

                <div class="header-secao text-yellow"><span><i class="fas fa-calendar-day"></i> LEMBRETE 4 DIAS</span><span class="pill-badge"><?php echo count($grupos['4dias']); ?></span></div>
                <div id="container-4dias"></div><div id="pag-4dias" class="paginacao-controles"></div>

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

    <div id="modalEditMsgs" class="modal">
        <div class="modal-content">
            <h3><i class="fas fa-edit" style="color:var(--accent);"></i> Meus Textos de Cobrança</h3>
            <p style="color:var(--text-muted); font-size:12px; margin-bottom:20px;">Use as tags <b>{nome}</b> e <b>{vencimento}</b>. Configure seu PIX no final para envio automático.</p>
            
            <form method="POST">
                <input type="hidden" name="action_save_msgs" value="1">
                
                <div style="background: rgba(0,0,0,0.2); padding: 15px; border-radius: 8px; margin-bottom:15px; border: 1px dashed var(--success);">
                    <h4 style="margin:0 0 10px; color:var(--success); font-size:14px;">💲 Dados do PIX (Aparece no final do texto)</h4>
                    <div class="form-group-modal">
                        <label>Sua Chave PIX (E-mail, CPF, CNPJ, Celular):</label>
                        <input type="text" name="pix_chave" value="<?php echo htmlspecialchars($config_cobranca['pix_chave']); ?>" placeholder="Ex: joao@email.com">
                    </div>
                    <div style="display:flex; gap:10px;">
                        <div class="form-group-modal" style="flex:1;">
                            <label>Nome do Titular:</label>
                            <input type="text" name="pix_titular" value="<?php echo htmlspecialchars($config_cobranca['pix_titular']); ?>">
                        </div>
                        <div class="form-group-modal" style="flex:1;">
                            <label>Banco:</label>
                            <input type="text" name="pix_banco" value="<?php echo htmlspecialchars($config_cobranca['pix_banco']); ?>" placeholder="Ex: Nubank">
                        </div>
                    </div>
                </div>

                <div class="form-group-modal">
                    <label style="color:var(--warning);">🟡 Mensagem de 4 Dias:</label>
                    <textarea name="msg_4" rows="4"><?php echo htmlspecialchars($config_cobranca['msg_4dias']); ?></textarea>
                    <input type="text" name="img_4" value="<?php echo htmlspecialchars($config_cobranca['img_4dias']); ?>" placeholder="Link da Imagem de 4 dias (Opcional)" style="margin-top:5px;">
                </div>
                
                <div class="form-group-modal">
                    <label style="color:#f97316;">🟠 Mensagem de 1 Dia (Amanhã):</label>
                    <textarea name="msg_1" rows="4"><?php echo htmlspecialchars($config_cobranca['msg_1dia']); ?></textarea>
                    <input type="text" name="img_1" value="<?php echo htmlspecialchars($config_cobranca['img_1dia']); ?>" placeholder="Link da Imagem Vence Amanhã (Opcional)" style="margin-top:5px;">
                </div>
                
                <div class="form-group-modal">
                    <label style="color:var(--danger);">🔴 Mensagem do Dia (Vence Hoje):</label>
                    <textarea name="msg_0" rows="4"><?php echo htmlspecialchars($config_cobranca['msg_hoje']); ?></textarea>
                    <input type="text" name="img_0" value="<?php echo htmlspecialchars($config_cobranca['img_hoje']); ?>" placeholder="Link da Imagem Vence Hoje (Opcional)" style="margin-top:5px;">
                </div>
                
                <button type="submit" class="btn-save-modal"><i class="fas fa-save"></i> SALVAR CONFIGURAÇÕES</button>
                <button type="button" onclick="closeAllModals()" style="width:100%; background:none; border:none; color:var(--text-muted); margin-top:15px; cursor:pointer; font-weight:bold;">Cancelar e Fechar</button>
            </form>
        </div>
    </div>

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

        function openModal(id) { document.getElementById(id).style.display = 'flex'; }
        function closeAllModals() { document.querySelectorAll('.modal').forEach(m => m.style.display = 'none'); }

        // MÁGICA: JSON_UNESCAPED_UNICODE previne que os emojis quebrem o código JS!
        const dados = {
            hoje: <?php echo json_encode($grupos['hoje'], JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES | JSON_INVALID_UTF8_SUBSTITUTE) ?: '[]'; ?>,
            amanha: <?php echo json_encode($grupos['amanha'], JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES | JSON_INVALID_UTF8_SUBSTITUTE) ?: '[]'; ?>,
            4: <?php echo json_encode($grupos['4dias'], JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES | JSON_INVALID_UTF8_SUBSTITUTE) ?: '[]'; ?>
        };
        
        const paginas = { hoje: 1, amanha: 1, 4: 1 };
        const porPagina = 5;

        async function compartilharZap(urlImg, textoDecodificado, fone) {
            let compartilhouNativo = false;

            if (urlImg && navigator.share) {
                try {
                    const response = await fetch(urlImg);
                    const blob = await response.blob();
                    const file = new File([blob], "cobranca.jpg", { type: "image/jpeg" });
                    
                    if (navigator.canShare && navigator.canShare({ files: [file] })) {
                        await navigator.share({ files: [file], text: textoDecodificado, title: 'Cobrança' });
                        compartilhouNativo = true;
                    }
                } catch (e) { 
                    console.log("Erro no compartilhamento nativo de arquivo. Iniciando Plano B:", e); 
                }
            }
            
            if (!compartilhouNativo) {
                let textoComImagem = textoDecodificado;
                if(urlImg) { textoComImagem += "\n\n🔗 *Imagem Anexa:* \n" + urlImg; }
                window.open(`https://wa.me/55${fone}?text=${encodeURIComponent(textoComImagem)}`, '_blank');
            }
        }

        async function enviarApiDireto(btn, idCli, dias) {
            const txtOriginal = btn.innerHTML;
            btn.innerHTML = '<i class="fas fa-spinner fa-spin"></i> Enviando...';
            btn.disabled = true;

            try {
                let form = new FormData();
                form.append('ajax_api_disparo', '1');
                form.append('cliente_id', idCli);
                form.append('dias', dias);

                const response = await fetch(window.location.href, { method: 'POST', body: form });
                const res = await response.json();

                if (res.sucesso) {
                    Swal.fire({ title: 'Sucesso!', text: res.msg, icon: 'success', background: '#272c33', color: '#fff', confirmButtonColor: '#28a745' });
                } else {
                    Swal.fire({ title: 'Atenção!', text: res.erro, icon: 'warning', background: '#272c33', color: '#fff', confirmButtonColor: '#f39c12' });
                }
            } catch(e) {
                Swal.fire({ title: 'Erro!', text: 'Falha ao conectar com o servidor.', icon: 'error', background: '#272c33', color: '#fff' });
            }
            
            btn.innerHTML = txtOriginal;
            btn.disabled = false;
        }

        function renderizarLista(tipo, idContainer, idControles, corBorda, classeTexto) {
            const lista = dados[tipo];
            const container = document.getElementById(idContainer);
            const controles = document.getElementById(idControles);
            
            if (lista.length === 0) {
                container.innerHTML = '<div style="background:var(--bg-card); color:var(--text-muted); padding:15px; border-radius:8px; border:1px dashed var(--border-color); text-align:center; font-size:13px;">Nenhum cliente nesta lista.</div>';
                controles.style.display = 'none';
                return;
            }

            const totalPaginas = Math.ceil(lista.length / porPagina);
            const pgAtual = paginas[tipo];
            const inicio = (pgAtual - 1) * porPagina;
            const itens = lista.slice(inicio, inicio + porPagina);

            let html = '';
            itens.forEach(cli => {
                let imgBlock = '';
                let botoes = '';

                if(cli.img_final) {
                    imgBlock = `
                        <div class="img-area">
                            <img src="${cli.img_final}" onclick="window.open(this.src)">
                            <span class="img-hint">Clique para ampliar</span>
                        </div>`;
                }

                if(cli.zap_limpo) {
                    let btnFoto = '';
                    if (cli.img_final) {
                        btnFoto = `
                        <button onclick="compartilharZap('${cli.img_final}', decodeURIComponent('${cli.msg_blindada}'), '${cli.zap_limpo}')" class="btn-zap btn-share">
                            <i class="fas fa-share-alt"></i> Foto + Texto
                        </button>`;
                    }
                    
                    let btnApi = `
                    <button onclick="enviarApiDireto(this, ${cli.id}, ${cli.dias_restantes})" class="btn-zap btn-api">
                        <i class="fas fa-robot"></i> Enviar API
                    </button>`;

                    botoes = btnFoto + btnApi; 
                } else {
                    botoes = `<span class="sem-zap"><i class="fas fa-phone-slash"></i> Sem WhatsApp cadastrado</span>`;
                }

                html += `
                <div class="card-cliente ${corBorda}">
                    <div class="info-user">
                        <strong><i class="fas fa-user" style="color:var(--text-muted); margin-right:5px;"></i> ${cli.nome_show}</strong>
                        <span class="${classeTexto}">${cli.data_br}</span>
                    </div>
                    ${imgBlock}
                    <div class="actions-area">
                        ${botoes}
                    </div>
                </div>`;
            });
            container.innerHTML = html;

            if (totalPaginas > 1) {
                controles.innerHTML = `
                    <button class="btn-pag" onclick="mudarPag('${tipo}', -1)" ${pgAtual === 1 ? 'disabled' : ''}><i class="fas fa-chevron-left"></i></button>
                    <span style="color:var(--text-muted); font-size:13px; font-weight:bold; margin:0 10px;">Página ${pgAtual} de ${totalPaginas}</span>
                    <button class="btn-pag" onclick="mudarPag('${tipo}', 1)" ${pgAtual === totalPaginas ? 'disabled' : ''}><i class="fas fa-chevron-right"></i></button>
                `;
                controles.style.display = 'flex';
            } else { controles.style.display = 'none'; }
        }

        function mudarPag(tipo, direcao) {
            paginas[tipo] += direcao;
            renderizarTodas();
        }
        function renderizarTodas() {
            renderizarLista('hoje', 'container-hoje', 'pag-hoje', 'border-red', 'text-red');
            renderizarLista('amanha', 'container-amanha', 'pag-amanha', 'border-orange', 'text-orange');
            renderizarLista('4', 'container-4dias', 'pag-4dias', 'border-yellow', 'text-yellow');
        }
        document.addEventListener("DOMContentLoaded", renderizarTodas);
        
        setTimeout(function() { 
            try { 
                var a = document.querySelectorAll('.alert'); 
                for(var i=0; i<a.length; i++) { a[i].style.display = 'none'; } 
            } catch(e) {} 
        }, 5000);
    </script>
    <script src="tema.js"></script>
</body>
</html>