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

$pdo = getConexaoAtiva(); // Banco Principal
$pdo_int = getConexaoInterna(); // Banco Local

// --- INÍCIO: BUSCA DE PERSONALIZAÇÃO E CRIAÇÃO DA COLUNA ---
$nome_painel = 'TOP IPTV';
$logo_url = '';
$cor_primaria = '#007bff';

try {
    // Busca e garante as configurações sempre no BANCO INTERNO
    $tabela_existe = $pdo_int->query("SHOW TABLES LIKE 'painel_config'")->rowCount() > 0;
    if ($tabela_existe) {
        
        // CORREÇÃO: Cria a coluna de cobrança na sua tabela existente caso não exista
        $colunas = $pdo_int->query("SHOW COLUMNS FROM painel_config")->fetchAll(PDO::FETCH_COLUMN);
        if (!in_array('migracao_cobrar_credito', $colunas)) {
            $pdo_int->exec("ALTER TABLE painel_config ADD COLUMN migracao_cobrar_credito INT DEFAULT 1");
        }

        $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;
        }
    } else {
        // Se a tabela não existir, cria ela inteira
        $pdo_int->exec("CREATE TABLE painel_config (
            id INT AUTO_INCREMENT PRIMARY KEY, 
            nome_painel VARCHAR(255), 
            logo_url VARCHAR(255), 
            cor_primaria VARCHAR(50),
            migracao_cobrar_credito INT DEFAULT 1
        )");
    }
} catch (Exception $e) {}
// --- FIM: BUSCA DE PERSONALIZAÇÃO ---

// Seta UTF-8 nas duas conexões
$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'];
$mensagem = "";

try {
    // Busca créditos sempre no banco interno
    $user_credits = $pdo_int->query("SELECT credits FROM reg_users WHERE id = " . intval($user_id_logado))->fetchColumn() ?: 0;
} catch (Exception $e) { $user_credits = 0; }

// =========================================================================
// 2. LÓGICA DO ADMIN: SALVAR CONFIGURAÇÃO DE COBRANÇA
// =========================================================================
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['action']) && $_POST['action'] === 'toggle_cobranca' && $role === 'admin') {
    try {
        $novo_valor = intval($_POST['cobrar_credito']);
        $count = $pdo_int->query("SELECT COUNT(*) FROM painel_config")->fetchColumn();
        
        if ($count == 0) {
            $pdo_int->prepare("INSERT INTO painel_config (migracao_cobrar_credito) VALUES (?)")->execute([$novo_valor]);
        } else {
            $pdo_int->prepare("UPDATE painel_config SET migracao_cobrar_credito = ?")->execute([$novo_valor]);
        }
        $mensagem = "<div class='alert success'><i class='fas fa-check-circle'></i> Configuração de cobrança salva com sucesso!</div>";
    } catch (Exception $e) {
        $mensagem = "<div class='alert danger'><i class='fas fa-times-circle'></i> Erro ao salvar: " . $e->getMessage() . "</div>";
    }
}

// =========================================================================
// 3. LÓGICA DE VERIFICAÇÃO DE COBRANÇA
// =========================================================================
try {
    $stmt = $pdo_int->query("SELECT migracao_cobrar_credito FROM painel_config LIMIT 1");
    $res = $stmt->fetchColumn();
    $config_cobrar = ($res !== false && $res !== null) ? (int)$res : 1; 
} catch (Exception $e) {
    $config_cobrar = 1;
}

$nivel_admin = $_SESSION['nivel_admin'] ?? 0;
$sou_admin_master = ($nivel_admin == 1 || $user_id_logado == 11 || $role === 'admin');

// Define se vai cobrar
$vai_cobrar = ($config_cobrar == 1 && !$sou_admin_master);
// =========================================================================

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

