<?php
/**
 * 🎨 Sistema de Seleção de Tema — Versão Reforçada 2025
 * ✅ Estabilizado: Proteção contra corrupção de banco e melhoria de UX.
 */

// Inicio do Buffer para evitar erro de "Headers already sent"
ob_start();

// Configurações de Erro para Produção (Silencioso para o usuário, mas logado no servidor)
ini_set('display_errors', 0);
ini_set('log_errors', 1);
error_reporting(E_ALL);

// Inclui o cabeçalho
include "includes/header.php";

// ==============================
// CONFIGURAÇÃO E CONEXÃO REFORÇADA
// ==============================
$dbPath = __DIR__ . "/api/.db.db";
$pdo = null;
$dbConnectionError = false;

try {
    $dbDir = dirname($dbPath);
    if (!is_dir($dbDir)) {
        @mkdir($dbDir, 0755, true);
    }
    
    // Conexão PDO com timeout e modo de persistência para evitar "Database is locked"
    $pdo = new PDO("sqlite:" . $dbPath, null, null, [
        PDO::ATTR_TIMEOUT => 5,
        PDO::ATTR_PERSISTENT => false
    ]);
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    $pdo->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
    
    // Otimização de performance SQLite (WAL Mode)
    $pdo->exec("PRAGMA journal_mode=WAL;");
    
    // Criação da tabela com integridade
    $pdo->exec("CREATE TABLE IF NOT EXISTS themes (id INTEGER PRIMARY KEY, theme_id TEXT)");
    $pdo->exec("INSERT OR IGNORE INTO themes (id, theme_id) VALUES (1, '1')");
} catch (PDOException $e) {
    error_log("Erro Critico de DB: " . $e->getMessage());
    $dbConnectionError = true;
}

// ==============================
// LÓGICA DE ATUALIZAÇÃO SEGURA
// ==============================
$statusMessage = null;

if (!$dbConnectionError && $_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST["theme_id"])) {
    // Sanitização rigorosa
    $theme_id = filter_input(INPUT_POST, 'theme_id', FILTER_SANITIZE_NUMBER_INT); 

    if ($theme_id) {
        try {
            // Transaction para garantir que a escrita ocorra sem interrupções
            $pdo->beginTransaction();
            $stmt = $pdo->prepare("UPDATE themes SET theme_id = :theme_id WHERE id = 1");
            $stmt->bindValue(":theme_id", (string)$theme_id, PDO::PARAM_STR);
            $stmt->execute();
            $pdo->commit();
            
            // Redirecionamento limpo
            header("Location: " . basename($_SERVER["SCRIPT_NAME"]) . "?status=1");
            exit;
        } catch (PDOException $e) {
            if ($pdo->inTransaction()) $pdo->rollBack();
            error_log("Erro ao atualizar tema: " . $e->getMessage());
            $dbConnectionError = true;
        }
    }
}

// Mensagem de Status
if (isset($_GET['status']) && $_GET['status'] === '1') {
    $statusMessage = "Tema atualizado com sucesso!";
}

// Busca Tema Atual com Fallback seguro
$currentThemeId = '1';
if (!$dbConnectionError) {
    try {
        $stmt = $pdo->query("SELECT theme_id FROM themes WHERE id = 1 LIMIT 1");
        $row = $stmt->fetch();
        if ($row) $currentThemeId = $row["theme_id"];
    } catch (Exception $e) {
        $currentThemeId = '1';
    }
}

// Definição dos temas disponiveis
$themeNumbers = [1, 2, 3]; 
?>

<style>
:root {
    --primary: #4361ee;
    --primary-dark: #3a0ca3;
    --success: #10b981;
    --bg-light: #f8f9fa;
    --radius: 12px;
}

.theme-thumbnails {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); 
    gap: 25px;
    margin-top: 20px;
}

.theme-preview {
    background: #fff;
    border-radius: var(--radius);
    padding: 15px;
    box-shadow: 0 4px 12px rgba(0,0,0,0.08);
    transition: all 0.3s cubic-bezier(0.25, 0.8, 0.25, 1);
    border: 3px solid transparent;
    position: relative;
    height: 100%;
}

.theme-preview:hover {
    transform: translateY(-8px);
    box-shadow: 0 12px 24px rgba(0,0,0,0.15);
}

.selected-theme {
    border-color: var(--primary);
    background-color: #f0f3ff;
    animation: borderPulse 2.5s infinite;
}

@keyframes borderPulse {
    0% { border-color: var(--primary); }
    50% { border-color: var(--primary-dark); }
    100% { border-color: var(--primary); }
}

.theme-image-container {
    position: relative;
    overflow: hidden;
    border-radius: 8px;
    background: #eee;
    aspect-ratio: 16/10;
}

