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

// Configuração de Fuso Horário obrigatória
date_default_timezone_set('America/Sao_Paulo');

// --- 1. TRAVA DE SEGURANÇA TOTAL ---
if (!isset($_SESSION['logado'])) { header("Location: login.php"); exit; }

$nivel_sessao = isset($_SESSION['nivel']) ? strtolower(trim($_SESSION['nivel'])) : '';
$isAdmin = ($nivel_sessao === 'admin' || $nivel_sessao === 'administrador' || $nivel_sessao === 'master' || $nivel_sessao === 'dono');
$usuarioLogado = $_SESSION['usuario'];

// --- 2. CONFIGURAÇÕES VISUAIS ---
$nomePainel = "IPTV PANEL"; $corPrimaria = "#7367f0"; 
try {
    $conf = $connGeral->query("SELECT NomePainel, TemaPainel FROM site_config 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) { }

$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) { }

// --- 3. CRIAR TABELA DE HISTÓRICO ---
try {
    $connGeral->exec("CREATE TABLE IF NOT EXISTS `log_disparos` (
      `id` int(11) NOT NULL AUTO_INCREMENT,
      `data_disparo` datetime DEFAULT CURRENT_TIMESTAMP,
      `origem` varchar(50) NOT NULL,
      `resumo` text NOT NULL,
      `status` varchar(20) DEFAULT 'sucesso',
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;");
} catch (PDOException $e) { }

// --- 4. PROCESSAR AÇÕES ---
$msg = ""; $msg_tipo = "";

if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['acao'])) {
    
    if ($_POST['acao'] === 'limpar_logs') {
        try {
            if($isAdmin){
                $connGeral->exec("TRUNCATE TABLE log_disparos");
            } else {
                $stmtLimpar = $connGeral->prepare("DELETE FROM log_disparos WHERE origem LIKE ?");
                $stmtLimpar->execute(["%($usuarioLogado -%"]);
            }
            $msg = "<i class='fas fa-trash-alt me-2'></i> Histórico limpo!"; $msg_tipo = "success";
        } catch (Exception $e) { $msg = "Erro ao limpar: " . $e->getMessage(); $msg_tipo = "danger"; }
    }
    
    if ($_POST['acao'] === 'disparo_manual') {
        try {
            // Puxar credenciais EXATAS de quem está logado
            $stmtConf = $connGeral->prepare("SELECT * FROM config_api_whatsapp WHERE usuario = ?");
            $stmtConf->execute([$usuarioLogado]);
            $confWpp = $stmtConf->fetch(PDO::FETCH_ASSOC);
            
            if(!$confWpp || empty($confWpp['api_url']) || empty($confWpp['api_key']) || empty($confWpp['instancia'])) {
                throw new Exception("Você precisa configurar as suas credenciais da API primeiro no menu 'Config. API Zap'.");
            }
            
            $api_url = rtrim($confWpp['api_url'], '/'); 
            $api_key = trim($confWpp['api_key']);
            $instancia = trim($confWpp['instancia']);

            // Filtra clientes SOMENTE do revendedor logado (Multitenant)
            $filtroDono = $isAdmin ? "" : " AND CadUser = '$usuarioLogado'";
            $stmt = $connUser->query("SELECT id, nome, usuario, senha, data_premio, whatsapp FROM usuario WHERE (bloqueado = 'nao' OR bloqueado IS NULL) $filtroDono");
            $clientes = $stmt->fetchAll(PDO::FETCH_ASSOC);

            $hoje_str = date('Y-m-d');
            $data_hoje = new DateTime($hoje_str);
            
            $avisos_enviados = 0;
            $detalhes_log = [];
            $dominio_atual = $_SERVER['HTTP_HOST']; 

            foreach ($clientes as $u) {
                if(empty($u['data_premio']) || empty($u['whatsapp'])) continue;

                $venc_ts = is_numeric($u['data_premio']) ? (int)$u['data_premio'] : strtotime($u['data_premio']);
                $venc_str = date('Y-m-d', $venc_ts);
                $data_venc = new DateTime($venc_str);
                
                $diff = $data_hoje->diff($data_venc);
                $dias = (int)$diff->format("%r%a");

                // Regra: 3 dias, 1 dia ou hoje (0)
                if ($dias === 3 || $dias === 1 || $dias === 0) {
                    
                    $numero = preg_replace("/[^0-9]/", "", $u['whatsapp']);
                    if (strlen($numero) == 10 || strlen($numero) == 11) { $numero = "55" . $numero; }
                    if (strlen($numero) < 12) continue;

                    // MÁGICA: Prepara a mensagem baseada no modelo cadastrado pelo Revendedor
                    $texto = "";
                    if(!empty($confWpp['msg_cobranca'])) {
                        $texto = str_replace(
                            ['{nome}', '{usuario}', '{senha}', '{vencimento}', '{link_cliente}'], 
                            [$u['nome'], $u['usuario'], $u['senha'], date('d/m/Y', $venc_ts), "https://{$dominio_atual}/clientes"], 
                            $confWpp['msg_cobranca']
                        );
                        // Adiciona um alerta extra se for no próprio dia
                        if($dias == 0) { $texto = "⚠️ *URGENTE: VENCE HOJE* ⚠️\n\n" . $texto; }
                    } else {
                        if ($dias == 0) {
                            $texto = "⚠️ *AVISO DE VENCIMENTO* ⚠️\n\nOlá *{$u['nome']}*, seu acesso vence *HOJE*!\n\n";
                        } else {
                            $texto = "Olá *{$u['nome']}*, o seu plano vence em *$dias dias*.\n\n";
                        }
                        $texto .= "🔄 *RENOVAÇÃO AUTOMÁTICA (PIX)*\n";
                        $texto .= "Acesse a sua Área do Cliente, pague com PIX e o sistema libera o seu acesso na mesma hora!\n\n";
                        $texto .= "🌐 *Link:* https://{$dominio_atual}/clientes\n";
                        $texto .= "👤 *Usuário:* {$u['usuario']}\n";
                        $texto .= "🔑 *Senha:* {$u['senha']}\n\n";
                        $texto .= "🔹 *Ou pague direto na nossa chave PIX:*\n";
                        $texto .= "Chave: *sua-chave-pix-aqui*\n"; 
                    }

                    $curl = curl_init();
                    curl_setopt_array($curl, array(
                      CURLOPT_URL => $api_url . "/message/sendText/" . $instancia,
                      CURLOPT_RETURNTRANSFER => true,
                      CURLOPT_ENCODING => '',
                      CURLOPT_MAXREDIRS => 10,
                      CURLOPT_TIMEOUT => 5, // Timeout rápido
                      CURLOPT_FOLLOWLOCATION => true,
                      CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
                      CURLOPT_CUSTOMREQUEST => 'POST',
                      CURLOPT_POSTFIELDS => json_encode(array(
                        "number" => $numero,
                        "options" => array(
                          "delay" => 1500,
                          "presence" => "composing",
                          "linkPreview" => false
                        ),
                        "textMessage" => array(
                          "text" => $texto
                        )
                      )),
                      CURLOPT_SSL_VERIFYHOST => 0,
                      CURLOPT_SSL_VERIFYPEER => 0,
                      CURLOPT_HTTPHEADER => array(
                        'Content-Type: application/json',
                        'apikey: ' . $api_key
                      ),
                    ));

                    curl_exec($curl);
                    curl_close($curl);

                    $avisos_enviados++;
                    $detalhes_log[] = $u['usuario'] . " ($dias dias)";
                }
            }

            $resumo = ($avisos_enviados > 0) ? "Enviado para $avisos_enviados clientes: " . implode(", ", $detalhes_log) : "Nenhum cliente seu para cobrar hoje.";
            $origem_log = "Painel ($usuarioLogado - Manual)";
            $stmtLog = $connGeral->prepare("INSERT INTO log_disparos (origem, resumo, status) VALUES (?, ?, 'sucesso')");
            $stmtLog->execute([$origem_log, $resumo]);

            $msg = "<b>Processado!</b> $avisos_enviados mensagens enviadas."; $msg_tipo = ($avisos_enviados > 0) ? "success" : "info";
            
        } catch (Exception $e) { $msg = "Erro: " . $e->getMessage(); $msg_tipo = "danger"; }
    }
}

