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

// --- FORÇA O BANCO DE DADOS A ACEITAR EMOJIS (UTF8MB4) ---
try {
    $connUser->exec("SET NAMES utf8mb4");
    $connGeral->exec("SET NAMES utf8mb4");
} catch (Exception $e) {}

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

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

if (!$isAdmin) {
    $stmtCheck = $connUser->prepare("SELECT bloqueado, data_premio FROM rev WHERE usuario = ? LIMIT 1");
    $stmtCheck->execute([$usuarioLogado]);
    $me = $stmtCheck->fetch(PDO::FETCH_ASSOC);
    if ($me) {
        $isBloq = ($me['bloqueado'] == 'sim');
        $isVenc = ((int)$me['data_premio'] > 0 && (int)$me['data_premio'] < time());
        if ($isBloq || $isVenc) {
            $motivo = $isBloq ? "BLOQUEADO PELO ADMINISTRADOR" : "PLANO VENCIDO";
            die("<!DOCTYPE html><html lang='pt-br'><head><meta charset='UTF-8'><title>Acesso Negado</title><link href='https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css' rel='stylesheet'><style>body{background:#151521;color:#fff;display:flex;align-items:center;justify-content:center;height:100vh;text-align:center;}</style></head><body><div><h1 class='text-danger fw-bold' style='font-size: 4rem;'>🚫</h1><h2 class='fw-bold text-uppercase'>ACESSO SUSPENSO</h2><p class='lead text-muted'>$motivo</p><a href='sair.php' class='btn btn-outline-light mt-4 px-5'>Sair do Painel</a></div></body></html>");
        }
    }
}

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


// --- 3. CORREÇÃO DO MENU LATERAL (MENSAGENS NÃO LIDAS) ---
$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) { }


