<?php
// banco_de_dados_completo.php - Instalador Automático de Tabelas e Colunas

// ============================================================================
// 1. CONFIGURAÇÕES DE CONEXÃO (Já preenchidas com os seus dados)
// ============================================================================
date_default_timezone_set('America/Sao_Paulo');
$host = 'localhost';

// BANCO USER
$db_user_nome = 'geanrober_paineljrp_user';
$db_user_user = 'geanrober_paineljrp_user';
$db_user_pass = 'Jean#909110';

// BANCO ACESSOS
$db_acessos_nome = 'geanrober_paineljrp_acessos';
$db_acessos_user = 'geanrober_paineljrp_acessos';
$db_acessos_pass = 'Jean#909110';

// BANCO GERAL
$db_geral_nome = 'geanrober_paineljrp_geral';
$db_geral_user = 'geanrober_paineljrp_geral';
$db_geral_pass = 'Jean#909110';

// ============================================================================
// 2. FUNÇÃO PARA CONECTAR AOS BANCOS
// ============================================================================
function conectar($host, $db, $user, $pass) {
    try {
        $pdo = new PDO("mysql:host=$host;dbname=$db;charset=utf8mb4", $user, $pass);
        $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
        return $pdo;
    } catch (PDOException $e) {
        die("<div style='color:white;background:red;padding:10px;text-align:center'><b>Erro fatal:</b> Não foi possível conectar ao banco '$db'. Erro: " . $e->getMessage() . "</div>");
    }
}

// ============================================================================
// 3. DEFINIÇÃO DOS COMANDOS SQL POR BANCO
// ============================================================================

