File "UsuarioControlador.php"

Full Path: C:/wamp64/www/Formaciones/Controladores/UsuarioControlador.php
File size: 2.86 KB
MIME-type: text/x-php
Charset: utf-8

<?php
// Controladores/UsuarioControlador.php
require_once 'Modelos/UsuarioModelo.php';

class UsuarioControlador {
    private $modelo;

    public function __construct($db, $db_externa = null) {
        $this->modelo = new UsuarioModelo($db, $db_externa);
        
        // Seguridad: Solo admin entra aquí
        if (!esta_autenticado() || usuario_actual()['rol'] !== 'admin') {
            $_SESSION['error'] = "No tienes permiso para acceder a esta sección.";
            header("Location: index.php?r=dashboard");
            exit;
        }
    }

	/** Pantalla principal de gestión de usuarios */
	public function index() {
		// Capturar el término de búsqueda
		$busqueda = $_GET['busqueda'] ?? '';
		
		// Configuración de paginación
		$por_pagina = 10;
		$pagina_actual = isset($_GET['p']) ? (int)$_GET['p'] : 1;
		if ($pagina_actual < 1) $pagina_actual = 1;
		
		$inicio = ($pagina_actual - 1) * $por_pagina;

		// Obtener datos con filtro de búsqueda
		$total_usuarios = $this->modelo->contarTotal($busqueda);
		$total_paginas = ceil($total_usuarios / $por_pagina);
		$usuarios = $this->modelo->listarPaginado($inicio, $por_pagina, $busqueda);

		// Cargar vistas pasando las variables de paginación y búsqueda
		require_once 'Vistas/plantilla/encabezado.php';
		require_once 'Vistas/admin/usuarios.php';
		require_once 'Vistas/plantilla/pie.php';
	}

    /** Procesar el formulario de creación de usuario */
    public function guardar() {
        if ($_SERVER['REQUEST_METHOD'] === 'POST') {
            if ($this->modelo->guardarManual($_POST)) {
                $_SESSION['mensaje'] = "Usuario creado con éxito.";
            } else {
                $_SESSION['error'] = "Error al crear el usuario.";
            }
        }
        header("Location: index.php?r=admin/usuarios");
        exit;
    }

    /** Mostrar formulario de edición (Botón Ver) */
    public function ver() {
        $id = $_GET['id'] ?? null;
        $usuario = $this->modelo->obtenerPorId($id);

        if (!$usuario) {
            $_SESSION['error'] = "Usuario no encontrado.";
            header("Location: index.php?r=admin/usuarios");
            exit;
        }

        require_once 'Vistas/plantilla/encabezado.php';
        require_once 'Vistas/admin/usuarios_editar.php';
        require_once 'Vistas/plantilla/pie.php';
    }

    /** Procesar la actualización de datos */
    public function actualizar() {
        if ($_SERVER['REQUEST_METHOD'] === 'POST') {
            $id = $_POST['id'];
            if ($this->modelo->actualizar($id, $_POST)) {
                $_SESSION['mensaje'] = "Usuario actualizado correctamente.";
            } else {
                $_SESSION['error'] = "Error al actualizar el usuario.";
            }
        }
        header("Location: index.php?r=admin/usuarios");
        exit;
    }
}