// --- 4. CRIAR E ATUALIZAR TABELAS PARA ACEITAR EMOJIS ---
try {
    $connUser->exec("CREATE TABLE IF NOT EXISTS email_modelos (
        id INT AUTO_INCREMENT PRIMARY KEY,
        CadUser VARCHAR(50),
        titulo VARCHAR(100),
        assunto VARCHAR(150),
        mensagem TEXT
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;");

    // ATUALIZA A TABELA QUE JÁ EXISTE PARA O NOVO FORMATO DE EMOJIS
    $connUser->exec("ALTER TABLE email_modelos CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;");

    $connUser->exec("CREATE TABLE IF NOT EXISTS circular_config (
        id INT AUTO_INCREMENT PRIMARY KEY,
        usuario VARCHAR(50) UNIQUE,
        email VARCHAR(150),
        senha_app VARCHAR(100)
    )");
} catch (Exception $e) {}


// ====================================================================================
// --- 5. MOTOR NATIVO SMTP (CONECTA DIRETO NO SEU GMAIL) ---
// ====================================================================================
function dispararEmailSMTP($para, $assunto, $mensagem, $nomePainel, $user, $pass, $host, $port) {
    if(empty($user) || empty($pass)) return false;

    $crlf = "\r\n";
    $headers = "From: =?UTF-8?B?".base64_encode($nomePainel)."?= <$user>$crlf";
    $headers .= "To: <$para>$crlf";
    $headers .= "Subject: =?UTF-8?B?".base64_encode($assunto)."?=$crlf";
    $headers .= "MIME-Version: 1.0$crlf";
    $headers .= "Content-Type: text/html; charset=utf-8$crlf";

    $host_con = ($port == 465 && strpos($host, 'ssl://') === false) ? 'ssl://' . $host : $host;
    $clean_host = str_replace('ssl://', '', $host);

    $socket = @fsockopen($host_con, $port, $errno, $errstr, 10);
    if(!$socket) return false;

    function ler_resposta($socket) {
        $res = '';
        while($str = @fgets($socket, 515)) {
            $res .= $str;
            if(substr($str, 3, 1) == ' ') break;
        }
        return $res;
    }

    ler_resposta($socket);
    @fputs($socket, "EHLO $clean_host$crlf"); ler_resposta($socket);
    
    if ($port == 587) {
        @fputs($socket, "STARTTLS$crlf"); ler_resposta($socket);
        @stream_socket_enable_crypto($socket, true, STREAM_CRYPTO_METHOD_TLS_CLIENT);
        @fputs($socket, "EHLO $clean_host$crlf"); ler_resposta($socket);
    }

    @fputs($socket, "AUTH LOGIN$crlf"); ler_resposta($socket);
    @fputs($socket, base64_encode($user).$crlf); ler_resposta($socket);
    @fputs($socket, base64_encode(trim($pass)).$crlf); 
    
    $auth_res = ler_resposta($socket);
    if(substr($auth_res, 0, 3) != '235') { @fclose($socket); return false; } 

    @fputs($socket, "MAIL FROM: <$user>$crlf"); ler_resposta($socket);
    @fputs($socket, "RCPT TO: <$para>$crlf"); ler_resposta($socket);
    @fputs($socket, "DATA$crlf"); ler_resposta($socket);
    @fputs($socket, $headers . $crlf . $mensagem . $crlf . ".$crlf"); ler_resposta($socket);
    @fputs($socket, "QUIT$crlf");
    @fclose($socket);

    return true;
}

// ====================================================================================
// ==================== LÓGICA DE ENVIO EM LOTES (AJAX BACKGROUND) ====================
// ====================================================================================
if (isset($_POST['ajax_action'])) {
    
    if ($_POST['ajax_action'] === 'get_emails') {
        
        $smtp_email = trim($_POST['smtp_email'] ?? '');
        $smtp_senha = trim($_POST['smtp_senha'] ?? '');
        
        if (!empty($smtp_email) && !empty($smtp_senha)) {
            try {
                $sqlSave = "INSERT INTO circular_config (usuario, email, senha_app) VALUES (?, ?, ?) 
                            ON DUPLICATE KEY UPDATE email = VALUES(email), senha_app = VALUES(senha_app)";
                $connUser->prepare($sqlSave)->execute([$usuarioLogado, $smtp_email, $smtp_senha]);
            } catch(Exception $e) {}
        }

        $grupo = $_POST['grupo']; 
        $status = $_POST['status']; 
        $revendedor_alvo = $_POST['revendedor'] ?? 'Todos';

        $emails_destinos = [];
        $tabelas = ($grupo === 'Todos') ? ['usuario', 'teste'] : [$grupo];

        foreach ($tabelas as $tabela) {
            $sql = "SELECT email, data_premio FROM $tabela WHERE email IS NOT NULL AND email != ''";
            
            if (!$isAdmin) {
                $sql .= " AND CadUser = '$usuarioLogado'";
            } else {
                if ($revendedor_alvo !== 'Todos') {
                    $sql .= " AND CadUser = " . $connUser->quote($revendedor_alvo);
                }
            }

            if ($status === 'ativo') {
                $sql .= " AND (bloqueado != 'sim' OR bloqueado IS NULL)";
            } elseif ($status === 'bloqueado') {
                $sql .= " AND bloqueado = 'sim'";
            }

            $stmt = $connUser->query($sql);
            $res = $stmt->fetchAll(PDO::FETCH_ASSOC);
            $tempo_atual = time();

            foreach ($res as $r) {
                $email_valido = filter_var(trim($r['email']), FILTER_VALIDATE_EMAIL);
                if ($email_valido) {
                    $venc_ts = is_numeric($r['data_premio']) ? (int)$r['data_premio'] : strtotime($r['data_premio']);
                    $isVenc = ($venc_ts < $tempo_atual);

                    if ($status === 'ativo' && $isVenc) continue;
                    if ($status === 'vencido' && !$isVenc) continue;

                    $emails_destinos[] = $email_valido;
                }
            }
        }
        
        $emails_destinos = array_values(array_unique($emails_destinos));
        echo json_encode(['status' => 'ok', 'emails' => $emails_destinos]);
        exit;
    }

    if ($_POST['ajax_action'] === 'send_chunk') {
        $emails = json_decode($_POST['emails'], true);
        $assunto = $_POST['assunto'];
        $mensagemHTML = $_POST['mensagem'];
        
        $smtp_email = trim($_POST['smtp_email']);
        $smtp_senha = trim($_POST['smtp_senha']);

        if (is_array($emails) && count($emails) > 0) {
            foreach ($emails as $destino) {
                dispararEmailSMTP($destino, $assunto, $mensagemHTML, $nomePainel, $smtp_email, $smtp_senha, 'smtp.gmail.com', 465);
                sleep(1);
            }
        }
        echo json_encode(['status' => 'ok']);
        exit;
    }
}
// ====================================================================================

$msg_alerta = ""; $msg_tipo = "";

if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['acao'])) {
    
    // CRIAR NOVO MODELO
    if ($_POST['acao'] === 'salvar_modelo') {
        $titulo = trim($_POST['titulo_modelo']);
        $assunto = trim($_POST['assunto_modelo']);
        $mensagem = trim($_POST['mensagem_modelo']); 
        
        if (!empty($titulo) && !empty($mensagem)) {
            $sql = "INSERT INTO email_modelos (CadUser, titulo, assunto, mensagem) VALUES (?, ?, ?, ?)";
            $connUser->prepare($sql)->execute([$usuarioLogado, $titulo, $assunto, $mensagem]);
            $msg_alerta = "Modelo de e-mail salvo com sucesso!"; $msg_tipo = "success";
        }
    }

    // EXCLUIR MODELO
    if ($_POST['acao'] === 'excluir_modelo') {
        $id_mod = (int)$_POST['id_modelo'];
        $connUser->prepare("DELETE FROM email_modelos WHERE id=? AND CadUser=?")->execute([$id_mod, $usuarioLogado]);
        $msg_alerta = "Modelo excluído com sucesso!"; $msg_tipo = "danger";
    }

    // EDITAR MODELO EXISTENTE
    if ($_POST['acao'] === 'editar_modelo') {
        $id_mod = (int)$_POST['id_modelo'];
        $titulo = trim($_POST['titulo_modelo']);
        $assunto = trim($_POST['assunto_modelo']);
        $mensagem = trim($_POST['mensagem_modelo']);
        
        if (!empty($titulo) && !empty($mensagem)) {
            $connUser->prepare("UPDATE email_modelos SET titulo=?, assunto=?, mensagem=? WHERE id=? AND CadUser=?")->execute([$titulo, $assunto, $mensagem, $id_mod, $usuarioLogado]);
            $msg_alerta = "Modelo atualizado com sucesso!"; $msg_tipo = "success";
        }
    }
}