// --- BANCO: USER ---
$sql_user = [
    "CREATE TABLE IF NOT EXISTS mp_revendedores ( id INT AUTO_INCREMENT PRIMARY KEY, usuario_revendedor VARCHAR(50) NOT NULL, access_token TEXT, dados_bancarios TEXT, UNIQUE KEY unique_user (usuario_revendedor) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;",
    "CREATE TABLE IF NOT EXISTS planos_revenda ( id INT AUTO_INCREMENT PRIMARY KEY, id_revendedor VARCHAR(50) NOT NULL, nome_plano VARCHAR(100) NOT NULL, dias INT NOT NULL, valor DECIMAL(10,2) NOT NULL, logo_perfil VARCHAR(50) DEFAULT 'iptv.png' ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;",
    "CREATE TABLE IF NOT EXISTS usuario_pref ( id INT AUTO_INCREMENT PRIMARY KEY, usuario VARCHAR(50) UNIQUE, email_copia VARCHAR(100), receber_copia ENUM('sim','nao') DEFAULT 'nao' ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;",
    "CREATE TABLE IF NOT EXISTS pagamentos ( id INT AUTO_INCREMENT PRIMARY KEY, id_pagamento_mp VARCHAR(255), usuario_id VARCHAR(50), revendedor_dono VARCHAR(50), valor DECIMAL(10,2), status VARCHAR(50) DEFAULT 'pendente', data_criacao DATETIME DEFAULT CURRENT_TIMESTAMP ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;",
    "CREATE TABLE IF NOT EXISTS suporte ( id INT AUTO_INCREMENT PRIMARY KEY, UserEmissor VARCHAR(50), UserReceptor VARCHAR(50), Assunto VARCHAR(255), Mensagem TEXT, data VARCHAR(50), LidaReceptor ENUM('sim','nao') DEFAULT 'nao' ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;",
    "CREATE TABLE IF NOT EXISTS firewall ( id INT AUTO_INCREMENT PRIMARY KEY, ip VARCHAR(50) NOT NULL, usuario VARCHAR(100) DEFAULT 'Desconhecido', tentativas INT DEFAULT 0, bloqueado ENUM('sim','nao') DEFAULT 'nao', data_bloqueio TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;",
    "CREATE TABLE IF NOT EXISTS configuracoes_pagamento ( id int(11) NOT NULL AUTO_INCREMENT, access_token varchar(255) DEFAULT NULL, public_key varchar(255) DEFAULT NULL, client_id varchar(255) DEFAULT NULL, client_secret varchar(255) DEFAULT NULL, usuario_painel varchar(100) DEFAULT 'admin', valor_padrao decimal(10,2) DEFAULT 30.00, tipo varchar(50) DEFAULT 'mercadopago', ativo int(1) DEFAULT 1, pix_chave varchar(255) DEFAULT NULL, pix_tipo varchar(50) DEFAULT NULL, PRIMARY KEY (id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;",
    "CREATE TABLE IF NOT EXISTS rev_perfil ( id int(11) NOT NULL AUTO_INCREMENT, id_rev int(11) DEFAULT NULL, id_perfil int(11) DEFAULT NULL, valor_custo decimal(10,2) DEFAULT 0.00, PRIMARY KEY (id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;",
    
    "ALTER TABLE painel ADD COLUMN block ENUM('sim','nao') DEFAULT 'nao';",
    "ALTER TABLE painel ADD COLUMN atualizar TEXT;",
    "ALTER TABLE painel ADD COLUMN protocolo VARCHAR(10) DEFAULT 'http';",
    
    "ALTER TABLE usuario ADD COLUMN id_perfil INT(11) DEFAULT 1;",
    "ALTER TABLE usuario ADD COLUMN dono VARCHAR(100) DEFAULT 'admin';",
    "ALTER TABLE usuario ADD COLUMN limite INT(11) DEFAULT 1;",
    "ALTER TABLE usuario ADD COLUMN data_premio DATE DEFAULT NULL;",
    "ALTER TABLE usuario ADD COLUMN mac VARCHAR(100) DEFAULT NULL;",
    "ALTER TABLE usuario ADD COLUMN bloqueado VARCHAR(10) DEFAULT 'nao';",
    "ALTER TABLE usuario ADD COLUMN email VARCHAR(255) DEFAULT NULL;",
    "ALTER TABLE usuario ADD COLUMN vencimento VARCHAR(100) DEFAULT NULL;",
    "ALTER TABLE usuario ADD COLUMN expire_date VARCHAR(100) DEFAULT NULL;",
    "ALTER TABLE usuario ADD COLUMN exp_date VARCHAR(100) DEFAULT NULL;",
    "ALTER TABLE usuario ADD COLUMN validade VARCHAR(100) DEFAULT NULL;",
    "ALTER TABLE usuario ADD COLUMN email_notificacao VARCHAR(255) DEFAULT NULL;",
    "ALTER TABLE usuario ADD COLUMN receber_notificacao ENUM('sim', 'nao') DEFAULT 'nao';",
    
    "ALTER TABLE rev ADD COLUMN dono VARCHAR(100) DEFAULT 'admin';",
    "ALTER TABLE rev ADD COLUMN limite INT(11) DEFAULT 100;",
    "ALTER TABLE rev ADD COLUMN email VARCHAR(255) DEFAULT NULL;",
    "ALTER TABLE rev ADD COLUMN celular VARCHAR(50) DEFAULT NULL;",
    
    "ALTER TABLE teste ADD COLUMN dono VARCHAR(100) DEFAULT 'admin';",
    "ALTER TABLE teste ADD COLUMN email VARCHAR(255) DEFAULT NULL;",
    "ALTER TABLE teste ADD COLUMN id_perfil INT(11) DEFAULT 1;"
];

// --- BANCO: ACESSOS ---
$sql_acessos = [
    "CREATE TABLE IF NOT EXISTS logs ( id int(11) NOT NULL AUTO_INCREMENT, mensagem text, data datetime DEFAULT CURRENT_TIMESTAMP, usuario varchar(100) DEFAULT NULL, PRIMARY KEY (id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;"
];

