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

$pdo = getConexaoAtiva(); // Banco Principal
$pdo_int = getConexaoInterna(); // Banco Local (Onde ficam as personalizações)

$pdo->exec("SET NAMES utf8mb4");
$pdo_int->exec("SET NAMES utf8mb4");

// Redireciona se não estiver logado
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'];

// BLOQUEIO DE SEGURANÇA: Apenas ADMIN pode acessar essa página
if ($role !== 'admin') {
    die("<div style='background:#121519; color:#e74c3c; padding:50px; text-align:center; font-family:sans-serif;'>
            <h2>Acesso Negado</h2><p>Você não tem permissão para acessar esta área.</p>
            <a href='dashboard.php' style='color:#007bff;'>Voltar</a>
         </div>");
}

// ====================================================================
// INTELIGÊNCIA ARTIFICIAL: DETECTA SE É XUI ONE OU XTREAM UI
// ====================================================================
$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`';

$mensagem = "";

// =========================================================================
// 1. CRIAÇÃO AUTOMÁTICA DA TABELA DE PERSONALIZAÇÃO E COLUNAS FALTANTES
// =========================================================================
try {
    $pdo_int->exec("CREATE TABLE IF NOT EXISTS painel_config (
        id INT(11) AUTO_INCREMENT PRIMARY KEY,
        nome_painel VARCHAR(255) DEFAULT 'TOP IPTV',
        logo_url VARCHAR(255) DEFAULT '',
        usar_logo TINYINT(1) DEFAULT 1,
        cor_primaria VARCHAR(50) DEFAULT '#007bff',
        cor_fundo_login VARCHAR(50) DEFAULT '#121519',
        cor_card_login VARCHAR(50) DEFAULT '#1e2227',
        cor_texto_login VARCHAR(50) DEFAULT '#ffffff'
    )");

    // AUTO-CORREÇÃO: Cria as colunas dinamicamente caso seja uma versão antiga da tabela
    $colunas_existentes = $pdo_int->query("SHOW COLUMNS FROM `painel_config`")->fetchAll(PDO::FETCH_COLUMN);
    
    if (!in_array('usar_logo', $colunas_existentes)) {
        $pdo_int->exec("ALTER TABLE `painel_config` ADD COLUMN `usar_logo` TINYINT(1) DEFAULT 1 AFTER `logo_url`");
    }
    if (!in_array('cor_fundo_login', $colunas_existentes)) {
        $pdo_int->exec("ALTER TABLE `painel_config` ADD COLUMN `cor_fundo_login` VARCHAR(50) DEFAULT '#121519'");
    }
    if (!in_array('cor_card_login', $colunas_existentes)) {
        $pdo_int->exec("ALTER TABLE `painel_config` ADD COLUMN `cor_card_login` VARCHAR(50) DEFAULT '#1e2227'");
    }
    if (!in_array('cor_texto_login', $colunas_existentes)) {
        $pdo_int->exec("ALTER TABLE `painel_config` ADD COLUMN `cor_texto_login` VARCHAR(50) DEFAULT '#ffffff'");
    }

    // Se a tabela estiver vazia, insere a configuração padrão
    $check = $pdo_int->query("SELECT COUNT(*) FROM painel_config")->fetchColumn();
    if ($check == 0) {
        $pdo_int->exec("INSERT INTO painel_config (nome_painel) VALUES ('TOP IPTV')");
    }
} catch (Exception $e) {
    $mensagem = "<div class='alert alert-danger'>Erro ao atualizar tabela: " . $e->getMessage() . "</div>";
}

// =========================================================================
// 2. PROCESSA O FORMULÁRIO QUANDO O BOTÃO SALVAR É CLICADO
// =========================================================================
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['salvar_personalizacao'])) {
    $nome_painel = trim($_POST['nome_painel']);
    $usar_logo = isset($_POST['usar_logo']) ? 1 : 0;
    $cor_primaria = $_POST['cor_primaria'];
    $cor_fundo_login = $_POST['cor_fundo_login'];
    $cor_card_login = $_POST['cor_card_login'];
    
    // Processamento do Upload da Logo
    $logo_sql = "";
    $parametros = [$nome_painel, $usar_logo, $cor_primaria, $cor_fundo_login, $cor_card_login];

    if (isset($_FILES['logo_upload']) && $_FILES['logo_upload']['error'] === UPLOAD_ERR_OK) {
        $extensao = strtolower(pathinfo($_FILES['logo_upload']['name'], PATHINFO_EXTENSION));
        $permitidos = ['jpg', 'jpeg', 'png', 'gif', 'svg'];
        
        if (in_array($extensao, $permitidos)) {
            if (!is_dir('uploads')) { @mkdir('uploads', 0777, true); }
            $novo_nome = 'uploads/logo_painel_' . time() . '.' . $extensao;
            if (move_uploaded_file($_FILES['logo_upload']['tmp_name'], $novo_nome)) {
                $logo_sql = ", logo_url = ?";
                $parametros[] = $novo_nome;
            }
        }
    }

    try {
        $sql = "UPDATE painel_config SET nome_painel = ?, usar_logo = ?, cor_primaria = ?, cor_fundo_login = ?, cor_card_login = ? " . $logo_sql . " WHERE id = 1";
        $stmt = $pdo_int->prepare($sql);
        if ($stmt->execute($parametros)) {
            $mensagem = "<div class='alert alert-success'><i class='fas fa-check-circle'></i> Configurações atualizadas!</div>";
        }
    } catch (Exception $e) { $mensagem = "<div class='alert alert-danger'>Erro: " . $e->getMessage() . "</div>"; }
}

$config_painel = $pdo_int->query("SELECT * FROM painel_config LIMIT 1")->fetch(PDO::FETCH_ASSOC);

try {
    $user_credits = $pdo->query("SELECT credits FROM $tabela_revendedores WHERE id = " . intval($user_id_logado))->fetchColumn() ?: 0;
} catch (Exception $e) { $user_credits = 0; }
?>
<!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>Personalização - <?php echo htmlspecialchars($config_painel['nome_painel'] ?? 'Painel'); ?></title>
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
    <style>
        :root { 
            --bg-dark: #121519; 
            --bg-sidebar: #1e2227; 
            --bg-card: #272c33; 
            --text-main: #d1d5da; 
            --text-muted: #8a94a1; 
            --accent: <?php echo htmlspecialchars($config_painel['cor_primaria'] ?? '#007bff'); ?>; 
            --border-color: #3a4149; 
            --success: #28a745; 
        }
        * { box-sizing: border-box; }
        body { margin: 0; font-family: 'Segoe UI', sans-serif; background-color: var(--bg-dark); color: var(--text-main); display: flex; height: 100vh; overflow: hidden; }
        
        /* SIDEBAR VIA INCLUDE */
        .sidebar { width: 260px; background-color: var(--bg-sidebar); display: flex; flex-direction: column; transition: 0.3s; border-right: 1px solid var(--border-color); z-index: 1001; flex-shrink: 0; }
        .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 { max-width: 100%; max-height: 50px; object-fit: contain; }
        .user-info { padding: 20px; text-align: center; border-bottom: 1px solid var(--border-color); }
        .user-info .badge { background: rgba(255, 255, 255, 0.05); 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-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); }
        .menu-item.active i:first-child { color: var(--accent); } 
        
        .submenu { display: none; background: #16191d; list-style: none; padding: 0; margin: 0; }
        .submenu .menu-item { padding-left: 52px; font-size: 14px; border-left: none; }
        .arrow-icon { margin-left: auto; transition: 0.3s; font-size: 12px; }
        .rotate { transform: rotate(180deg); }
        .menu-category { padding: 20px 20px 8px; font-size: 11px; text-transform: uppercase; color: var(--text-muted); font-weight: bold; letter-spacing: 1px; }
        .logout-btn { padding: 15px; background-color: #dc3545; color: white; text-align: center; text-decoration: none; font-weight: bold; }
        
        /* MAIN CONTENT */
        .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 25px; 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: 22px; cursor: pointer; padding: 5px; }
        
        .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); }
        
        .content-area { padding: 25px; flex: 1; width: 100%; max-width: 1200px; margin: 0 auto; }
        
        /* FORM STYLES */
        .config-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 20px; }
        .config-card { background: var(--bg-card); padding: 20px; border-radius: 10px; border: 1px solid var(--border-color); }
        .config-card h3 { margin-top: 0; color: white; display: flex; align-items: center; gap: 10px; font-size: 17px; margin-bottom: 15px; }
        .form-group { margin-bottom: 15px; }
        label { display: block; margin-bottom: 5px; color: var(--text-muted); font-weight: bold; font-size: 12px; }
        .form-control { width: 100%; padding: 10px; background: #121519; border: 1px solid var(--border-color); color: white; border-radius: 6px; }
        .color-picker-wrapper { display: flex; align-items: center; gap: 10px; background: #121519; padding: 8px; border-radius: 6px; border: 1px solid var(--border-color); }
        .color-picker { border: none; width: 35px; height: 35px; cursor: pointer; background: none; padding: 0; }
        .btn-save { background: var(--accent); color: white; padding: 15px; border: none; border-radius: 8px; font-weight: bold; font-size: 15px; cursor: pointer; width: 100%; transition: 0.2s; margin-top: 10px; }
        .btn-save:hover { filter: brightness(1.1); }
        
        .alert-success { background: rgba(40, 167, 69, 0.15); color: var(--success); padding: 15px; border-radius: 8px; border: 1px solid var(--success); margin-bottom: 20px; font-weight: bold; }
        .alert-danger { background: rgba(220, 53, 69, 0.15); color: var(--danger); padding: 15px; border-radius: 8px; border: 1px solid var(--danger); margin-bottom: 20px; font-weight: bold; }

        /* CHAVE DE LIGA E DESLIGA (TOGGLE) */
        .switch { position: relative; display: inline-block; width: 44px; height: 24px; flex-shrink: 0; }
        .switch input { opacity: 0; width: 0; height: 0; }
        .slider { position: absolute; cursor: pointer; top: 0; left: 0; right: 0; bottom: 0; background-color: #121519; border: 1px solid var(--border-color); transition: .4s; border-radius: 24px; }
        .slider:before { position: absolute; content: ""; height: 16px; width: 16px; left: 3px; bottom: 3px; background-color: var(--text-muted); transition: .4s; border-radius: 50%; }
        input:checked + .slider { background-color: var(--accent); border-color: var(--accent); }
        input:checked + .slider:before { transform: translateX(20px); background-color: white; }
        .toggle-wrapper { display: flex; align-items: center; gap: 12px; margin-bottom: 15px; padding: 12px; background: rgba(0,0,0,0.15); border-radius: 8px; border: 1px solid var(--border-color); }

        .sidebar-overlay { display: none; position: fixed; top: 0; left: 0; width: 100%; height: 100%; background: rgba(0,0,0,0.7); z-index: 1000; }

        /* RESPONSIVIDADE MOBILE */
        @media (max-width: 768px) {
            .menu-toggle { display: block; }
            .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; }
            .config-grid { grid-template-columns: 1fr; }
            .content-area { padding: 15px; }
            .topbar { padding: 10px 15px; }
            .topbar h2 { font-size: 15px !important; }
        }
    </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; gap: 10px;">
                <button class="menu-toggle" onclick="toggleMenu()"><i class="fas fa-bars"></i></button>
                <h2 style="margin:0; font-size: 18px; color:white;">Personalizar Painel</h2>
            </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; ?>
            <form method="POST" enctype="multipart/form-data">
                <div class="config-grid">
                    
                    <div class="config-card">
                        <h3><i class="fas fa-id-badge"></i> Identidade</h3>
                        <div class="form-group">
                            <label>Nome do Painel</label>
                            <input type="text" name="nome_painel" class="form-control" value="<?php echo htmlspecialchars($config_painel['nome_painel'] ?? 'TOP IPTV'); ?>" required>
                        </div>
                        
                        <div class="toggle-wrapper">
                            <label class="switch">
                                <input type="checkbox" name="usar_logo" value="1" <?php echo (!isset($config_painel['usar_logo']) || $config_painel['usar_logo'] == 1) ? 'checked' : ''; ?>>
                                <span class="slider"></span>
                            </label>
                            <div>
                                <div style="color: white; font-size: 14px; font-weight: bold;">Exibir Logo no Login</div>
                                <div style="color: var(--text-muted); font-size: 11px;">Se ativado, a tela de login exibe a Logo. Se desativado, exibe apenas o Texto (Nome do Painel).</div>
                            </div>
                        </div>

                        <div class="form-group">
                            <label>Logo (PNG recomendado)</label>
                            <input type="file" name="logo_upload" class="form-control" accept="image/*">
                            <?php if(!empty($config_painel['logo_url'])): ?>
                                <div class="current-logo" style="margin-top: 10px;">
                                    <img src="<?php echo $config_painel['logo_url']; ?>" style="max-height: 60px; background: rgba(0,0,0,0.2); padding: 5px; border-radius: 5px;">
                                </div>
                            <?php endif; ?>
                        </div>
                    </div>
                    
                    <div class="config-card">
                        <h3><i class="fas fa-palette"></i> Cores</h3>
                        
                        <div class="form-group">
                            <label>Cor Principal</label>
                            <div class="color-picker-wrapper">
                                <input type="color" name="cor_primaria" class="color-picker" value="<?php echo htmlspecialchars($config_painel['cor_primaria'] ?? '#007bff'); ?>" id="cp1">
                                <span class="color-hex" id="hex1"><?php echo htmlspecialchars($config_painel['cor_primaria'] ?? '#007bff'); ?></span>
                            </div>
                        </div>
                        
                        <div class="form-group">
                            <label>Fundo Login</label>
                            <div class="color-picker-wrapper">
                                <input type="color" name="cor_fundo_login" class="color-picker" value="<?php echo htmlspecialchars($config_painel['cor_fundo_login'] ?? '#121519'); ?>" id="cp2">
                                <span class="color-hex" id="hex2"><?php echo htmlspecialchars($config_painel['cor_fundo_login'] ?? '#121519'); ?></span>
                            </div>
                        </div>
                        
                        <div class="form-group">
                            <label>Card Login</label>
                            <div class="color-picker-wrapper">
                                <input type="color" name="cor_card_login" class="color-picker" value="<?php echo htmlspecialchars($config_painel['cor_card_login'] ?? '#1e2227'); ?>" id="cp3">
                                <span class="color-hex" id="hex3"><?php echo htmlspecialchars($config_painel['cor_card_login'] ?? '#1e2227'); ?></span>
                            </div>
                        </div>

                    </div>
                </div>
                
                <button type="submit" name="salvar_personalizacao" class="btn-save"><i class="fas fa-save"></i> SALVAR CONFIGURAÇÕES</button>
            </form>
        </div>
        
        <?php include 'rodape.php'; ?>
    </div>

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

        function syncColor(inputId, hexId) {
            const input = document.getElementById(inputId);
            const hex = document.getElementById(hexId);
            if(input && hex) {
                input.addEventListener('input', function() { hex.textContent = this.value; });
            }
        }
        syncColor('cp1', 'hex1'); 
        syncColor('cp2', 'hex2'); 
        syncColor('cp3', 'hex3');

        function toggleSubmenu(id) {
            const sub = document.getElementById(id);
            const arrow = document.getElementById('arrow-' + id);
            if (sub.style.display === "block") { 
                sub.style.display = "none"; 
                if(arrow) arrow.classList.remove('rotate'); 
            } else { 
                sub.style.display = "block"; 
                if(arrow) arrow.classList.add('rotate'); 
            }
        }
    </script>
    <script src="tema.js"></script>
</body>
</html>