<?php
session_start();
// Verificar si el usuario está logueado y es admin
if (!isset($_SESSION['usuario_id']) || empty($_SESSION['usuario_id']) || $_SESSION['rol'] !== 'admin') {
    header('Location: ../login.php');
    exit;
}

require_once '../includes/config.php';
require_once '../includes/db.php';
//require_once '../includes/theme_only.php';

$db = new Database();
$mensaje = '';

// Obtener configuración
$stmt = $db->query("SELECT color_principal, color_secundario, favicon FROM configuracion");
$config = $stmt->fetch(PDO::FETCH_ASSOC);

// Procesar subida de banner
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_FILES['banner'])) {
    $files = $_FILES['banner'];
    $targetDir = "../uploads/banner/";
    
    // Asegurar que el directorio existe y tiene permisos
    if (!file_exists($targetDir)) {
        mkdir($targetDir, 0777, true);
    }
    
    // Verificar permisos de escritura
    if (!is_writable($targetDir)) {
        $mensaje = '<div class="alert alert-danger">Error: El directorio no tiene permisos de escritura.</div>';
    } else {
        // Verificar si ya hay 10 banners
        $existingBanners = glob($targetDir . "*");
        $totalBanners = count($existingBanners) + count($files['name']);
        
        if ($totalBanners > 10 && !isset($_POST['delete'])) {
            $mensaje = '<div class="alert alert-danger">El máximo es 10 banners. Actualmente hay ' . count($existingBanners) . '.</div>';
        } else {
            $uploadedCount = 0;
            $errors = 0;
            
            // Procesar cada archivo
            foreach ($files['name'] as $key => $name) {
                if ($files['error'][$key] === UPLOAD_ERR_OK) {
                    $tmpName = $files['tmp_name'][$key];
                    $fileName = basename($name);
                    $targetFile = $targetDir . $fileName;
                    
                    // Verificar si es una imagen válida
                    $check = getimagesize($tmpName);
                    if ($check !== false) {
                        if (move_uploaded_file($tmpName, $targetFile)) {
                            chmod($targetFile, 0644); // Establecer permisos correctos
                            $uploadedCount++;
                        } else {
                            $errors++;
                            error_log("Error al mover archivo: " . error_get_last()['message']);
                        }
                    } else {
                        $errors++;
                        error_log("Archivo no es una imagen válida: " . $fileName);
                    }
                } else {
                    $errors++;
                    error_log("Error de subida: " . $files['error'][$key]);
                }
            }
            
            if ($errors == 0 && $uploadedCount > 0) {
                $mensaje = '<div class="alert alert-success">' . $uploadedCount . ' banners subidos exitosamente.</div>';
            } else {
                $mensaje = '<div class="alert alert-warning">Se subieron ' . $uploadedCount . ' banners, pero hubo ' . $errors . ' errores.</div>';
            }
        }
    }
}

// Eliminar banner
if (isset($_POST['delete']) && isset($_POST['banner_name'])) {
    $bannerName = $_POST['banner_name'];
    // Sanitizar el nombre del archivo
    $bannerName = basename($bannerName);
    $bannerPath = "../uploads/banner/" . $bannerName;
    
    if (file_exists($bannerPath)) {
        if (unlink($bannerPath)) {
            $mensaje = '<div class="alert alert-success">Banner eliminado exitosamente.</div>';
        } else {
            $mensaje = '<div class="alert alert-danger">Error al eliminar el banner. Verifique los permisos.</div>';
        }
    } else {
        $mensaje = '<div class="alert alert-warning">El archivo no existe.</div>';
    }
}
//echo getThemeCSS();
require_once '../includes/header.php';
?>

