<?php
require_once '../includes/config.php';
require_once '../includes/db.php';
//require_once '../includes/theme_only.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;
}

$db = new Database();

// Script para verificar y crear el campo documento si no existe
try {
    // Verificar si la columna existe
    $checkColumn = "SHOW COLUMNS FROM usuarios LIKE 'documento'";
    $columnExists = $db->query($checkColumn)->fetch();

    if (!$columnExists) {
        // La columna no existe, la creamos
        $createColumn = "ALTER TABLE usuarios ADD COLUMN documento VARCHAR(20) AFTER email";
        $db->query($createColumn);
        
        // Log o mensaje de éxito
        error_log('Campo documento creado exitosamente en la tabla usuarios');
    }
} catch (PDOException $e) {
    // Log del error
    error_log('Error al verificar/crear campo documento: ' . $e->getMessage());
}


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

// Procesar formulario de registro
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    $nombre = $_POST['nombre'];
    $username = $_POST['username'];
    $email = trim($_POST['email'] ?? '');
    $documento = trim($_POST['documento'] ?? ''); // Agregar documento
    if (empty($email)) {
        $email = 'no-email-' . time() . '-' . rand(1000, 9999);
    }
    $password = $_POST['password'];
    $rol = $_POST['rol'];
    $estado = isset($_POST['estado']) ? 1 : 0;
    
    // Verificar username
    $checkUsername = "SELECT id FROM usuarios WHERE username = ?";
    $exists = $db->query($checkUsername, [$username])->fetch();
    
    if ($exists) {
        $_SESSION['mensaje'] = "El nombre de usuario ya está en uso.";
        $_SESSION['mensaje_tipo'] = "warning";
    } else {
        $canInsert = true;
        // Solo verificar duplicado de email si es un email real (no el generado)
        if (!empty($_POST['email'])) {
            $checkEmail = "SELECT id FROM usuarios WHERE email = ?";
            $emailExists = $db->query($checkEmail, [$email])->fetch();
            if ($emailExists) {
                $_SESSION['mensaje'] = "El email ya está registrado.";
                $_SESSION['mensaje_tipo'] = "warning";
                $canInsert = false;
            }
        }
        
        if ($canInsert) {
            try {
                $sql = "INSERT INTO usuarios (nombre, username, email, documento, password, rol, estado) 
                        VALUES (?, ?, ?, ?, ?, ?, ?)";
                $params = [$nombre, $username, $email, $documento, $password, $rol, $estado];
                
                if ($db->query($sql, $params)) {
                    $_SESSION['mensaje'] = "Usuario registrado exitosamente";
                    $_SESSION['mensaje_tipo'] = "success";
                }
            } catch (PDOException $e) {
                $_SESSION['mensaje'] = "Error al registrar el usuario: " . $e->getMessage();
                $_SESSION['mensaje_tipo'] = "danger";
            }
        }
    }
    
    header('Location: ' . $_SERVER['PHP_SELF']);
    exit;
}

// Recuperar mensaje de la sesión
if (isset($_SESSION['mensaje'])) {
    $mensaje = $_SESSION['mensaje'];
    $mensaje_tipo = $_SESSION['mensaje_tipo'];
    // Limpiar mensajes de la sesión
    unset($_SESSION['mensaje']);
    unset($_SESSION['mensaje_tipo']);
}

// Obtener lista de usuarios - Modificar esta sección
$sql = "SELECT id, nombre, username, email, documento, rol, estado, created_at 
        FROM usuarios ORDER BY nombre";
$usuarios = $db->query($sql)->fetchAll(PDO::FETCH_ASSOC);
//require_once "../includes/header.php";

