<?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;
}
}