?>
<!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>Migrar Clientes - <?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: #0f1114; 
            --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: #3b82f6;
        }
        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 (Evita o bug da logo gigante e quebras de layout) */
        .sidebar { width: 260px; background-color: var(--bg-sidebar); border-right: 1px solid var(--border-color); display: flex; flex-direction: column; transition: 0.3s; flex-shrink: 0; z-index: 1001;}
        .sidebar-header { padding: 25px 20px; text-align: center; font-size: 22px; font-weight: bold; color: white; border-bottom: 1px solid var(--border-color); }
        .sidebar-logo { width: 100%; max-width: 180px; height: auto; max-height: 60px; 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-category { padding: 20px 20px 8px; font-size: 11px; text-transform: uppercase; color: var(--text-muted); font-weight: bold; letter-spacing: 1px; }
        .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: 15px; 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); }
        .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); }
        .logout-btn { padding: 15px; background-color: #dc3545; color: white; text-align: center; text-decoration: none; font-weight: bold; }
        .sidebar-overlay { display: none; position: fixed; top: 0; left: 0; width: 100%; height: 100%; background: rgba(0,0,0,0.7); z-index: 1000; }

        .main-content { flex: 1; display: flex; flex-direction: column; overflow-y: auto; width: 100%; position: relative; }
        .topbar { display: flex; justify-content: space-between; align-items: center; padding: 15px 30px; background-color: var(--bg-sidebar); border-bottom: 1px solid var(--border-color); flex-shrink: 0; }
        .menu-toggle { display: none; background: none; border: none; color: white; font-size: 24px; cursor: pointer; }
        .content-area { padding: 25px; flex: 1; width: 100%; box-sizing: border-box; }
        .mode-badge { padding: 6px 15px; background: rgba(40, 167, 69, 0.15); color: var(--success); border-radius: 20px; font-size: 12px; font-weight: bold; border: 1px solid var(--success); }

        .page-header { margin-bottom: 25px; }
        .page-header h3 { font-size: 24px; color: white; margin: 0 0 5px 0; display: flex; align-items: center; gap: 10px; }
        .page-header p { color: var(--text-muted); margin: 0; }

        .migracao-card { background-color: var(--bg-card); border: 1px solid var(--border-color); border-radius: 10px; box-shadow: 0 4px 6px rgba(0,0,0,0.2); overflow: hidden; margin-bottom: 30px; }
        .migracao-header { background-color: var(--accent); color: white; padding: 15px 20px; font-size: 16px; font-weight: bold; display: flex; align-items: center; gap: 10px; }
        .migracao-body { padding: 25px; }

        .modo-selector { display: flex; gap: 15px; margin-bottom: 20px; }
        .modo-card { flex: 1; border: 2px solid var(--border-color); border-radius: 10px; padding: 25px; cursor: pointer; transition: all 0.3s; text-align: center; background-color: #16191d; }
        .modo-card:hover { border-color: var(--accent); transform: translateY(-2px); }
        .modo-card.active { border-color: var(--accent); background-color: rgba(255,255,255,0.05); }
        .modo-card i { font-size: 40px; margin-bottom: 15px; color: var(--text-muted); display: block; transition: 0.3s; }
        .modo-card.active i { color: var(--accent); }
        .modo-card h5 { margin: 0 0 5px 0; color: white; font-size: 18px; }
        .modo-card p { margin: 0; color: var(--text-muted); font-size: 13px; }

        .form-group { margin-bottom: 20px; }
        .form-group label { display: block; margin-bottom: 8px; font-weight: 600; color: white; font-size: 14px; }
        .form-control { width: 100%; padding: 15px; background: #121519; border: 1px solid var(--border-color); color: white; border-radius: 8px; box-sizing: border-box; font-size: 14px; font-family: inherit; transition: 0.3s; }
        .form-control:focus { border-color: var(--accent); outline: none; }

        .alert { padding: 15px; border-radius: 8px; margin-bottom: 20px; font-size: 14px; display: flex; align-items: center; gap: 10px; }
        .alert.warning { background: rgba(243, 156, 18, 0.1); color: var(--warning); border: 1px solid var(--warning); }
        .alert.success { background: rgba(40, 167, 69, 0.1); color: var(--success); border: 1px solid var(--success); }
        .alert.danger { background: rgba(220, 53, 69, 0.1); color: var(--danger); border: 1px solid var(--danger); }

        .btn { padding: 12px 25px; border-radius: 8px; font-weight: bold; cursor: pointer; border: none; color: white; display: inline-flex; align-items: center; justify-content: center; gap: 8px; font-size: 14px; text-decoration: none; transition: 0.2s; }
        .btn-primary { background: var(--accent); }
        .btn-primary:hover { filter: brightness(0.9); }
        .btn-secondary { background: transparent; border: 1px solid var(--border-color); color: var(--text-main); }
        .btn-secondary:hover { background: rgba(255,255,255,0.05); }
        .btn-warning { background: var(--warning); color: #121519; }
        .btn-warning:hover { filter: brightness(0.9); }
        
        
        /* ==================================================================== */
        /* FORÇA A COR AZUL NO ADMINISTRADOR E VERDE NO SALDO */
        /* ==================================================================== */
        .user-info > div:nth-child(2), .user-info .badge { background: rgba(0, 123, 255, 0.2) !important; color: var(--accent) !important; padding: 4px 10px !important; border-radius: 4px !important; font-size: 11px !important; text-transform: uppercase !important; font-weight: bold !important; margin-top: 5px !important; margin-bottom: 5px !important; display: inline-block !important; }
        .user-info > div:nth-child(3), .user-info .credits-badge, .user-info i.fa-coins { color: var(--success) !important; font-weight: bold !important; font-size: 13px !important; display: inline-block !important; }
        .user-info > div:nth-child(3) { margin-top: 8px !important; display: block !important; }

        /* ==================================================================== */
        /* FORÇA OS ÍCONES DA SIDEBAR A FICAREM AZUIS */
        /* ==================================================================== */
        .sidebar i, .sidebar span[class*="icon"], .sidebar .fas, .sidebar .fab { color: var(--accent) !important; }
        .menu-item i:first-child { margin-right: 12px; width: 20px; text-align: center; color: var(--accent) !important; }
        .menu-item:hover, .menu-item.active { background-color: #2c3138 !important; color: white !important; border-left-color: var(--accent) !important; }
        .sidebar .active, .sidebar .menu-item.active, .sidebar li.active > a { border-left-color: var(--accent) !important; color: white !important; background: #24282d !important; }
        .sidebar a:hover, .sidebar .menu-item:hover { border-left-color: var(--accent) !important; color: white !important; background: #2c3138 !important; }
        
       
        @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; }
            .sidebar-overlay.active { display: block; }
            .menu-toggle { display: block; margin-right: 15px; }
            .topbar { padding: 15px 20px; justify-content: flex-start; }
            .topbar-right { margin-left: auto; }
            .content-area { padding: 15px; padding-bottom: 100px; }
            .modo-selector { flex-direction: column; }
        }
    </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" id="btn-menu" onclick="toggleMenu()"><i class="fas fa-bars"></i></button>
            </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">
            
            <?php echo $mensagem; ?>

            <?php if($role === 'admin'): ?>
            <div class="migracao-card" style="border-color: var(--warning);">
                <div class="migracao-header" style="background-color: var(--warning); color: #121519;">
                    <i class="fas fa-crown"></i> Configuração de Admin: Regra de Cobrança
                </div>
                <div class="migracao-body" style="padding: 15px 25px;">
                    <form method="POST" style="display: flex; align-items: center; gap: 15px; flex-wrap: wrap;">
                        <input type="hidden" name="action" value="toggle_cobranca">
                        <label style="color: white; font-weight: bold; margin:0;">Cobrar créditos dos revendedores na migração?</label>
                        <select name="cobrar_credito" class="form-control" style="width: auto; padding: 10px; background: rgba(0,0,0,0.2);">
                            <option value="1" <?php echo $config_cobrar == 1 ? 'selected' : ''; ?>>Sim, cobrar 1 crédito por cliente</option>
                            <option value="0" <?php echo $config_cobrar == 0 ? 'selected' : ''; ?>>Não, migração 100% gratuita</option>
                        </select>
                        <button type="submit" class="btn btn-warning"><i class="fas fa-save"></i> Salvar Regra</button>
                    </form>
                </div>
            </div>
            <?php endif; ?>

            <div class="page-header">
                <h3><i class="fas fa-exchange-alt"></i> Migrar Clientes</h3>
                <p>Importe clientes de outros servidores via Link M3U ou API facilmente.</p>
            </div>

            <div class="migracao-card">
                <div class="migracao-header">
                    <i class="fas fa-cog"></i> Passo 1: Configuração da Migração
                </div>
                <div class="migracao-body">
                    <form id="formMigracao">
                        
                        <div class="modo-selector">
                            <div class="modo-card active" onclick="selecionarModo('individual')" id="cardIndividual">
                                <i class="fas fa-user"></i>
                                <h5>Individual</h5>
                                <p>Migrar 1 único cliente</p>
                            </div>
                            <div class="modo-card" onclick="selecionarModo('massa')" id="cardMassa">
                                <i class="fas fa-users"></i>
                                <h5>Em Massa</h5>
                                <p>Migrar uma lista de clientes</p>
                            </div>
                        </div>
                        
                        <input type="hidden" name="modo" id="inputModo" value="individual">

                        <div id="campoIndividual" class="form-group">
                            <label>URL do Cliente <span style="color:var(--danger)">*</span></label>
                            <input type="text" class="form-control" name="api_url" id="api_url" placeholder="Cole a URL do cliente aqui (Ex: link M3U)...">
                        </div>

                        <div id="campoMassa" class="form-group" style="display:none;">
                            <label>URLs dos Clientes <span style="color:var(--danger)">*</span></label>
                            <textarea class="form-control" name="urls_massa" id="urls_massa" rows="8" placeholder="Cole uma URL por linha..."></textarea>
                        </div>

                        <?php if($vai_cobrar): ?>
                            <div class="alert warning"><i class="fas fa-coins fa-lg"></i> <div><strong>Atenção:</strong> Esta operação consumirá créditos do seu saldo.</div></div>
                        <?php else: ?>
                            <div class="alert success"><i class="fas fa-check-circle fa-lg"></i> <div><strong>Gratuito:</strong> A migração de clientes está gratuita para você no momento.</div></div>
                        <?php endif; ?>

                        <div style="display:flex; justify-content:space-between; align-items:center; margin-top:30px;">
                            <a href="dashboard.php" class="btn btn-secondary"><i class="fas fa-arrow-left"></i> Voltar</a>
                            <button type="submit" class="btn btn-primary" id="btnImportar"><i class="fas fa-cloud-upload-alt"></i> Iniciar Importação</button>
                        </div>
                    </form>
                </div>
            </div>
        </div>
        <?php include 'rodape.php'; ?>
    </div>

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

        const VAI_COBRAR = <?= $vai_cobrar ? 'true' : 'false' ?>;

        function selecionarModo(modo) {
            document.querySelectorAll('.modo-card').forEach(c => c.classList.remove('active'));
            document.getElementById('campoIndividual').style.display = 'none';
            document.getElementById('campoMassa').style.display = 'none';
            
            if (modo === 'individual') {
                document.getElementById('cardIndividual').classList.add('active');
                document.getElementById('campoIndividual').style.display = 'block';
                document.getElementById('inputModo').value = 'individual';
            } else {
                document.getElementById('cardMassa').classList.add('active');
                document.getElementById('campoMassa').style.display = 'block';
                document.getElementById('inputModo').value = 'massa';
            }
        }

        document.getElementById('formMigracao').addEventListener('submit', function(e) {
            e.preventDefault();
            
            const modo = document.getElementById('inputModo').value;
            let qtd = 1;

            if (modo === 'individual') {
                if(!document.getElementById('api_url').value.trim()) {
                    return Swal.fire({ icon: 'error', title: 'Erro', text: 'Por favor, digite a URL do cliente.', background: '#272c33', color: '#fff' });
                }
            } else {
                const texto = document.getElementById('urls_massa').value.trim();
                if(!texto) {
                    return Swal.fire({ icon: 'error', title: 'Erro', text: 'Por favor, cole as URLs dos clientes.', background: '#272c33', color: '#fff' });
                }
                qtd = texto.split(/\r\n|\r|\n/).filter(line => line.trim() !== '').length;
            }

            if (VAI_COBRAR) {
                Swal.fire({
                    title: 'Cobrança de Créditos',
                    html: `Você vai importar <b>${qtd}</b> cliente(s).<br>Custo Total: <b style="color:var(--danger)">${qtd} crédito(s)</b>.<br><br>Deseja continuar?`,
                    icon: 'warning',
                    showCancelButton: true,
                    confirmButtonColor: '#007bff',
                    cancelButtonColor: '#6c757d',
                    confirmButtonText: 'Sim, Pagar e Importar',
                    cancelButtonText: 'Cancelar',
                    background: '#272c33',
                    color: '#fff'
                }).then((result) => {
                    if (result.isConfirmed) executarMigracao();
                });
            } else {
                Swal.fire({
                    title: 'Migração Gratuita',
                    html: `Você vai importar <b>${qtd}</b> cliente(s).<br><b style="color:var(--success)">Custo: 0 créditos (Grátis).</b><br><br>Confirmar importação?`,
                    icon: 'info',
                    showCancelButton: true,
                    confirmButtonColor: '#28a745',
                    cancelButtonColor: '#6c757d',
                    confirmButtonText: 'Sim, Importar',
                    cancelButtonText: 'Cancelar',
                    background: '#272c33',
                    color: '#fff'
                }).then((result) => {
                    if (result.isConfirmed) executarMigracao();
                });
            }
        });

        function executarMigracao() {
            const btn = document.getElementById('btnImportar');
            const originalText = btn.innerHTML;
            btn.disabled = true;
            btn.innerHTML = '<i class="fas fa-spinner fa-spin"></i> Processando...';

            const formData = {
                modo: document.getElementById('inputModo').value,
                api_url: document.getElementById('api_url').value,
                urls_massa: document.getElementById('urls_massa').value
            };

            fetch('api/migrar_acao.php', {
                method: 'POST',
                headers: { 'Content-Type': 'application/json' },
                body: JSON.stringify(formData)
            })
            .then(async response => {
                const text = await response.text();
                try {
                    return JSON.parse(text); 
                } catch(e) {
                    throw new Error("O arquivo retornou: " + text);
                }
            })
            .then(data => {
                if (data.success) {
                    Swal.fire({ icon: 'success', title: 'Sucesso!', html: data.message, background: '#272c33', color: '#fff' });
                    document.getElementById('formMigracao').reset();
                    selecionarModo('individual');
                } else {
                    Swal.fire({ icon: 'error', title: 'Erro!', html: data.message, background: '#272c33', color: '#fff' });
                }
            })
            .catch(error => {
                console.error(error);
                Swal.fire({ 
                    icon: 'error', 
                    title: 'Erro de Conexão', 
                    text: 'Não foi possível conectar com o servidor.', 
                    background: '#272c33', 
                    color: '#fff' 
                });
            })
            .finally(() => {
                btn.disabled = false;
                btn.innerHTML = originalText;
            });
        }
    </script>
    <script src="tema.js"></script>
</body>
</html>