// Antes del DOCTYPE, agregar:
//echo getThemeCSS();
require_once '../includes/header.php';
?>
<!DOCTYPE html>
<html>
<head>
<?php
    // Modo oscuro
    require_once '../includes/dark_mode.php';
    ?>
    <meta name="color-scheme" content="light dark">
    <?php echo getDarkModeStyles(); ?>

    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0">
    <title>Gestión de Usuarios</title>
    <link rel="stylesheet" href="../admin/css/bootstrap.min.css">
    <link rel="stylesheet" href="../css/styles.css">
    <?php if (!empty($config['favicon'])): ?>
    <link rel="shortcut icon" href="../uploads/config/<?php echo htmlspecialchars($config['favicon']); ?>">
    <?php endif; ?>
    <style>
        :root {
            --color-principal: <?php echo htmlspecialchars($config['color_principal']); ?>;
            --color-secundario: <?php echo htmlspecialchars($config['color_secundario']); ?>;
        }
        .titulo-principal { color: var(--color-principal); }
        .titulo-secundario { color: var(--color-secundario); }
        
        .form-control:focus {
            border-color: var(--color-principal);
            box-shadow: 0 0 0 0.2rem <?php echo htmlspecialchars($config['color_principal'].'33'); ?>;
        }
        
        .btn-custom {
            background-color: var(--color-principal);
            border-color: var(--color-principal);
            color: white;
        }
        
        .btn-custom:hover {
            background-color: var(--color-secundario);
            border-color: var(--color-secundario);
            color: white;
        }
        
        .form-check-input:checked {
            background-color: var(--color-principal);
            border-color: var(--color-principal);
        }

        /* Estilos para el menú */
        .btn-menu:hover {
            background-color: var(--color-principal);
            border-color: var(--color-principal);
            color: white;
        }
        
        /* Estilos personalizados para select */
        .form-select:focus {
            border-color: var(--color-principal);
            box-shadow: 0 0 0 0.2rem <?php echo htmlspecialchars($config['color_principal'].'33'); ?>;
        }
        
        .form-select option:checked {
            background-color: var(--color-principal);
            color: white;
        }
        
        /* Ajustes adicionales del formulario */
        .form-grid {
            display: grid;
            grid-template-columns: repeat(2, 1fr);
            gap: 1rem;
        }
        
        .btn-custom .btn-icon {
            margin-right: 0.5rem;
            width: 20px;
            height: 20px;
            filter: brightness(0) invert(1); /* Hace el ícono blanco */
        }
        
        @media (max-width: 768px) {
            .form-grid {
                grid-template-columns: 1fr;
            }
        }
        
        /* Estilo para el encabezado de la tabla */
        .card-header-custom {
            background-color: var(--color-principal);
            color: white;
            padding: 0.6rem 1rem;
        }
        
        .card-header-custom .titulo-secundario {
            color: white;
            margin: 0;
            font-size: 1.25rem;
            line-height: 1.2;
        }

        /* Ajustes para móvil */
        @media (max-width: 768px) {
            /* Base más equilibrada */
            html {
                font-size: 16px;
            }
            
            /* Contenedor */
            .container {
                padding: 1rem;
                max-width: 100%;
            }

            /* Títulos */
            .titulo-principal {
                font-size: 1.75rem;
                margin-bottom: 1rem;
            }

            /* Formulario */
            .form-registro {
                padding: 1.25rem !important;
                margin-bottom: 1rem;
            }

            .form-label {
                font-size: 1.1rem;
                margin-bottom: 0.3rem;
            }

            .form-control, 
            .form-select {
                font-size: 1.1rem;
                padding: 0.5rem 0.75rem;
                height: 2.8rem;
            }

            /* Checkbox más proporcionado */
            .form-check {
                margin: 0.5rem 0;
            }

            .form-check-input {
                width: 1.2rem;
                height: 1.2rem;
            }

            .form-check-label {
                font-size: 1.1rem;
                padding-left: 0.5rem;
            }

            /* Botones */
            .btn-custom {
                font-size: 1.1rem;
                padding: 0.75rem;
                height: 2.8rem;
            }

            .btn-menu {
                font-size: 0.9rem;
                padding: 0.5rem 0.75rem;
            }

            /* Tabla */
            .table {
                font-size: 0.95rem;
                margin-bottom: 0;
            }

            .table td, 
            .table th {
                padding: 0.75rem 0.5rem;
                vertical-align: middle;
            }

            /* Botones de acción */
            .btn-editar,
            .btn-eliminar {
                font-size: 0.9rem;
                padding: 0.4rem 0.8rem;
                margin: 0.1rem;
            }

            /* Alert */
            .alert {
                font-size: 1rem;
                padding: 0.75rem;
                margin-bottom: 1rem;
            }

            /* Espaciado entre elementos */
            .mb-3 {
                margin-bottom: 1rem !important;
            }

            /* Grid más compacto */
            .form-grid {
                gap: 0.75rem;
            }

            /* Botón menú solo ícono */
            .btn-menu {
                padding: 0.6rem;
                line-height: 1;
                border-radius: 50%;
                aspect-ratio: 1;
                display: flex;
                align-items: center;
                justify-content: center;
                background-color: var(--color-principal);
                border-color: var(--color-principal);
            }

            .menu-text {
                display: none;
            }

            .btn-menu img {
                margin: 0;
                filter: brightness(0) invert(1);
            }
        }

        /* Estilos para botones de acción */
        .btn-accion {
            padding: 0.4rem;
            width: 32px;
            height: 32px;
            display: inline-flex;
            align-items: center;
            justify-content: center;
            border-radius: 4px;
            margin: 0 0.2rem;
            text-decoration: none;
        }

        .btn-accion img {
            width: 18px;
            height: 18px;
            filter: brightness(0) invert(1); /* Iconos blancos */
        }

        .acciones-container {
            display: flex;
            gap: 0.5rem;
            justify-content: center;
        }

        .btn-editar {
            background-color: #6c757d; /* Color gris de Bootstrap */
        }

        .btn-eliminar {
            background-color: #dc3545; /* Color rojo */
        }

        /* Efectos hover */
        .btn-editar:hover {
            background-color: #5a6268;
        }

        .btn-eliminar:hover {
            background-color: #c82333;
        }
    </style>
