<?php // Controladores/CursoControlador.php require_once 'Modelos/CursoModelo.php'; class CursoControlador { private $modelo; public function __construct($db) { $this->modelo = new CursoModelo($db); // RECUPERAR USUARIO ACTUAL $usuario = usuario_actual(); // DEFINIR ROLES PERMITIDOS $roles_autorizados = ['admin', 'instructor']; // VERIFICAR ACCESO // Si no hay usuario o su rol no está en la lista permitida, redirigir if (!$usuario || !in_array($usuario['rol'], $roles_autorizados)) { header("Location: index.php?r=dashboard"); exit; } } public function index() { // 1. Configuración de paginación $por_pagina = 10; // Cursos por página $pagina_actual = isset($_GET['p']) ? (int)$_GET['p'] : 1; if ($pagina_actual < 1) $pagina_actual = 1; $inicio = ($pagina_actual - 1) * $por_pagina; // 2. Obtener datos paginados $total_cursos = $this->modelo->contarTotal(); $total_paginas = ceil($total_cursos / $por_pagina); $cursos = $this->modelo->listarPaginado($inicio, $por_pagina); // 3. Cargar vistas require_once 'Vistas/plantilla/encabezado.php'; require_once 'Vistas/admin/cursos.php'; require_once 'Vistas/plantilla/pie.php'; } public function guardar() { if ($_SERVER['REQUEST_METHOD'] === 'POST') { $id = $_POST['course_id'] ?? null; $datos = [ 'title' => trim($_POST['title'] ?? ''), 'duracion' => (int)($_POST['duracion'] ?? 0), 'description' => trim($_POST['description'] ?? ''), 'limite_at' => empty($_POST['limite_at']) ? null : $_POST['limite_at'] . ' 23:59:59', 'status' => $_POST['status'] ?? 'active' ]; if ($id) { // Actualizar curso existente $ejecutado = $this->modelo->actualizarCompleto($id, $datos); $mensaje = "Curso actualizado correctamente."; } else { // Crear curso nuevo $ejecutado = $this->modelo->crearCompleto($datos); $mensaje = "Curso creado exitosamente."; } if ($ejecutado) { $_SESSION['mensaje'] = $mensaje; } else { $_SESSION['error'] = "Ocurrió un error al procesar la solicitud."; } } header("Location: index.php?r=admin/cursos"); exit; } public function borrar() { $id = $_GET['id'] ?? null; if ($id && $this->modelo->eliminar($id)) { $_SESSION['mensaje'] = "Curso eliminado."; } else { $_SESSION['error'] = "No se pudo eliminar el curso."; } header("Location: index.php?r=admin/cursos"); exit; } }