.theme-image-container img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
    transition: transform 0.6s ease;
}

.theme-preview:hover img {
    transform: scale(1.08);
}

.selected-badge {
    position: absolute;
    top: 10px;
    right: 10px;
    background: var(--primary);
    color: white;
    padding: 6px 14px;
    border-radius: 20px;
    font-size: 0.7rem;
    font-weight: 800;
    z-index: 2;
    box-shadow: 0 2px 8px rgba(0,0,0,0.2);
    text-transform: uppercase;
}

.btn-theme {
    transition: all 0.2s ease;
    border-width: 2px;
}

.alert-modern {
    border-radius: var(--radius);
    border: none;
    font-weight: 600;
}
</style>

<div class="container-fluid py-4">
    <?php if ($statusMessage): ?>
        <div id="status-alert" class="alert alert-success alert-modern shadow-sm d-flex align-items-center animated fadeIn" role="alert">
            <i class="fas fa-check-circle me-3 fa-lg"></i> 
            <div><?= htmlspecialchars($statusMessage) ?></div>
        </div>
    <?php endif; ?>

    <?php if ($dbConnectionError): ?>
        <div class="alert alert-danger alert-modern shadow-sm" role="alert">
            <i class="fas fa-exclamation-triangle me-3 fa-lg"></i> 
            <strong>Erro de Sistema:</strong> Não foi possivel acessar o banco de dados. Verifique as permissões de gravação na pasta <code>/api/</code>.
        </div>
    <?php endif; ?>

    <div class="row">
        <div class="col-xl-10 mx-auto">
            <div class="card border-0 shadow-lg" style="border-radius: var(--radius);">
                <div class="card-header text-white p-4" style="background: linear-gradient(135deg, var(--primary), var(--primary-dark)); border-radius: 12px 12px 0 0;">
                    <div class="d-flex align-items-center">
                        <div class="bg-white p-3 rounded-circle me-3" style="width: 50px; height: 50px; display: flex; align-items: center; justify-content: center;">
                            <i class="fas fa-palette text-primary"></i>
                        </div>
                        <div>
                            <h5 class="mb-0 fw-bold">Personalização Visual</h5>
                            <p class="mb-0 opacity-75 small">Altere o visual do seu painel em tempo real.</p>
                        </div>
                    </div>
                </div>
                <div class="card-body p-4 bg-light">
                    <div class="theme-thumbnails">
                        <?php foreach ($themeNumbers as $num): 
                            $isActive = ($currentThemeId == $num);
                        ?>
                            <div class="theme-preview <?= $isActive ? 'selected-theme' : '' ?>">
                                <div class="theme-image-container">
                                    <?php if ($isActive): ?>
                                        <div class="selected-badge"><i class="fas fa-check-circle me-1"></i> Ativo Agora</div>
                                    <?php endif; ?>
                                    <img src="img/theme_<?= $num ?>.png" alt="Preview Tema <?= $num ?>" 
                                         onerror="this.src='https://placehold.co/400x250/e9ecef/495057?text=Miniatura+Tema+<?= $num ?>'">
                                </div>

                                <div class="mt-4 text-center">
                                    <h6 class="fw-bold text-dark mb-1">Layout Premium #<?= $num ?></h6>
                                    <p class="text-muted small mb-3">Otimizado para máxima performance e UX.</p>
                                    
                                    <form method="post">
                                        <input type="hidden" name="theme_id" value="<?= $num ?>">
                                        <button type="submit" class="btn btn-theme <?= $isActive ? 'btn-success' : 'btn-outline-primary' ?> w-100 fw-bold py-2 shadow-sm" <?= $isActive ? 'disabled' : '' ?>>
                                            <i class="fas <?= $isActive ? 'fa-check-circle' : 'fa-magic' ?> me-2"></i>
                                            <?= $isActive ? 'Tema Aplicado' : 'Aplicar este Tema' ?>
                                        </button>
                                    </form>
                                </div>
                            </div>
                        <?php endforeach; ?>
                    </div>
                </div>
            </div>
        </div>
    </div>
</div>

<script>
document.addEventListener("DOMContentLoaded", () => {
    // Esconder alerta com efeito fade-out suave
    const alert = document.getElementById('status-alert');
    if (alert) {
        setTimeout(() => {
            alert.style.transition = "all 0.6s cubic-bezier(0.4, 0, 0.2, 1)";
            alert.style.opacity = "0";
            alert.style.transform = "translateY(-20px)";
            setTimeout(() => alert.remove(), 600);
        }, 4000);
    }
});
</script>

<?php 
include "includes/footer.php"; 
// Finaliza o buffer
ob_end_flush();
?>