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

$pdo = getConexaoAtiva();
$pdo_int = getConexaoInterna();

$pdo->exec("SET NAMES utf8mb4");
$pdo_int->exec("SET NAMES utf8mb4");
$pdo->exec("SET SESSION sql_mode = ''");

// Descobre o modo (XUI ou Xtream)
$modo_ativo = 'interno';
try { $modo_ativo = $pdo_int->query("SELECT modo_ativo FROM configuracoes LIMIT 1")->fetchColumn() ?: 'interno'; } catch (Exception $e) {}
$tabela_revendedores = ($modo_ativo === 'xui') ? '`users`' : '`reg_users`';

// ============================================================================
// SISTEMA DE CRIPTOGRAFIA DO LINK (Pega o ID criptografado ou número normal)
// ============================================================================
$ref_get = isset($_GET['ref']) ? $_GET['ref'] : '1';
$ref = 1; // Cai pro Admin (ID 1) por padrão

if (is_numeric($ref_get)) {
    // Se vier um número normal, aceita
    $ref = (int)$ref_get;
} else {
    // Se vier um texto gigante (hash), descriptografa usando a chave secreta
    $decrypted = @openssl_decrypt(@hex2bin($ref_get), 'aes-128-ecb', 'chave_secreta_topiptv');
    if ($decrypted !== false && is_numeric($decrypted)) {
        $ref = (int)$decrypted;
    }
}
// ============================================================================

// Busca o nome do Painel, Logo e Cor
$nome_painel = 'TOP IPTV'; $logo_url = ''; $cor_primaria = '#007bff';
try {
    $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) {}

$msg = "";

