<?php
session_start();
if(!isset($_SESSION['rev_logado'])){ header("Location: index_rev.php"); exit(); }
include('../api/conexao_rev.php');
include_once('../funcoes_logs.php'); // INCLUINDO O GRAVADOR DE LOGS

$id_rev = $_SESSION['rev_logado'];

// Busca o nome do revendedor para o log
$dados_sessao = $conn_rev->query("SELECT login_rev FROM dados_rev WHERE id_rev = '$id_rev'")->fetch_assoc();
$nome_rev_logado = $dados_sessao['login_rev'];

// 1. CADASTRAR CLIENTE (INTEGRADO COM O APP IBO)
if(isset($_POST['cadastrar_cli'])){
    $check = $conn_rev->query("SELECT creditos_rev FROM dados_rev WHERE id_rev = '$id_rev'");
    $rev = $check->fetch_assoc();

    if($rev['creditos_rev'] > 0){
        $nome    = $_POST['nome']; 
        $login   = $_POST['login']; 
        $senha   = $_POST['senha']; 
        $venc    = $_POST['vencimento']; 
        $dns     = $_POST['url_xtream'];
        $mac     = strtoupper($_POST['mac_cli']); 
        $m3u_input = $_POST['url_m3u_input'];

        if(!empty($dns) && !empty($login) && !empty($senha)){
            $type = "0"; // Xtream
            $url_final = $dns . "/get.php?username=" . $login . "&password=" . $senha . "&type=m3u_plus&output=ts";
        } else {
            $type = "1"; // M3U Externo
            $url_final = $m3u_input;
        }

        $sql_rev = "INSERT INTO clientes_rev (id_rev_pai, nome_cli, login_cli, senha_cli, vencimento_cli, url_m3u, url_xtream, mac_cli) 
                    VALUES ('$id_rev', '$nome', '$login', '$senha', '$venc', '$url_final', '$dns', '$mac')";
        
        if($conn_rev->query($sql_rev)){
            try {
                $db_app = new SQLite3("../api/.ansdb.db");
                $stmt = $db_app->prepare("INSERT INTO ibo (mac_address, title, username, password, dns, url, type, expire_date, id_user, active) 
                                      VALUES (:mac, :title, :user, :pass, :dns, :url, :type, :expire, :id_user, 1)");
                $stmt->bindValue(':mac', $mac, SQLITE3_TEXT);
                $stmt->bindValue(':title', $nome, SQLITE3_TEXT);
                $stmt->bindValue(':user', $login, SQLITE3_TEXT);
                $stmt->bindValue(':pass', $senha, SQLITE3_TEXT);
                $stmt->bindValue(':dns', $dns, SQLITE3_TEXT);
                $stmt->bindValue(':url', $url_final, SQLITE3_TEXT);
                $stmt->bindValue(':type', $type, SQLITE3_TEXT);
                $stmt->bindValue(':expire', $venc, SQLITE3_TEXT);
                $stmt->bindValue(':id_user', $id_rev, SQLITE3_INTEGER);
                $stmt->execute();
                $db_app->close();

                $conn_rev->query("UPDATE dados_rev SET creditos_rev = creditos_rev - 1 WHERE id_rev = '$id_rev'");
                
                // GRAVAR LOG DE CADASTRO
                $detalhes_log = "Cliente: $nome | MAC: $mac | Login: $login | Venc: $venc | Link: $url_final";
                gravarLogRevenda($nome_rev_logado, "Cadastrou Cliente", $detalhes_log);

                $status = "sucesso_cadastro";
            } catch (Exception $e) { $status = "erro_sqlite"; }
        }
    } else { $status = "erro_saldo"; }
}

// 2. RENOVAR (Segurança: Verifica se o cliente pertence ao revendedor logado)
if(isset($_GET['confirmar_renovacao'])){
    $id_cli = $_GET['confirmar_renovacao'];
    
    // Verifica saldo
    $check_saldo = $conn_rev->query("SELECT creditos_rev FROM dados_rev WHERE id_rev = '$id_rev'")->fetch_assoc();
    
    if($check_saldo['creditos_rev'] > 0){
        $dados_c = $conn_rev->query("SELECT nome_cli, mac_cli, vencimento_cli FROM clientes_rev WHERE id_cli = '$id_cli' AND id_rev_pai = '$id_rev'")->fetch_assoc();
        
        if($dados_c){
            $novo_venc = date('Y-m-d', strtotime($dados_c['vencimento_cli'] . ' + 30 days'));
            $conn_rev->query("UPDATE clientes_rev SET vencimento_cli = '$novo_venc' WHERE id_cli = '$id_cli'");
            $conn_rev->query("UPDATE dados_rev SET creditos_rev = creditos_rev - 1 WHERE id_rev = '$id_rev'");
            try {
                $db_app = new SQLite3("../api/.ansdb.db");
                $mac_at = strtoupper($dados_c['mac_cli']);
                $db_app->exec("UPDATE ibo SET expire_date = '$novo_venc' WHERE mac_address = '$mac_at'");
                $db_app->close();

                // GRAVAR LOG DE RENOVAÇÃO
                $nome_cli_log = $dados_c['nome_cli'];
                $detalhes_log = "Cliente: $nome_cli_log | MAC: $mac_at | Novo Vencimento: $novo_venc";
                gravarLogRevenda($nome_rev_logado, "Renovou Cliente", $detalhes_log);

            } catch(Exception $e) {}
            $status = "sucesso_renovacao";
        }
    } else { $status = "erro_saldo"; }
}

// 3. EXCLUIR (Segurança: Só exclui se for o dono)
if(isset($_GET['confirmar_exclusao'])){
    $id_cli = $_GET['confirmar_exclusao'];
    $dados_c = $conn_rev->query("SELECT nome_cli, mac_cli FROM clientes_rev WHERE id_cli = '$id_cli' AND id_rev_pai = '$id_rev'")->fetch_assoc();
    
    if($dados_c){
        $nome_cli_log = $dados_c['nome_cli'];
        $mac_at = strtoupper($dados_c['mac_cli']);

        $conn_rev->query("DELETE FROM clientes_rev WHERE id_cli = '$id_cli'");
        try {
            $db_app = new SQLite3("../api/.ansdb.db");
            $db_app->exec("DELETE FROM ibo WHERE mac_address = '$mac_at'");
            $db_app->close();

            // GRAVAR LOG DE EXCLUSÃO
            $detalhes_log = "Cliente: $nome_cli_log | MAC: $mac_at";
            gravarLogRevenda($nome_rev_logado, "Excluiu Cliente", $detalhes_log);

        } catch(Exception $e) {}
        $status = "sucesso_exclusao";
    }
}
?>
<!DOCTYPE html>
<html lang="pt-br">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Gestão Premium | IPTV</title>
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/all.min.css">
    <script src="https://cdn.jsdelivr.net/npm/sweetalert2@11"></script>
    <style>
        html, body { background-color: #020617 !important; color: #e2e8f0 !important; font-family: sans-serif; margin: 0; padding: 0; }
        .container { padding: 15px; max-width: 800px; margin: 0 auto; }
        .btn-voltar { color: #3b82f6; text-decoration: none; font-size: 0.8rem; font-weight: 800; text-transform: uppercase; display: flex; align-items: center; gap: 5px; margin-bottom: 15px; }
        .premium-header { background: linear-gradient(135deg, #0f172a 0%, #020617 100%); padding: 20px; border-radius: 20px; border: 1px solid #1e293b; margin-bottom: 20px; }
        .card-form { background: #070e1b; border: 1px solid #1e293b; border-radius: 18px; padding: 20px; margin-bottom: 25px; }
        .selector-box { display: flex; background: #0f172a; border-radius: 12px; padding: 5px; margin-bottom: 20px; border: 1px solid #1e293b; }
        .sel-btn { flex: 1; padding: 10px; border: none; border-radius: 10px; color: #64748b; background: transparent; cursor: pointer; font-weight: 800; font-size: 0.7rem; text-transform: uppercase; }
        .sel-btn.active { background: #3b82f6; color: #fff; }
        input { width: 100%; background: #0f172a; border: 1px solid #1e293b; border-radius: 10px; padding: 12px; margin-bottom: 12px; color: #fff; outline: none; box-sizing: border-box; }
        .btn-extrair { background: rgba(59, 130, 246, 0.1); color: #3b82f6; border: 1px solid rgba(59, 130, 246, 0.3); padding: 10px; border-radius: 10px; width: 100%; margin-bottom: 15px; font-weight: 800; cursor: pointer; font-size: 0.7rem; }
        .btn-cadastrar { width: 100%; background: #3b82f6; color: #fff; border: none; padding: 14px; border-radius: 10px; font-weight: 800; cursor: pointer; }
        .client-card { background: #0f172a; border: 1px solid #1e293b; border-radius: 15px; padding: 15px; margin-bottom: 15px; }
        .actions { display: grid; grid-template-columns: repeat(4, 1fr); gap: 8px; margin-top: 15px; }
        .btn-action { padding: 10px; border-radius: 8px; border: none; font-size: 0.8rem; display: flex; align-items: center; justify-content: center; }
        .btn-renovar { background: rgba(34, 197, 94, 0.1); color: #22c55e; border: 1px solid rgba(34, 197, 94, 0.2); cursor:pointer; }
        .btn-editar { background: rgba(59, 130, 246, 0.1); color: #3b82f6; border: 1px solid rgba(59, 130, 246, 0.2); }
        .btn-zap { background: rgba(37, 211, 102, 0.1); color: #25d366; border: 1px solid rgba(37, 211, 102, 0.2); cursor: pointer; }
        .btn-excluir { background: rgba(239, 68, 68, 0.1); color: #ef4444; border: 1px solid rgba(239, 68, 68, 0.2); cursor:pointer; }
        .swal2-popup { background: #0f172a !important; color: #fff !important; border: 1px solid #1e293b !important; border-radius: 20px !important; }
    </style>
</head>
<body>
<div class="container">
    <a href="dashboard_rev.php" class="btn-voltar"><i class="fas fa-arrow-left"></i> Voltar ao Painel</a>
    <div class="premium-header">
        <h2 style="margin:0; font-size: 1.2rem;">Gestão de Clientes</h2>
        <p style="margin:5px 0 0; font-size: 0.75rem; color: #64748b;">Suporte M3U, Xtream & Ativação IBO</p>
    </div>
    
    <div class="card-form">
        <div class="selector-box">
            <button type="button" class="sel-btn active" id="btn-xtream" onclick="setModo('xtream')">Xtream Codes</button>
            <button type="button" class="sel-btn" id="btn-m3u" onclick="setModo('m3u')">Lista M3U</button>
        </div>
        <form method="POST">
            <input type="text" name="nome" placeholder="Nome do Cliente" required>
            <div id="area-m3u" style="display:none;">
                <input type="text" id="input_m3u_full" name="url_m3u_input" placeholder="Cole a lista M3U completa">
                <button type="button" class="btn-extrair" onclick="extrairDados()">EXTRAIR DADOS DA LISTA</button>
            </div>
            <div id="area-dados">
                <input type="text" id="dns_input" name="url_xtream" placeholder="DNS / Link do Painel">
                <input type="text" id="login_input" name="login" placeholder="Usuário">
                <input type="text" id="senha_input" name="senha" placeholder="Senha">
                <input type="text" id="mac_input" name="mac_cli" placeholder="Endereço MAC (00:00:00:00:00:00)" required maxlength="17">
            </div>
            <input type="date" name="vencimento" value="<?php echo date('Y-m-d', strtotime('+30 days')); ?>" required>
            <button type="submit" name="cadastrar_cli" class="btn-cadastrar">CADASTRAR E ATIVAR TV</button>
        </form>
    </div>

    <?php
    $meus_clientes = $conn_rev->query("SELECT * FROM clientes_rev WHERE id_rev_pai = '$id_rev' ORDER BY id_cli DESC");
    while($cli = $meus_clientes->fetch_assoc()){
        $venc = date('d/m/Y', strtotime($cli['vencimento_cli']));
        ?>
        <div class="client-card">
            <div style="display:flex; justify-content:space-between;">
                <b style="color:#fff;"><?php echo $cli['nome_cli']; ?></b>
                <span style="font-size:0.7rem; color:#22c55e;">Venc: <?php echo $venc; ?></span>
            </div>
            <div style="font-size:0.75rem; color:#475569; margin-top:5px;">
                User: <?php echo $cli['login_cli']; ?> | MAC: <?php echo $cli['mac_cli']; ?>
            </div>
            <div class="actions">
                <a onclick="renovarCliente(<?php echo $cli['id_cli']; ?>, '<?php echo $cli['nome_cli']; ?>')" class="btn-action btn-renovar"><i class="fas fa-sync-alt"></i></a>
                <a href="editar_clientes_rev.php?id=<?php echo $cli['id_cli']; ?>" class="btn-action btn-editar"><i class="fas fa-edit"></i></a>
                <a onclick="enviarZap('<?php echo $cli['nome_cli']; ?>', '<?php echo $cli['login_cli']; ?>', '<?php echo $cli['senha_cli']; ?>', '<?php echo $venc; ?>', '<?php echo $cli['url_m3u']; ?>', '<?php echo $cli['url_xtream']; ?>', '<?php echo $cli['mac_cli']; ?>')" class="btn-action btn-zap"><i class="fab fa-whatsapp"></i></a>
                <a onclick="excluirCliente(<?php echo $cli['id_cli']; ?>, '<?php echo $cli['nome_cli']; ?>')" class="btn-action btn-excluir"><i class="fas fa-trash"></i></a>
            </div>
        </div>
    <?php } ?>
</div>

<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
<script>
const swalDark = { background: '#0f172a', color:'#fff', confirmButtonColor: '#3b82f6', cancelButtonColor: '#1e293b' };

$('#mac_input').on('input', function() {
    var v = $(this).val().toUpperCase().replace(/[^A-F0-9]/g, '');
    var m = v.match(/.{1,2}/g);
    $(this).val(m ? m.join(':').substr(0, 17) : v);
});

function setModo(modo) {
    if(modo === 'm3u') {
        document.getElementById('area-m3u').style.display = 'block';
        document.getElementById('btn-m3u').classList.add('active');
        document.getElementById('btn-xtream').classList.remove('active');
    } else {
        document.getElementById('area-m3u').style.display = 'none';
        document.getElementById('btn-xtream').classList.add('active');
        document.getElementById('btn-m3u').classList.remove('active');
    }
}

function extrairDados() {
    let url = document.getElementById('input_m3u_full').value;
    if(!url.includes('username=') || !url.includes('password=')) {
        Swal.fire({...swalDark, icon: 'error', title: 'URL Inválida'});
        return;
    }
    try {
        let u = new URL(url);
        document.getElementById('login_input').value = u.searchParams.get("username");
        document.getElementById('senha_input').value = u.searchParams.get("password");
        document.getElementById('dns_input').value = u.protocol + "//" + u.host;
        Swal.fire({...swalDark, icon: 'success', title: 'Extraído!', timer: 1000, showConfirmButton: false});
    } catch(e) { Swal.fire({...swalDark, icon: 'error', title: 'Erro de Formato'}); }
}

function enviarZap(nome, user, senha, venc, m3u, dns, mac) {
    let msg = "*DADOS DO SEU ACESSO*%0A%0A";
    msg += "👤 *Nome:* " + nome + "%0A";
    msg += "👤 *Usuário:* " + user + "%0A";
    msg += "🔑 *Senha:* " + senha + "%0A";
    msg += "🖥️ *MAC:* " + mac + "%0A";
    msg += "📅 *Vencimento:* " + venc + "%0A%0A";
    if(dns) msg += "📺 *DNS/Painel:*%0A" + dns + "%0A%0A";
    msg += "🚀 *Aproveite o conteúdo!*";
    window.open("https://api.whatsapp.com/send?text=" + msg, '_blank');
}

function renovarCliente(id, nome) {
    Swal.fire({...swalDark, title: 'Renovar?', text: 'Confirmar 30 dias para ' + nome + '?', icon: 'question', showCancelButton: true, confirmButtonText: 'SIM', cancelButtonText: 'NÃO'})
    .then((r) => { if (r.isConfirmed) window.location.href = 'clientes_rev.php?confirmar_renovacao=' + id; });
}

function excluirCliente(id, nome) {
    Swal.fire({...swalDark, title: 'Excluir?', text: 'Remover ' + nome + '?', icon: 'warning', showCancelButton: true, confirmButtonText: 'EXCLUIR', cancelButtonText: 'MANTER'})
    .then((r) => { if (r.isConfirmed) window.location.href = 'clientes_rev.php?confirmar_exclusao=' + id; });
}

<?php if(isset($status)): ?>
    <?php if($status == "sucesso_cadastro"): ?>
        Swal.fire({...swalDark, icon: 'success', title: 'Ativado!', text: 'Cliente salvo e TV Ativada com sucesso!'});
    <?php elseif($status == "erro_saldo"): ?>
        Swal.fire({...swalDark, icon: 'error', title: 'Saldo Insuficiente', text: 'Você não tem créditos para esta ação.'});
    <?php elseif($status == "erro_sqlite"): ?>
        Swal.fire({...swalDark, icon: 'warning', title: 'Parcial!', text: 'Salvo no painel, mas erro ao ativar na TV. Verifique permissões.'});
    <?php elseif($status == "sucesso_renovacao"): ?>
        Swal.fire({...swalDark, icon: 'success', title: 'Renovado!', text: 'Mais 30 dias adicionados!'});
    <?php elseif($status == "sucesso_exclusao"): ?>
        Swal.fire({...swalDark, icon: 'success', title: 'Removido!', text: 'O cliente foi excluído com sucesso.'});
    <?php else: ?>
        Swal.fire({...swalDark, icon: 'success', title: 'Concluído!', timer: 1500, showConfirmButton: false});
    <?php endif; ?>
<?php endif; ?>
</script>
</body>
</html>