<!DOCTYPE html>
<html lang="es">
<head>
<?php
    // Modo oscuro
    require_once '../includes/dark_mode.php';
    ?>
    <meta name="color-scheme" content="light dark">
    <?php echo getDarkModeStyles(); ?>

    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Gestión de Banners</title>
    <link rel="stylesheet" href="css/bootstrap.min.css">
    <link rel="icon" type="image/x-icon" href="../uploads/config/<?php echo htmlspecialchars($config['favicon']); ?>">
    <style>
        .btn-primary {
            background-color: <?php echo $config['color_principal']; ?> !important;
            border-color: <?php echo $config['color_principal']; ?> !important;
        }
        .btn-secondary {
            background-color: <?php echo $config['color_secundario']; ?> !important;
            border-color: <?php echo $config['color_secundario']; ?> !important;
        }
        .titulo-principal {
            color: <?php echo $config['color_principal']; ?>;
        }
        /* Nuevos estilos */
        .custom-file-input {
            position: relative;
            padding: 1rem;
            border: 2px dashed #ccc;
            border-radius: 8px;
            text-align: center;
            cursor: pointer;
            transition: all 0.3s;
        }
        .custom-file-input:hover {
            border-color: <?php echo $config['color_principal']; ?>;
        }
        .preview-image {
            max-width: 300px;
            max-height: 200px;
            margin: 1rem auto;
            display: none;
        }
        @media (max-width: 768px) {
            .container {
                padding: 10px;
            }
            .col-md-4 {
                padding: 5px;
            }
            .card {
                margin-bottom: 10px;
            }
            .btn {
                width: 100%;
                margin: 5px 0;
            }
            .preview-image {
                max-width: 100%;
            }
        }
        /* Modificar/Agregar estos estilos */
        .banner-list {
            width: 100%;
            max-width: 1200px;
            margin: 0 auto;
        }
        .banner-item {
            border: 1px solid #ddd;
            margin-bottom: 1rem;
            padding: 1rem;
            border-radius: 8px;
            background: #fff;
        }
        .banner-image {
            width: 100%;
            height: auto;
            max-height: 300px;
            object-fit: contain;
        }
        .banner-name {
            color: <?php echo $config['color_principal']; ?>;
            font-weight: bold;
            margin: 10px 0;
        }
        .banner-controls {
            display: flex;
            justify-content: space-between;
            align-items: center;
            margin-top: 10px;
        }
        /* Estilos para drag & drop */
        .upload-area {
            border: 2px dashed <?php echo $config['color_principal']; ?>;
            border-radius: 8px;
            padding: 2rem;
            text-align: center;
            background: #f8f9fa;
            cursor: pointer;
            transition: all 0.3s;
        }
        .upload-area h4 {
            color: <?php echo $config['color_principal']; ?>;
        }
        .upload-area:hover, .upload-area.drag-over {
            background: <?php echo $config['color_principal']; ?>10;
            border-color: <?php echo $config['color_principal']; ?>;
        }
        .upload-area .text-muted {
            color: <?php echo $config['color_principal']; ?> !important;
            opacity: 0.8;
        }
        .preview-container {
            display: flex;
            flex-wrap: wrap;
            gap: 10px;
            margin: 1rem 0;
        }
        .preview-item {
            position: relative;
            width: 150px;
            height: 150px;
        }
        .preview-item img {
            width: 100%;
            height: 100%;
            object-fit: cover;
            border-radius: 4px;
        }
        .preview-item .remove-preview {
            position: absolute;
            top: 5px;
            right: 5px;
            background: rgba(255,0,0,0.7);
            color: white;
            border: none;
            border-radius: 50%;
            width: 25px;
            height: 25px;
            cursor: pointer;
        }
    </style>
    
    <script>
        let selectedFiles = [];

        function handleFiles(files) {
            const previewContainer = document.getElementById('preview-container');
            const maxFiles = 10 - document.querySelectorAll('.banner-item').length;
            
            // Convertir FileList a Array y limitar a la cantidad disponible
            const newFiles = Array.from(files).slice(0, maxFiles);
            
            selectedFiles = newFiles;
            previewContainer.innerHTML = '';
            
            selectedFiles.forEach((file, index) => {
                const reader = new FileReader();
                const previewItem = document.createElement('div');
                previewItem.className = 'preview-item';
                
                reader.onload = function(e) {
                    previewItem.innerHTML = `
                        <img src="${e.target.result}" alt="Preview">
                        <button type="button" class="remove-preview" onclick="removeFile(${index})">×</button>
                    `;
                }
                
                reader.readAsDataURL(file);
                previewContainer.appendChild(previewItem);
            });
            
            // Mostrar/ocultar botón de subida
            document.getElementById('upload-button').style.display = selectedFiles.length > 0 ? 'block' : 'none';
        }

        function removeFile(index) {
            selectedFiles.splice(index, 1);
            handleFiles(selectedFiles);
        }

        function uploadFiles() {
            const formData = new FormData();
            selectedFiles.forEach(file => {
                formData.append('banner[]', file);
            });

            fetch(window.location.href, {
                method: 'POST',
                body: formData
            })
            .then(response => response.text())
            .then(() => {
                window.location.reload();
            })
            .catch(error => {
                console.error('Error:', error);
            });
        }
    </script>
