File "CursoControlador.php"

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

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