// --- BANCO: GERAL ---
$sql_geral = [
    "CREATE TABLE IF NOT EXISTS configuracao ( id int(11) NOT NULL DEFAULT 1, senha_servidor varchar(255) DEFAULT NULL, deskeys varchar(255) DEFAULT '0102030405060708091011121314', ip_servidor varchar(255) DEFAULT NULL, bloqueio_ip varchar(10) DEFAULT 'nao', chave_xml varchar(255) DEFAULT NULL, PRIMARY KEY (id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;",
    "INSERT IGNORE INTO configuracao (id, chave_xml) VALUES (1, '123456');",
    "CREATE TABLE IF NOT EXISTS email_modelo ( id int(11) NOT NULL AUTO_INCREMENT, tipo varchar(50) DEFAULT NULL, assunto varchar(255) DEFAULT NULL, mensagem text, dono varchar(100) DEFAULT 'admin', ativo int(1) DEFAULT 1, PRIMARY KEY (id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;",
    "CREATE TABLE IF NOT EXISTS smtp_config ( id int(11) NOT NULL AUTO_INCREMENT, host varchar(255) DEFAULT 'smtp.gmail.com', email varchar(255) DEFAULT NULL, senha varchar(255) DEFAULT NULL, porta varchar(10) DEFAULT '587', dono varchar(100) DEFAULT 'admin', PRIMARY KEY (id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;",
    "CREATE TABLE IF NOT EXISTS arquivo_backup ( id int(11) NOT NULL AUTO_INCREMENT, tipo varchar(50) DEFAULT NULL, local varchar(255) DEFAULT NULL, data datetime DEFAULT CURRENT_TIMESTAMP, size varchar(50) DEFAULT NULL, link_externo varchar(255) DEFAULT NULL, PRIMARY KEY (id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;"
];

// ============================================================================
// 4. MOTOR DE EXECUÇÃO
// ============================================================================
echo "<html><body style='font-family: Arial, sans-serif; background: #f4f4f4; padding: 20px;'>";
echo "<div style='max-width: 800px; margin: auto; background: #fff; padding: 20px; border-radius: 8px; box-shadow: 0 0 10px rgba(0,0,0,0.1);'>";
echo "<h2 style='color: #333; border-bottom: 2px solid #ddd; padding-bottom: 10px;'>Instalador de Banco de Dados</h2>";

function executar_queries($pdo, $nome_banco, $queries) {
    echo "<h3>Processando Banco: <span style='color: #0056b3;'>$nome_banco</span></h3>";
    echo "<ul style='list-style-type: none; padding-left: 0;'>";
    foreach ($queries as $sql) {
        try {
            $pdo->exec($sql);
            
            $resumo = substr($sql, 0, 50) . "...";
            if (strpos($sql, 'CREATE TABLE') !== false) {
                echo "<li style='margin-bottom: 5px;'><span style='color: green;'>✔ Sucesso:</span> Tabela processada ($resumo)</li>";
            } elseif (strpos($sql, 'ALTER TABLE') !== false) {
                echo "<li style='margin-bottom: 5px;'><span style='color: green;'>✔ Sucesso:</span> Coluna processada ($resumo)</li>";
            } else {
                echo "<li style='margin-bottom: 5px;'><span style='color: green;'>✔ Sucesso:</span> Comando executado ($resumo)</li>";
            }
            
        } catch (PDOException $e) {
            $erro = $e->getMessage();
            // Erro 1060: Coluna já existe (Ignora silenciosamente e avisa que está OK)
            if (strpos($erro, '1060') !== false) {
                echo "<li style='margin-bottom: 5px;'><span style='color: #888;'>ℹ OK:</span> Coluna já existe no banco. (" . substr($sql, 0, 40) . "...)</li>";
            } 
            // Erro 1146: Tabela não existe (Mostra erro em vermelho)
            elseif (strpos($erro, '1146') !== false) {
                echo "<li style='margin-bottom: 5px;'><span style='color: red;'>✖ Erro:</span> A tabela não existe. (" . substr($sql, 0, 40) . "...)</li>";
            } 
            else {
                echo "<li style='margin-bottom: 5px;'><span style='color: red;'>✖ Erro:</span> $erro</li>";
            }
        }
    }
    echo "</ul><hr>";
}

// Executa BANCO USER
$pdo_user = conectar($host, $db_user_nome, $db_user_user, $db_user_pass);
executar_queries($pdo_user, $db_user_nome, $sql_user);

// Executa BANCO ACESSOS
$pdo_acessos = conectar($host, $db_acessos_nome, $db_acessos_user, $db_acessos_pass);
executar_queries($pdo_acessos, $db_acessos_nome, $sql_acessos);

// Executa BANCO GERAL
$pdo_geral = conectar($host, $db_geral_nome, $db_geral_user, $db_geral_pass);
executar_queries($pdo_geral, $db_geral_nome, $sql_geral);

echo "<h3 style='color: green; text-align: center;'>🎉 Processo Concluído com Sucesso!</h3>";
echo "</div></body></html>";
?>