<?php
// /admin/editar-portfolio.php
require 'db.php';

if(!defined('VX_OK')||!VX_OK){header('HTTP/1.0 403 Forbidden');exit;}

if (!isset($_SESSION['admin_logado'])) {
    header("Location: login.php");
    exit;
}

$mensagem = '';
$tipo_alerta = 'success';

// ==========================================
// 🛡️ MOTOR DE AUTO-REPARO DO BANCO DE DADOS
// ==========================================
try {
    $pdo->exec("CREATE TABLE IF NOT EXISTS portfolio (id INT AUTO_INCREMENT PRIMARY KEY, texto LONGTEXT) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci");
} catch (Exception $e) {}

try {
    $pdo->exec("ALTER TABLE portfolio CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci");
    $pdo->exec("ALTER TABLE portfolio MODIFY texto LONGTEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci");
} catch (Exception $e) {}

try {
    $qtd = $pdo->query("SELECT COUNT(*) FROM portfolio")->fetchColumn();
    if ($qtd == 0) {
        $pdo->exec("INSERT INTO portfolio (id, texto) VALUES (1, '')");
    }
} catch (Exception $e) {}

// ==========================================
// 💾 SALVANDO O CONTEÚDO (HTML) NO BANCO
// ==========================================
if ($_SERVER['REQUEST_METHOD'] == 'POST' && isset($_POST['acao']) && $_POST['acao'] == 'salvar') {
    try {
        $htmlRaw = base64_decode($_POST['html_b64']);
        $stmt = $pdo->prepare("UPDATE portfolio SET texto = ? WHERE id = 1");
        
        if ($stmt->execute([$htmlRaw])) {
            $mensagem = "Portfólio atualizado com sucesso!";
        } else {
            $mensagem = "Falha silenciosa ao gravar no banco de dados.";
            $tipo_alerta = 'warning';
        }
    } catch (Exception $e) {
        $mensagem = "Falha ao salvar: " . $e->getMessage();
        $tipo_alerta = 'danger';
    }
}

// ==========================================
// BUSCANDO O CONTEÚDO ATUAL
// ==========================================
try {
    $stmt = $pdo->query("SELECT texto FROM portfolio WHERE id = 1");
    $portfolio_atual = $stmt->fetchColumn() ?: '';
} catch (Exception $e) {
    $portfolio_atual = '';
}
?>

<!DOCTYPE html>
<html lang="pt-BR">
<head>
    <meta charset="UTF-8">
    <title>Portfólio Completo | VoxCore Admin</title>
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css" rel="stylesheet">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
    <link rel="stylesheet" href="admin.css">

    <script src="https://cdn.ckeditor.com/4.22.1/full/ckeditor.js"></script>

    <?php 
        $stmt_fav_adm = $pdo->query("SELECT valor FROM configs WHERE chave = 'favicon_admin'");
        $fav_adm_path = $stmt_fav_adm->fetchColumn() ?: 'img/favicon_admin.png';
    ?>
    <link rel="icon" href="../<?= $fav_adm_path ?>?v=<?= time() ?>" type="image/png">
</head>
<body>

<div class="d-flex">
    <?php include 'sidebar.php'; ?>

    <main class="col-md-9 ms-sm-auto col-lg-10 px-md-4 main-content pt-4">
        
        <div class="d-flex justify-content-between align-items-center mb-4">
            <h2><i class="fas fa-list-alt text-primary me-2"></i> Portfólio Completo</h2>
        </div>

        <?php if ($mensagem): ?><div class="alert alert-<?= $tipo_alerta ?>"><i class="fas fa-info-circle"></i> <?= $mensagem ?></div><?php endif; ?>

        <div class="row">
            <div class="col-md-4 mb-4">
                <div class="card shadow-sm border-0 h-100">
                    <div class="card-header bg-dark text-white font-weight-bold">
                        1. Lista Bruta (Texto obtido na Internet ou documento)
                    </div>
                    <div class="card-body d-flex flex-column p-2">
                        <textarea id="textoBrutoWiki" class="form-control flex-grow-1" style="min-height: 450px; font-size: 13px;" placeholder="Cole aqui o texto copiado com o portfolio do(a) artista"></textarea>
                        
                        <button class="btn btn-primary mt-3 w-100 font-weight-bold" onclick="processarTextoIA()">
                            <i class="fas fa-magic"></i> Limpar e Formatar
                        </button>
                    </div>
                </div>
            </div>

            <div class="col-md-8 mb-4">
                <div class="card shadow-sm border-0 h-100">
                    <div class="card-header bg-success text-white font-weight-bold">
                        2. Resultado e Ajustes Finos (Editor Oficial)
                    </div>
                    
                    <div class="card-body p-0">
                        <textarea id="previewHtml" name="previewHtml"><?= $portfolio_atual ?></textarea>
                    </div>
                    
                    <div class="card-footer bg-white border-top-0 pt-3">
                        <form method="POST" id="formPortfolio">
                            <input type="hidden" name="acao" value="salvar">
                            <input type="hidden" name="html_b64" id="htmlBase64">
                            <button type="button" class="btn btn-success w-100 btn-lg shadow-sm font-weight-bold" onclick="injetarDescricaoNoBanco()">
                                <i class="fas fa-save"></i> Publicar Portfólio no Site
                            </button>
                        </form>
                    </div>
                </div>
            </div>
        </div>

    </main>