$lista_revendedores = [];
if ($isAdmin) {
    $lista_revendedores = $connUser->query("SELECT usuario FROM rev ORDER BY usuario ASC")->fetchAll(PDO::FETCH_ASSOC);
}

$stmtMod = $connUser->prepare("SELECT id, titulo, assunto, mensagem FROM email_modelos WHERE CadUser = ?");
$stmtMod->execute([$usuarioLogado]);
$modelos = $stmtMod->fetchAll(PDO::FETCH_ASSOC);

$saved_email = '';
$saved_senha = '';
try {
    $stmtConf = $connUser->prepare("SELECT email, senha_app FROM circular_config WHERE usuario = ? LIMIT 1");
    $stmtConf->execute([$usuarioLogado]);
    if ($rowConf = $stmtConf->fetch(PDO::FETCH_ASSOC)) {
        $saved_email = $rowConf['email'];
        $saved_senha = $rowConf['senha_app'];
    }
} catch(Exception $e) {}

// Se o usuário ainda não salvou, tenta achar na base do Admin
if(empty($saved_email)) {
    try {
        $stmtG = $connGeral->query("SELECT email, senha FROM smtp LIMIT 1");
        if($rowG = $stmtG->fetch(PDO::FETCH_ASSOC)) {
            $saved_email = $rowG['email'] ?? '';
            $saved_senha = $rowG['senha'] ?? '';
        }
    } catch(Exception $e){}
}