// Filtra a tabela de histórico (Admin vê tudo, Revenda vê só os dele)
if ($isAdmin) {
    $historico = $connGeral->query("SELECT * FROM log_disparos ORDER BY id DESC LIMIT 50")->fetchAll(PDO::FETCH_ASSOC);
} else {
    $stmtHist = $connGeral->prepare("SELECT * FROM log_disparos WHERE origem LIKE ? ORDER BY id DESC LIMIT 50");
    $stmtHist->execute(["%($usuarioLogado -%"]);
    $historico = $stmtHist->fetchAll(PDO::FETCH_ASSOC);
}
?>

<!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>Automação WhatsApp | <?= 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; 
            --overlay-desk: rgba(0, 0, 0, 0.65); 
            --overlay-mob: rgba(0, 0, 0, 0.85);
        }
        body.light-mode { 
            --bg-body: #f4f5f8; 
            --bg-card: #ffffff; 
            --text-color: #5e5873; 
            --border-color: #ebe9f1; 
            --overlay-desk: rgba(255, 255, 255, 0.1); 
            --overlay-mob: rgba(255, 255, 255, 0);
        }
        
        body { background-color: var(--bg-body); color: var(--text-color); font-family: 'Segoe UI', sans-serif; overflow-x: hidden; margin: 0; padding: 0; }
        
        /* Sidebar Restourada Premium */
        .sidebar { width: 260px; height: 100vh; position: fixed; background: var(--bg-card); border-right: 1px solid var(--border-color); z-index: 1050; padding: 20px; overflow-y: auto; transition: transform 0.3s ease, box-shadow 0.3s ease; }
        .sidebar .nav-link { white-space: nowrap !important; overflow: hidden; text-overflow: ellipsis; display: flex; align-items: center; color: #a6a6b7; padding: 12px 15px; border-radius: 8px; text-decoration: none; margin-bottom: 5px; font-weight: 500; transition: 0.2s; }
        .sidebar .nav-link:hover, .sidebar .nav-link.active { background: var(--primary); color: #fff; box-shadow: 0 4px 15px rgba(0,0,0,0.2); }
        .sidebar .nav-link i.fa-fw { margin-right: 8px; text-align: center; }
        .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 Flexbox (Para Rodapé Fixo) */
        .main-content { margin-left: 260px; transition: 0.3s; display: flex; flex-direction: column; min-height: 100vh; }
        .top-header { background: linear-gradient(90deg, var(--bg-card) 0%, var(--overlay-desk) 100%), var(--primary); padding: 15px 30px; display: flex; align-items: center; justify-content: space-between; border-bottom: 1px solid rgba(255,255,255,0.1); margin-bottom: 30px; box-shadow: 0 2px 10px rgba(0,0,0,0.3);}
        .header-title { font-size: 1.3rem; font-weight: 800; color: #fff; text-transform: uppercase; letter-spacing: 1px; margin: 0; }
        
        .card-custom { background-color: var(--bg-card) !important; border: 1px solid var(--border-color) !important; border-radius: 12px; overflow: hidden; margin-bottom: 20px; box-shadow: 0 4px 15px rgba(0,0,0,0.05); }
        
        /* Tabela Dinâmica que respeita Tema Claro/Escuro DE VERDADE */
        .table-custom { width: 100%; margin-bottom: 0; border-collapse: separate; border-spacing: 0; background: transparent !important; }
        .table-custom th { background-color: var(--bg-card) !important; border-bottom: 1px solid var(--border-color) !important; color: #a6a6b7 !important; font-size: 0.8rem; text-transform: uppercase; font-weight: 700; padding: 15px; white-space: nowrap; }
        .table-custom td { background-color: var(--bg-card) !important; border-bottom: 1px solid var(--border-color) !important; color: var(--text-color) !important; vertical-align: middle; padding: 15px; font-size: 0.95rem; }
        .table-custom tbody tr:hover td { background-color: rgba(115, 103, 240, 0.08) !important; }

        .code-box { background: rgba(0,0,0,0.2); color: #28c76f; font-family: monospace; padding: 15px; border-radius: 8px; font-size: 0.9rem; border: 1px solid var(--border-color); word-break: break-all; }

        @media (max-width: 992px) { 
            .sidebar { transform: translateX(-100%); box-shadow: none; z-index: 1050; } 
            .sidebar.show { transform: translateX(0); box-shadow: 5px 0 30px rgba(0,0,0,0.9); } 
            .main-content { margin-left: 0; } 
            .mobile-toggle { display: block !important; margin-right: 15px; } 
            .top-header { flex-direction: column; align-items: flex-start; gap: 15px; padding: 15px 20px; background: linear-gradient(var(--overlay-mob), var(--overlay-mob)), var(--primary); border-bottom: none; } 
            .acoes-topo { display: flex; flex-direction: column; width: 100%; gap: 10px; } 
            .btn-acao { width: 100%; margin: 0; } 
        }
        .mobile-toggle { display: none; background: none; border: none; color: #fff; font-size: 1.5rem; cursor: pointer; }
        .overlay { display: none; position: fixed; inset: 0; background: rgba(0,0,0,0.7); z-index: 1040; backdrop-filter: blur(3px); }
        .overlay.show { display: block; }
    </style>
</head>
<body>
<?php include 'menu.php'; ?>
<div class="overlay" id="overlay" onclick="toggleMenu()"></div>

<main class="main-content d-flex flex-column min-vh-100">
    <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"><i class="fab fa-whatsapp text-success me-2 bg-white rounded-circle p-1"></i> Automação Diária</div>
        </div>
        <div class="acoes-topo d-flex gap-2">
            <button onclick="new bootstrap.Modal(document.getElementById('modalTutorial')).show()" class="btn btn-info fw-bold btn-acao text-dark rounded-pill px-4 shadow-sm" style="letter-spacing: 0.5px;"><i class="fas fa-cogs me-1"></i> CONFIGURAR CRON</button>
            <form method="POST" style="margin:0;" class="btn-acao">
                <input type="hidden" name="acao" value="disparo_manual">
                <button type="submit" class="btn btn-warning fw-bold w-100 text-dark rounded-pill px-4 shadow-sm" style="letter-spacing: 0.5px;" onclick="return confirm('Iniciar disparos reais para os seus clientes com os dados da aba Configuração?')"><i class="fas fa-paper-plane me-1"></i> DISPARAR MANUAL</button>
            </form>
            <form method="POST" style="margin:0;" class="btn-acao">
                <input type="hidden" name="acao" value="limpar_logs">
                <button type="submit" class="btn btn-danger fw-bold w-100 rounded-pill px-4 shadow-sm" style="letter-spacing: 0.5px;" onclick="return confirm('Apagar o seu histórico de disparos?')"><i class="fas fa-trash-alt me-1"></i> LIMPAR LOGS</button>
            </form>
        </div>
    </div>

    <div class="container-fluid px-3 px-md-4 flex-grow-1">
        <?php if($msg): ?><div class="alert alert-<?= $msg_tipo ?> alert-dismissible fade show border-0 shadow-sm fw-bold"><?= $msg ?><button class="btn-close" data-bs-dismiss="alert"></button></div><?php endif; ?>
        
        <div class="card card-custom shadow-lg border-0">
            <div class="card-header bg-transparent border-bottom-0 pt-4 pb-2 px-4">
                <h5 class="mb-0 fw-bold" style="color: var(--text-color);"><i class="fas fa-history me-2 text-primary"></i> Seu Histórico de Disparos</h5>
            </div>
            <div class="table-responsive p-3">
                <table class="table table-custom table-hover align-middle">
                    <thead><tr><th class="ps-4">Data/Hora</th><th>Origem</th><th>Resumo da Cobrança</th><th class="text-center pe-4">Status</th></tr></thead>
                    <tbody>
                        <?php if (empty($historico)): ?><tr><td colspan="4" class="text-center py-5" style="color: var(--text-color); opacity: 0.5;"><i class="fas fa-comment-slash fs-2 mb-2"></i><br>Nenhum disparo registrado para os seus clientes.</td></tr>
                        <?php else: foreach($historico as $h): ?>
                            <tr>
                                <td class="ps-4 fw-bold text-info" style="white-space:nowrap;"><?= date('d/m/Y H:i', strtotime($h['data_disparo'])) ?></td>
                                <td><span class="badge <?= strpos($h['origem'], 'Cron') !== false ? 'bg-secondary' : 'bg-primary' ?> p-2 shadow-sm border border-secondary"><?= htmlspecialchars($h['origem']) ?></span></td>
                                <td style="color: var(--text-color); opacity: 0.8;" class="small fw-bold"><?= htmlspecialchars($h['resumo']) ?></td>
                                <td class="text-center pe-4"><span class="badge bg-success bg-opacity-10 text-success border border-success p-2">Sucesso</span></td>
                            </tr>
                        <?php endforeach; endif; ?>
                    </tbody>
                </table>
            </div>
        </div>
    </div>
    
    <div class="mt-auto w-100">
        <?php include 'rodape.php'; ?>
    </div>
</main>

<div class="modal fade" id="modalTutorial" tabindex="-1">
    <div class="modal-dialog modal-dialog-centered modal-lg">
        <div class="modal-content border-info" style="background-color: var(--bg-card);">
            <div class="modal-header border-info bg-info bg-opacity-10">
                <h5 class="modal-title fw-bold text-info">Configurar Automação Diária</h5>
                <button type="button" class="btn-close" data-bs-dismiss="modal" style="filter: invert(1) grayscale(100%) brightness(200%);"></button>
            </div>
            <div class="modal-body p-4" style="color: var(--text-color);">
                <div class="alert alert-warning border-0 fw-bold shadow-sm mb-4"><i class="fas fa-exclamation-triangle me-2"></i> Certifique-se de configurar a sua URL, Senha e Instância no menu <b>Config. API Zap</b>.</div>
                <p style="opacity: 0.8;">Para que o painel envie as mensagens sozinho todo dia ao meio-dia, o administrador do sistema precisa agendar este comando:</p>
                <div class="code-box fw-bold shadow-sm">wget -q -O - https://<?= $_SERVER['HTTP_HOST'] ?>/cron_cobranca.php >/dev/null 2>&1</div>
            </div>
            <div class="modal-footer border-secondary">
                <button class="btn btn-secondary fw-bold w-100 shadow-sm rounded-pill py-2" data-bs-dismiss="modal">ENTENDI</button>
            </div>
        </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'); 
    } 
</script>
</body>
</html>