</head>
<body>
    <div class="container py-4">
        <h1 class="mb-4">Gestión de Usuarios</h1>

        <?php if (isset($_SESSION['mensaje_error'])): ?>
            <div class="alert alert-danger alert-dismissible fade show" role="alert">
                <i class="fas fa-exclamation-triangle me-2"></i>
                <?php 
                    echo htmlspecialchars($_SESSION['mensaje_error']);
                    unset($_SESSION['mensaje_error']); 
                ?>
                <button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
            </div>
        <?php endif; ?>

        <?php if (isset($_SESSION['mensaje_exito'])): ?>
            <div class="alert alert-success alert-dismissible fade show" role="alert">
                <i class="fas fa-check-circle me-2"></i>
                <?php 
                    echo htmlspecialchars($_SESSION['mensaje_exito']);
                    unset($_SESSION['mensaje_exito']); 
                ?>
                <button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
            </div>
        <?php endif; ?>

        <form method="POST" class="form-registro card p-4 mb-4">
            <h2 class="titulo-secundario mb-4">Registrar Nuevo Usuario</h2>
            <div class="form-grid">
                <div class="mb-3">
                    <label class="form-label">Nombre:</label>
                    <input type="text" name="nombre" class="form-control" required>
                </div>
                <div class="mb-3">
                    <label class="form-label">Usuario:</label>
                    <input type="text" name="username" class="form-control" required>
                </div>
                <div class="mb-3">
                    <label class="form-label">Documento:</label>
                    <input type="text" name="documento" class="form-control" maxlength="20">
                </div>
                <div class="mb-3">
                    <label class="form-label">Email: (opcional)</label>
                    <input type="email" name="email" class="form-control">
                </div>
                <div class="mb-3">
                    <label class="form-label">Contraseña:</label>
                    <input type="password" name="password" class="form-control" required>
                </div>
                <div class="mb-3">
                    <label class="form-label">Rol:</label>
                    <select name="rol" class="form-select" required>
                        <option value="">Seleccione un rol</option>
                        <option value="admin">Administrador</option>
                        <option value="vendedor">Vendedor</option>
                        <option value="cobrador">Cobrador</option>
                        <option value="registrador_de_productos">Registrador de Productos</option>
                    </select>
                </div>
                <div class="mb-3 d-flex align-items-center">
                    <div class="form-check">
                        <input type="checkbox" name="estado" value="1" class="form-check-input" id="estado">
                        <label class="form-check-label" for="estado">Activo</label>
                    </div>
                </div>
            </div>
            <div class="form-grid mt-3">
                <div>
                    <button type="submit" class="btn btn-custom w-100">
                        <img src="../admin/icons/person.svg" alt="Agregar" class="btn-icon">
                        Registrar Usuario
                    </button>
                </div>
                <div></div><!-- Espacio vacío para mantener el grid -->
            </div>
        </form>

        <div class="tabla-usuarios card">
            <div class="card-header-custom">
                <h2 class="titulo-secundario">Usuarios Registrados</h2>
            </div>
            <div class="card-body">
                <div class="table-responsive">
                    <table class="table table-striped">
                        <thead>
                            <tr>
                                <th>Nombre</th>
                                <th>Usuario</th>
                                <th>Documento</th>
                                <th>Email</th>
                                <th>Rol</th>
                                <th>Estado</th>
                                <th>F. Registro</th>
                                <th>Acciones</th>
                            </tr>
                        </thead>
                        <tbody>
                            <?php foreach ($usuarios as $usuario): ?>
                            <tr>
                                <td><?php echo htmlspecialchars($usuario['nombre']); ?></td>
                                <td><?php echo htmlspecialchars($usuario['username']); ?></td>
                                <td><?php echo htmlspecialchars($usuario['documento']); ?></td>
                                <td><?php echo htmlspecialchars($usuario['email']); ?></td>
                                <td><?php echo htmlspecialchars($usuario['rol']); ?></td>
                                <td><?php echo $usuario['estado'] ? 'Activo' : 'Inactivo'; ?></td>
                                <td><?php echo date('d/m/Y', strtotime($usuario['created_at'])); ?></td>
                                <td>
                                    <div class="acciones-container">
                                        <a href="editar_usuario.php?id=<?php echo $usuario['id']; ?>" 
                                           class="btn-accion btn-editar" 
                                           title="Editar usuario">
                                            <img src="../admin/icons/pencil.svg" alt="Editar">
                                        </a>
                                        <a href="eliminar_usuario.php?id=<?php echo $usuario['id']; ?>" 
                                           class="btn-accion btn-eliminar" 
                                           onclick="return confirm('¿Está seguro de eliminar este usuario?')"
                                           title="Eliminar usuario">
                                            <img src="../admin/icons/trash.svg" alt="Eliminar">
                                        </a>
                                    </div>
                                </td>
                            </tr>
                            <?php endforeach; ?>
                        </tbody>
                    </table>
                </div>
            </div>
        </div>
    </div>
</body>
</html>