?>

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

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


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

        .card-custom { background: var(--bg-card) !important; border: 1px solid var(--border-color); border-radius: 12px; padding: 25px; box-shadow: 0 4px 20px rgba(0,0,0,0.2); }
        .form-control, .form-select { background: #151521 !important; border: 1px solid #444 !important; color: #fff !important; padding: 12px; border-radius: 8px; }
        .form-control:focus, .form-select:focus { border-color: var(--primary) !important; box-shadow: 0 0 0 0.25rem rgba(115, 103, 240, 0.25); }
        
        .note-editor.note-frame { border-color: #444; border-radius: 8px; overflow: hidden; }
        .note-editor .note-toolbar, .note-popover .popover-content { background-color: #2b2b40; border-bottom: 1px solid #444; }
        .note-editor .note-editing-area .note-editable { background-color: #151521; color: #fff; }
        .note-btn { background-color: #1e1e2d; border-color: #444; color: #fff; }
        .note-btn:hover { background-color: var(--primary); color: #fff; }
        
        .label-visivel { color: #ffffff !important; font-weight: 700; text-transform: uppercase; font-size: 0.75rem; margin-bottom: 5px; display: block; }
        
        .progress-container { display: none; margin-top: 20px; background: #151521; border-radius: 10px; padding: 15px; border: 1px solid #444; }
        .progress { height: 20px; background-color: #2b2b40; border-radius: 10px; overflow: hidden; }
        .progress-bar { background-color: #28c76f; transition: width 0.4s ease; font-weight: bold; }

        @media (max-width: 992px) { .sidebar { transform: translateX(-100%); } .sidebar.show { transform: translateX(0); } .main-content { margin-left: 0; } .mobile-toggle { display: block !important; margin-right: 15px; } }
        .mobile-toggle { display: none; background: none; border: none; color: #fff; font-size: 1.5rem; }
        .overlay { display: none; position: fixed; inset: 0; background: rgba(0,0,0,0.5); z-index: 1040; }
        .overlay.show { display: block; }
    </style>
</head>
<body>
<?php include 'menu.php'; ?>


<main class="main-content">
    <div class="top-header">
        <div class="d-flex align-items-center">
            <button class="mobile-toggle" onclick="toggleMenu()"><i class="fas fa-bars"></i></button>
            <div class="header-title">Enviar Circular</div>
        </div>
        
        <div class="d-flex gap-2">
            <button onclick="new bootstrap.Modal(document.getElementById('modalGerenciarModelos')).show()" class="btn btn-outline-light btn-sm fw-bold px-3 rounded-pill shadow-sm d-none d-md-block">
                <i class="fas fa-list me-1"></i> GERENCIAR MODELOS
            </button>
            <button onclick="new bootstrap.Modal(document.getElementById('modalGerenciarModelos')).show()" class="btn btn-outline-light btn-sm fw-bold px-2 rounded-pill shadow-sm d-md-none">
                <i class="fas fa-list"></i>
            </button>
            
            <button onclick="new bootstrap.Modal(document.getElementById('modalNovoModelo')).show()" class="btn btn-warning btn-sm fw-bold px-3 rounded-pill text-dark shadow-sm">
                <i class="fas fa-plus-circle me-1"></i> NOVO MODELO
            </button>
        </div>
    </div>

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

        <div class="row">
            <div class="col-lg-12">
                <div class="card card-custom">
                    
                    <form id="formCircular">
                        
                        <div class="mb-4">
                            <button class="btn w-100 fw-bold d-flex justify-content-between align-items-center p-3 rounded shadow-sm" type="button" data-bs-toggle="collapse" data-bs-target="#boxSMTP" aria-expanded="false" aria-controls="boxSMTP" style="border: 1px dashed rgba(255, 159, 67, 0.6); background: rgba(255, 159, 67, 0.05); color: #ff9f43;">
                                <span><i class="fas fa-cog me-2"></i> Configuração de Envio (Clique aqui para configurar seu e-mail)</span>
                                <i class="fas fa-chevron-down"></i>
                            </button>
                            
                            <div class="collapse" id="boxSMTP">
                                <div class="row g-3 mt-2 p-4 rounded" style="background: rgba(255, 159, 67, 0.1); border: 1px solid rgba(255, 159, 67, 0.3);">
                                    <div class="col-md-6">
                                        <label class="label-visivel text-white">SEU GMAIL (REMETENTE)</label>
                                        <input type="email" name="smtp_email" id="smtp_email" class="form-control" placeholder="seuemail@gmail.com" value="<?= htmlspecialchars($saved_email) ?>">
                                    </div>
                                    <div class="col-md-6">
                                        <label class="label-visivel text-white">SENHA DE APP (16 LETRAS)</label>
                                        <input type="text" name="smtp_senha" id="smtp_senha" class="form-control" placeholder="xxxx xxxx xxxx xxxx" value="<?= htmlspecialchars($saved_senha) ?>">
                                    </div>
                                    <div class="col-12 mt-2">
                                        <small class="text-white-50"><i class="fas fa-info-circle me-1"></i> Esses dados ficarão <strong>salvos automaticamente</strong> para o próximo envio. Os e-mails serão disparados através da sua conta.</small>
                                    </div>
                                </div>
                            </div>
                        </div>
                        
                        <div class="row g-3 mb-4">
                            <div class="col-md-6">
                                <label class="label-visivel">E-MAIL MODELO</label>
                                <select id="selecionaModelo" class="form-select text-info fw-bold" onchange="carregarModelo(this.value)">
                                    <option value="">-- Selecione uma opção ou escreva abaixo --</option>
                                    <?php foreach($modelos as $m): ?>
                                        <option value="<?= $m['id'] ?>"><?= htmlspecialchars($m['titulo']) ?></option>
                                    <?php endforeach; ?>
                                </select>
                            </div>
                            
                            <div class="col-md-6">
                                <label class="label-visivel">ASSUNTO DO E-MAIL</label>
                                <input type="text" name="assunto" id="assuntoEmail" class="form-control" placeholder="Assunto que o cliente vai ver..." required>
                            </div>
                        </div>

                        <div class="row g-3 mb-4 border-top border-secondary pt-3 mt-1">
                            <?php if ($isAdmin): ?>
                            <div class="col-md-4">
                                <label class="label-visivel text-warning">REVENDEDOR (DONO)</label>
                                <select name="revendedor" class="form-select">
                                    <option value="Todos">Todos do Painel</option>
                                    <option value="<?= htmlspecialchars($_SESSION['usuario']) ?>">Meus Próprios Clientes</option>
                                    <?php foreach($lista_revendedores as $rev): ?>
                                        <option value="<?= htmlspecialchars($rev['usuario']) ?>"><?= htmlspecialchars($rev['usuario']) ?></option>
                                    <?php endforeach; ?>
                                </select>
                            </div>
                            <?php endif; ?>

                            <div class="col-md-4">
                                <label class="label-visivel text-success">GRUPO</label>
                                <select name="grupo" class="form-select">
                                    <option value="usuario">Apenas Clientes (Pagantes)</option>
                                    <option value="teste">Apenas Testes</option>
                                    <option value="Todos">Clientes e Testes</option>
                                </select>
                            </div>

                            <div class="col-md-4">
                                <label class="label-visivel text-danger">STATUS</label>
                                <select name="status" class="form-select">
                                    <option value="Todos">Todos</option>
                                    <option value="ativo">Apenas Ativos</option>
                                    <option value="vencido">Apenas Esgotados/Vencidos</option>
                                    <option value="bloqueado">Apenas Bloqueados</option>
                                </select>
                            </div>
                        </div>

                        <div class="mb-4">
                            <label class="label-visivel">CORPO DA MENSAGEM</label>
                            <textarea name="mensagem" id="editorMensagem" required></textarea>
                        </div>

                        <div id="area_progresso" class="progress-container mb-4">
                            <div class="d-flex justify-content-between mb-2">
                                <span class="text-info fw-bold" id="texto_progresso">Preparando e-mails...</span>
                                <span class="text-warning small"><i class="fas fa-exclamation-triangle"></i> Não feche a página!</span>
                            </div>
                            <div class="progress">
                                <div id="barra_progresso" class="progress-bar progress-bar-striped progress-bar-animated" style="width: 0%;"></div>
                            </div>
                        </div>

                        <div class="text-end border-top border-secondary pt-4 mt-2">
                            <button type="submit" id="btnEnviar" class="btn btn-success fw-bold px-5 py-3 shadow">
                                <i class="fas fa-paper-plane me-2"></i> ENVIAR CIRCULAR
                            </button>
                        </div>

                    </form>
                </div>
            </div>
        </div>
    </div>
</main>

<div class="modal fade" id="modalGerenciarModelos" tabindex="-1">
    <div class="modal-dialog modal-dialog-centered modal-lg">
        <div class="modal-content bg-dark border-secondary text-white">
            <div class="modal-header border-secondary">
                <h5 class="modal-title fw-bold"><i class="fas fa-list me-2"></i> Gerenciar Modelos</h5>
                <button type="button" class="btn-close btn-close-white" data-bs-dismiss="modal"></button>
            </div>
            <div class="modal-body p-4">
                <div class="table-responsive">
                    <table class="table table-dark table-hover align-middle mb-0">
                        <thead>
                            <tr>
                                <th>Nome do Modelo</th>
                                <th>Assunto</th>
                                <th class="text-end">Opções</th>
                            </tr>
                        </thead>
                        <tbody>
                            <?php foreach($modelos as $m): ?>
                            <tr>
                                <td><?= htmlspecialchars($m['titulo']) ?></td>
                                <td class="text-white-50"><?= htmlspecialchars($m['assunto']) ?></td>
                                <td class="text-end">
                                    <button class="btn btn-sm btn-primary me-1 shadow-sm" title="Editar" onclick="abrirEdicaoModelo(<?= $m['id'] ?>)">
                                        <i class="fas fa-pen"></i>
                                    </button>
                                    <form method="POST" class="d-inline" onsubmit="return confirm('Deseja excluir permanentemente este modelo?')">
                                        <input type="hidden" name="acao" value="excluir_modelo">
                                        <input type="hidden" name="id_modelo" value="<?= $m['id'] ?>">
                                        <button type="submit" class="btn btn-sm btn-danger shadow-sm" title="Excluir"><i class="fas fa-trash"></i></button>
                                    </form>
                                </td>
                            </tr>
                            <?php endforeach; ?>
                            <?php if(empty($modelos)): ?>
                            <tr><td colspan="3" class="text-center text-white-50 py-4">Nenhum modelo cadastrado.</td></tr>
                            <?php endif; ?>
                        </tbody>
                    </table>
                </div>
            </div>
        </div>
    </div>
</div>

<div class="modal fade" id="modalEditarModelo" tabindex="-1">
    <div class="modal-dialog modal-dialog-centered modal-lg">
        <div class="modal-content bg-dark border-primary text-white">
            <form method="POST">
                <input type="hidden" name="acao" value="editar_modelo">
                <input type="hidden" name="id_modelo" id="edit_id_modelo">
                <div class="modal-header border-secondary">
                    <h5 class="modal-title fw-bold text-primary"><i class="fas fa-pen me-2"></i> Editar Modelo</h5>
                    <button type="button" class="btn-close btn-close-white" data-bs-dismiss="modal"></button>
                </div>
                <div class="modal-body p-4">
                    <div class="mb-3">
                        <label class="small fw-bold text-white-50">NOME DO MODELO</label>
                        <input type="text" name="titulo_modelo" id="edit_titulo_modelo" class="form-control" required>
                    </div>
                    <div class="mb-3">
                        <label class="small fw-bold text-white-50">ASSUNTO DO E-MAIL</label>
                        <input type="text" name="assunto_modelo" id="edit_assunto_modelo" class="form-control" required>
                    </div>
                    <div class="mb-3">
                        <label class="small fw-bold text-white-50">CORPO DO E-MAIL</label>
                        <textarea name="mensagem_modelo" id="editorEditarModelo" required></textarea>
                    </div>
                </div>
                <div class="modal-footer border-secondary">
                    <button type="submit" class="btn btn-primary w-100 fw-bold">SALVAR ALTERAÇÕES</button>
                </div>
            </form>
        </div>
    </div>
</div>

<div class="modal fade" id="modalNovoModelo" tabindex="-1">
    <div class="modal-dialog modal-dialog-centered modal-lg">
        <div class="modal-content bg-dark border-warning text-white">
            <form method="POST">
                <input type="hidden" name="acao" value="salvar_modelo">
                <div class="modal-header border-secondary">
                    <h5 class="modal-title fw-bold text-warning"><i class="fas fa-star me-2"></i> Criar Novo Modelo</h5>
                    <button type="button" class="btn-close btn-close-white" data-bs-dismiss="modal"></button>
                </div>
                <div class="modal-body p-4">
                    <div class="mb-3">
                        <label class="small fw-bold text-white-50">NOME DO MODELO (Apenas para você identificar)</label>
                        <input type="text" name="titulo_modelo" class="form-control" placeholder="Ex: Lembrete de Vencimento" required>
                    </div>
                    <div class="mb-3">
                        <label class="small fw-bold text-white-50">ASSUNTO (Que o cliente vai ler)</label>
                        <input type="text" name="assunto_modelo" class="form-control" placeholder="Ex: Seu plano vence hoje!" required>
                    </div>
                    <div class="mb-3">
                        <label class="small fw-bold text-white-50">CORPO DO E-MAIL</label>
                        <textarea name="mensagem_modelo" id="editorNovoModelo" required></textarea>
                    </div>
                </div>
                <div class="modal-footer border-secondary">
                    <button type="submit" class="btn btn-warning w-100 fw-bold">SALVAR MODELO</button>
                </div>
            </form>
        </div>
    </div>
</div>

<script>
    const arrayModelos = <?= json_encode($modelos) ?>;

    function toggleMenu() { 
        document.getElementById('sidebar').classList.toggle('show'); 
        document.getElementById('overlay').classList.toggle('show'); 
    }

    function carregarModelo(idModelo) {
        if (!idModelo) {
            document.getElementById('assuntoEmail').value = '';
            $('#editorMensagem').summernote('code', '');
            return;
        }

        const modelo = arrayModelos.find(m => m.id == idModelo);
        if (modelo) {
            document.getElementById('assuntoEmail').value = modelo.assunto;
            $('#editorMensagem').summernote('code', modelo.mensagem);
        }
    }

    function abrirEdicaoModelo(idModelo) {
        const modelo = arrayModelos.find(m => m.id == idModelo);
        if (modelo) {
            let listModal = bootstrap.Modal.getInstance(document.getElementById('modalGerenciarModelos'));
            if(listModal) listModal.hide();

            document.getElementById('edit_id_modelo').value = modelo.id;
            document.getElementById('edit_titulo_modelo').value = modelo.titulo;
            document.getElementById('edit_assunto_modelo').value = modelo.assunto;
            $('#editorEditarModelo').summernote('code', modelo.mensagem);
            
            new bootstrap.Modal(document.getElementById('modalEditarModelo')).show();
        }
    }

    document.getElementById('formCircular').addEventListener('submit', async function(e) {
        e.preventDefault(); 

        let formData = new FormData(this);
        
        let sEmail = formData.get('smtp_email');
        let sSenha = formData.get('smtp_senha');
        
        if(!sEmail || sEmail.trim() === "" || !sSenha || sSenha.trim() === "") {
            alert('ATENÇÃO: Você precisa abrir a aba "Configuração de Envio" lá em cima e preencher seu Gmail e Senha de App antes de enviar!');
            
            let collapseEl = document.getElementById('boxSMTP');
            let bsCollapse = new bootstrap.Collapse(collapseEl, {toggle: false});
            bsCollapse.show();
            return;
        }

        if(!confirm('ATENÇÃO: Iniciar o envio em massa para a lista selecionada?')) return;

        let btn = document.getElementById('btnEnviar');
        btn.disabled = true;
        btn.innerHTML = '<i class="fas fa-spinner fa-spin me-2"></i> BUSCANDO LISTA...';

        formData.append('ajax_action', 'get_emails'); 

        try {
            let req = await fetch('', { method: 'POST', body: formData });
            let res = await req.json();

            if (res.emails.length === 0) {
                alert('Nenhum e-mail válido encontrado para esses filtros!');
                btn.disabled = false;
                btn.innerHTML = '<i class="fas fa-paper-plane me-2"></i> ENVIAR CIRCULAR';
                return;
            }

            document.getElementById('area_progresso').style.display = 'block';
            
            let totalEmails = res.emails.length;
            let enviados = 0;
            let tamanhoLote = 20; 

            btn.innerHTML = '<i class="fas fa-spinner fa-spin me-2"></i> DISPARANDO LOTES...';

            for (let i = 0; i < totalEmails; i += tamanhoLote) {
                let lote = res.emails.slice(i, i + tamanhoLote);
                
                let loteData = new FormData();
                loteData.append('ajax_action', 'send_chunk');
                loteData.append('assunto', formData.get('assunto'));
                loteData.append('mensagem', formData.get('mensagem'));
                
                loteData.append('smtp_email', sEmail);
                loteData.append('smtp_senha', sSenha);
                
                loteData.append('emails', JSON.stringify(lote));

                await fetch('', { method: 'POST', body: loteData });

                enviados += lote.length;
                if (enviados > totalEmails) enviados = totalEmails;
                
                let pct = Math.round((enviados / totalEmails) * 100);
                document.getElementById('barra_progresso').style.width = pct + '%';
                document.getElementById('texto_progresso').innerText = 'Enviados: ' + enviados + ' de ' + totalEmails + ' (' + pct + '%)';
            }

            btn.innerHTML = '<i class="fas fa-check me-2"></i> CONCLUÍDO!';
            btn.classList.replace('btn-success', 'btn-primary');
            alert('Sucesso! ' + totalEmails + ' e-mails foram processados na fila.');

        } catch (err) {
            alert('Ocorreu um erro no processo. Verifique sua conexão e tente novamente.');
            console.error(err);
            btn.disabled = false;
            btn.innerHTML = '<i class="fas fa-paper-plane me-2"></i> TENTAR NOVAMENTE';
            document.getElementById('area_progresso').style.display = 'none';
        }
    });

    $(document).ready(function() {
        var toolbarConfig = [
            ['style', ['style']],
            ['font', ['bold', 'underline', 'clear', 'color']],
            ['para', ['ul', 'ol', 'paragraph']],
            ['table', ['table']],
            ['insert', ['link', 'picture', 'video']],
            ['view', ['fullscreen', 'codeview']]
        ];

        $('#editorMensagem').summernote({
            placeholder: 'Escreva a mensagem do e-mail aqui ou selecione um modelo...',
            tabsize: 2,
            height: 300,
            toolbar: toolbarConfig
        });

        $('#editorNovoModelo').summernote({
            placeholder: 'Monte o texto do seu novo modelo aqui...',
            tabsize: 2,
            height: 250,
            toolbar: toolbarConfig
        });
        
        $('#editorEditarModelo').summernote({
            placeholder: 'Edite o texto do seu modelo aqui...',
            tabsize: 2,
            height: 250,
            toolbar: toolbarConfig
        });
    });
</script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/js/bootstrap.bundle.min.js"></script>
</body>
</html>