</div>

<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/js/bootstrap.bundle.min.js"></script>
<script>
    // 🛰️ 1. INICIALIZAÇÃO DO MOTOR WYSIWYG
    CKEDITOR.replace('previewHtml', {
        height: 400,
        language: 'pt-br',
        removeButtons: 'Save,NewPage,ExportPdf,Preview,Print,Templates',
        uiColor: '#f8f9fa',
        versionCheck: false,
        allowedContent: true // 🟢 A CHAVE MESTRA: Impede o CKEditor de apagar a formatação do nosso botão mágico!
    });

    // 🛰️ 2. A MÁGICA: O PROCESSADOR DE TEXTO BRUTO (Formato Clássico)
    function processarTextoIA() {
        let bruto = document.getElementById('textoBrutoWiki').value;
        let htmlGerado = '';
        
        if (bruto) {
            let linhas = bruto.split('\n');
            let categoriaAberta = false;

            linhas.forEach((linha, index) => {
                linha = linha.trim();
                if (linha === "" || linha.toLowerCase().includes('publicidade')) return;

                // 1. NOME DO ARTISTA (Topo)
                if (index === 0 && !linha.includes('-') && linha.length < 40) {
                    htmlGerado += `<h3 style="font-weight: bold; color: #000; margin-top: 30px; margin-bottom: 20px;">${linha.toUpperCase()}</h3>`;
                    return;
                }

                // 2. DETECTOR DE CATEGORIA (Ex: FILMES)
                if (linha.length < 40 && !linha.includes('-') && (linha.endsWith(':') || isNaN(linha.charAt(0)))) {
                    if (categoriaAberta) htmlGerado += '</ul>';
                    
                    let categoria = linha.replace(':', '').trim();
                    // Usando <h5> em vez de <p> para garantir força de cabeçalho
                    htmlGerado += `<h5 style="font-weight: bold; color: #000; margin-top: 25px; margin-bottom: 10px;">${categoria.toUpperCase()}</h5>`;
                    
                    // Margin-left empurra toda a lista para dentro, simulando a aba (TAB) perfeita!
                    htmlGerado += `<ul style="list-style-type: disc; margin-left: 40px; margin-bottom: 20px;">`;
                    categoriaAberta = true;
                } 
                // 3. ITENS DA LISTA (Com Bullets e Recuo)
                else {
                    if (!categoriaAberta) {
                        htmlGerado += `<ul style="list-style-type: disc; margin-left: 40px; margin-bottom: 20px;">`;
                        categoriaAberta = true;
                    }
                    
                    let conteudo = linha;
                    if (linha.includes('-')) {
                        let partes = linha.split('-');
                        conteudo = `${partes[0].trim()} - ${partes.slice(1).join('-').trim()}`;
                    }
                    
                    // Mantém a cor preta e o tamanho base legível
                    htmlGerado += `<li style="margin-bottom: 6px; font-size: 15px; color: #000;">${conteudo}</li>`;
                }
            });

            if (categoriaAberta) htmlGerado += '</ul>';
        }

        // MÁGICA DE INTEGRAÇÃO: Despeja o HTML gerado diretamente dentro do CKEditor!
        CKEDITOR.instances.previewHtml.setData(htmlGerado);
    }

    // 🛰️ 3. O INJETOR: Extrai do CKEditor, Criptografa em Base64 e manda pro PHP
    function injetarDescricaoNoBanco() {
        let htmlFinal = CKEDITOR.instances.previewHtml.getData();
        
        if (!htmlFinal.trim()) {
            alert("O portfólio não pode estar vazio!");
            return;
        }

        // Btoa transforma o HTML em uma string segura para enviar via POST
        document.getElementById('htmlBase64').value = btoa(encodeURIComponent(htmlFinal).replace(/%([0-9A-F]{2})/g,
            function(match, p1) { return String.fromCharCode('0x' + p1); }
        ));
        
        document.getElementById('formPortfolio').submit();
    }

    // Controle do menu mobile
    document.getElementById('btnToggleMenu')?.addEventListener('click', function() {
        document.getElementById('sidebarMenu').classList.toggle('show');
        document.getElementById('sidebarOverlay').classList.toggle('show');
    });
</script>
</body>
</html>