if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    $nome = trim($_POST['nome']);
    $user = trim($_POST['username']);
    $pass = trim($_POST['password']);
    $zap  = trim($_POST['whatsapp']);
    
    if (empty($user) || empty($pass)) {
        $msg = "<div class='alert danger'>Preencha todos os campos obrigatórios!</div>";
    } else {
        // Verifica se o usuário já existe
        $stmtCheck = $pdo->prepare("SELECT id FROM $tabela_revendedores WHERE username = ?");
        $stmtCheck->execute([$user]);
        if ($stmtCheck->fetch()) {
            $msg = "<div class='alert danger'>Esse nome de usuário já está em uso. Tente outro.</div>";
        } else {
            // Garante que a coluna de identificação existe no banco
            try {
                $check_origem = $pdo->query("SHOW COLUMNS FROM $tabela_revendedores LIKE 'origem_web'");
                if (!$check_origem->fetch()) { $pdo->exec("ALTER TABLE $tabela_revendedores ADD COLUMN `origem_web` TINYINT(1) DEFAULT 0"); }
            } catch (Exception $e) {}

            // Cadastra a revenda com ZERO créditos e a tag origem_web = 1
            $sql = "INSERT INTO $tabela_revendedores (username, password, whatsapp, nome_revendedor, credits, member_group_id, owner_id, status, origem_web) VALUES (?, ?, ?, ?, 0, 2, ?, 1, 1)";
            try {
                $pdo->prepare($sql)->execute([$user, $pass, $zap, $nome, $ref]);
                $msg = "<div class='alert success'><strong>Cadastro realizado com sucesso!</strong><br><br>Você já pode fazer login no painel usando seu Usuário e Senha.</div>";

                // =========================================================================
                // DISPARO DE WHATSAPP AUTOMÁTICO VIA API (EVOLUTION API / Z-API)
                // =========================================================================
                try {
                    // Busca os dados da API de quem gerou o link (O Dono / $ref)
                    $stmtApi = $pdo->prepare("SELECT wa_api_url, wa_api_key, wa_instancia, wa_status FROM $tabela_revendedores WHERE id = ?");
                    $stmtApi->execute([$ref]);
                    $apiDono = $stmtApi->fetch(PDO::FETCH_ASSOC);

                    // Se a API estiver ATIVA e a URL configurada, faz o disparo
                    if ($apiDono && $apiDono['wa_status'] == 1 && !empty($apiDono['wa_api_url'])) {
                        
                        $url_api   = rtrim(trim($apiDono['wa_api_url']), '/');
                        $instancia = trim($apiDono['wa_instancia']);
                        $apikey    = trim($apiDono['wa_api_key']);

                        // Limpa o número de WhatsApp
                        $numero_zap = preg_replace('/[^0-9]/', '', $zap);
                        if (substr($numero_zap, 0, 2) !== '55') {
                            $numero_zap = '55' . $numero_zap;
                        }

                        // Monta a Mensagem
                        $textoMsg  = "🎉 *Olá " . trim($nome) . "!*\n\n";
                        $textoMsg .= "Seu cadastro como *Revendedor* foi realizado com sucesso!\n\n";
                        $textoMsg .= "👤 *Usuário:* " . $user . "\n";
                        $textoMsg .= "🔑 *Senha:* " . $pass . "\n\n";
                        $textoMsg .= "Acesse seu painel pelo link abaixo:\n";
                        $textoMsg .= "🔗 https://" . $_SERVER['HTTP_HOST'] . "/login.php";

                        // Evolution API Endpoint
                        $endpoint = $url_api . "/message/sendText/" . $instancia;
                        
                        $payload = json_encode([
                            "number" => $numero_zap,
                            "options" => [
                                "delay" => 1500, // Simulando digitação
                                "presence" => "composing" 
                            ],
                            "textMessage" => [
                                "text" => $textoMsg
                            ]
                        ]);

                        // Envio via cURL (Não trava o carregamento da página)
                        $ch = curl_init($endpoint);
                        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
                        curl_setopt($ch, CURLOPT_POST, true);
                        curl_setopt($ch, CURLOPT_POSTFIELDS, $payload);
                        curl_setopt($ch, CURLOPT_HTTPHEADER, [
                            'Content-Type: application/json',
                            'apikey: ' . $apikey
                        ]);
                        curl_setopt($ch, CURLOPT_TIMEOUT, 3);
                        curl_exec($ch);
                        curl_close($ch);
                    }
                } catch (Exception $e) {
                    // Falha silenciosa para não quebrar o cadastro
                }
                // =========================================================================

            } catch (Exception $e) {
                $msg = "<div class='alert danger'>Erro ao criar conta. Tente novamente.</div>";
            }
        }
    }
}
?>
<!DOCTYPE html>
<html lang="pt-BR">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
    <title>Criar uma Conta - <?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">
    <style>
        * { box-sizing: border-box; }
        body { margin: 0; padding: 0; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif; background-color: #0d1117; color: #fff; display: flex; justify-content: center; min-height: 100vh; }
        
        .container { width: 100%; max-width: 450px; padding: 30px 20px; }
        
        h2 { text-align: center; font-size: 22px; margin-bottom: 40px; font-weight: 700; letter-spacing: 0.5px; }
        
        .form-group { margin-bottom: 22px; }
        label { display: block; font-size: 14px; font-weight: 600; margin-bottom: 8px; color: #e6e6e6; }
        label span.req { color: #f85149; }
        
        input[type="text"], input[type="password"], input[type="email"] { 
            width: 100%; 
            padding: 14px 16px; 
            background-color: #010409; 
            border: 1px solid #30363d; 
            border-radius: 8px; 
            color: #fff; 
            font-size: 15px; 
            transition: border-color 0.2s;
            outline: none;
        }
        input:focus { border-color: <?php echo $cor_primaria; ?>; }
        input::placeholder { color: #6e7681; }

        .whatsapp-group { display: flex; gap: 10px; }
        .whatsapp-prefix { 
            background-color: #010409; 
            border: 1px solid #30363d; 
            border-radius: 8px; 
            width: 70px;
            display: flex; 
            align-items: center; 
            justify-content: center; 
            font-size: 15px; 
            color: #e6e6e6; 
        }

        .password-strength { display: flex; gap: 4px; margin-top: 12px; }
        .strength-bar { height: 3px; flex: 1; background-color: #30363d; border-radius: 2px; transition: 0.3s; }
        .strength-text { font-size: 12px; color: #8b949e; margin-top: 10px; line-height: 1.4; }

        .show-password-wrapper { position: relative; }
        .toggle-password { 
            position: absolute; 
            right: 15px; 
            top: 50%; 
            transform: translateY(-50%); 
            background: none; 
            border: none; 
            color: #8b949e; 
            font-size: 13px; 
            cursor: pointer; 
            display: flex; 
            align-items: center; 
            gap: 6px; 
            padding: 0;
        }
        .toggle-password:hover { color: #c9d1d9; }

        .btn-submit { 
            width: 100%; 
            padding: 16px; 
            background-color: <?php echo $cor_primaria; ?>; 
            color: #fff; 
            border: none; 
            border-radius: 8px; 
            font-size: 16px; 
            font-weight: 700; 
            cursor: pointer; 
            margin-top: 20px; 
            transition: 0.2s; 
        }
        .btn-submit:hover { filter: brightness(1.1); }

        .alert { padding: 15px; border-radius: 8px; margin-bottom: 25px; font-size: 14px; text-align: center; font-weight: 600; line-height: 1.5; }
        .alert.danger { background: rgba(248, 81, 73, 0.1); color: #ff7b72; border: 1px solid rgba(248, 81, 73, 0.4); }
        .alert.success { background: rgba(46, 160, 67, 0.1); color: #3fb950; border: 1px solid rgba(46, 160, 67, 0.4); }
    </style>
</head>
<body>

    <div class="container">
        <h2>Criar uma Conta</h2>

        <?php echo $msg; ?>

        <?php if (strpos($msg, 'sucesso') === false): ?>
        <form method="POST" id="registerForm" onsubmit="return validarSenha()">
            
            <div class="form-group">
                <label>Nome <span class="req">*</span></label>
                <input type="text" name="nome" required autocomplete="off">
            </div>

            <div class="form-group">
                <label>WhatsApp <span class="req">*</span></label>
                <div class="whatsapp-group">
                    <div class="whatsapp-prefix">55</div>
                    <input type="text" name="whatsapp" placeholder="Incluindo DDD" required autocomplete="off">
                </div>
            </div>

            <div class="form-group">
                <label>E-mail <span class="req">*</span></label>
                <input type="email" name="email" required autocomplete="off">
            </div>

            <div class="form-group">
                <label>Usuário <span class="req">*</span></label>
                <input type="text" name="username" placeholder="Será usado para login no painel" required autocomplete="off">
            </div>

            <div class="form-group">
                <label>Senha <span class="req">*</span></label>
                <input type="password" name="password" id="pass" oninput="forcaSenha()" required>
                <div class="password-strength">
                    <div class="strength-bar" id="sb1"></div>
                    <div class="strength-bar" id="sb2"></div>
                    <div class="strength-bar" id="sb3"></div>
                    <div class="strength-bar" id="sb4"></div>
                    <div class="strength-bar" id="sb5"></div>
                </div>
                <div class="strength-text">Use 8 ou mais caracteres com letras, números e símbolos.</div>
            </div>

            <div class="form-group">
                <label>Confirmar Senha <span class="req">*</span></label>
                <div class="show-password-wrapper">
                    <input type="password" id="passConfirm" required>
                    <button type="button" class="toggle-password" onclick="togglePass()">
                        <i class="far fa-eye" id="eyeIcon"></i> <span id="eyeText">Mostrar senha</span>
                    </button>
                </div>
            </div>

            <button type="submit" class="btn-submit">Criar Conta</button>
        </form>
        <?php endif; ?>
    </div>

    <script>
        function togglePass() {
            var p1 = document.getElementById("pass");
            var p2 = document.getElementById("passConfirm");
            var icon = document.getElementById("eyeIcon");
            var text = document.getElementById("eyeText");

            if (p1.type === "password") {
                p1.type = "text";
                p2.type = "text";
                icon.className = "far fa-eye-slash";
                text.innerText = "Ocultar senha";
            } else {
                p1.type = "password";
                p2.type = "password";
                icon.className = "far fa-eye";
                text.innerText = "Mostrar senha";
            }
        }

        function forcaSenha() {
            var pass = document.getElementById('pass').value;
            var bars = [
                document.getElementById('sb1'), document.getElementById('sb2'),
                document.getElementById('sb3'), document.getElementById('sb4'),
                document.getElementById('sb5')
            ];
            
            bars.forEach(b => b.style.backgroundColor = '#30363d');

            var force = 0;
            if (pass.length >= 6) force += 1;
            if (pass.length >= 8) force += 1;
            if (/[A-Z]/.test(pass)) force += 1;
            if (/[0-9]/.test(pass)) force += 1;
            if (/[^A-Za-z0-9]/.test(pass)) force += 1;

            var colors = ['#f85149', '#f85149', '#d29922', '#3fb950', '#2ea043'];
            for(var i=0; i < force; i++) {
                if(bars[i]) bars[i].style.backgroundColor = colors[force - 1] || '#2ea043';
            }
        }

        function validarSenha() {
            var p1 = document.getElementById("pass").value;
            var p2 = document.getElementById("passConfirm").value;
            if (p1 !== p2) {
                alert("As senhas não coincidem. Verifique e tente novamente.");
                return false;
            }
            return true;
        }
    </script>
</body>
</html>