</head>
<body>
    <div class="container mt-4">
        <h2 class="titulo-principal mb-4">Gestión de Banners</h2>
        <?php echo $mensaje; ?>

        <!-- Nueva área de subida -->
        <div class="upload-area" id="drop-area"
             ondrop="event.preventDefault(); handleFiles(event.dataTransfer.files)"
             ondragover="event.preventDefault(); this.classList.add('drag-over')"
             ondragleave="this.classList.remove('drag-over')"
             onclick="document.getElementById('file-input').click()">
            <img src="icons/upload.svg" alt="Subir" width="48" height="48" class="mb-3">
            <h4>Arrastra las imágenes aquí o haz click para seleccionar</h4>
            <p class="text-muted">Puedes subir hasta 10 banners. Medidas: 1400 x 220</p>
            <input type="file" id="file-input" hidden accept="image/*" multiple
                   onchange="handleFiles(this.files)">
        </div>

        <!-- Contenedor de vista previa -->
        <div id="preview-container" class="preview-container"></div>

        <!-- Botón de subida -->
        <button id="upload-button" onclick="uploadFiles()" 
                class="btn btn-primary w-100 w-md-auto" 
                style="display: none;">
            <img src="icons/upload.svg" alt="Subir" width="20" height="20" class="me-2">
            Subir Banners
        </button>

        <!-- Lista de banners existentes -->
        <div class="banner-list">
            <?php
            $banners = glob("../uploads/banner/*");
            if ($banners === false) {
                echo '<div class="alert alert-warning">No se puede acceder al directorio de banners.</div>';
            } else {
                natsort($banners);
                foreach ($banners as $banner) {
                    if (!is_file($banner)) continue;
                    $bannerName = basename($banner);
                    ?>
                    <div class="banner-item">
                        <div class="banner-name">
                            <?php echo htmlspecialchars($bannerName); ?>
                        </div>
                        <img src="../uploads/banner/<?php echo htmlspecialchars($bannerName); ?>" 
                             class="banner-image" alt="Banner">
                        <div class="banner-controls">
                            <span class="text-muted">
                                <?php echo date("d/m/Y H:i", filemtime($banner)); ?>
                            </span>
                            <form method="POST" class="d-inline">
                                <input type="hidden" name="banner_name" 
                                       value="<?php echo htmlspecialchars($bannerName); ?>">
                                <button type="submit" name="delete" class="btn btn-danger">
                                    <img src="icons/trash.svg" alt="Eliminar" width="20" height="20" class="me-2">
                                    Eliminar
                                </button>
                            </form>
                        </div>
                    </div>
                <?php }
            } ?>
        </div>
    </div>
</body>
</html>
