Documentation

Solicitud_controlador
in package

Controlador encargado de la gestión de solicitudes en toda la aplicación.

Tags
author

Leandro José Paniagua Balbuena

author

Antonio Manuel Figueroa Pinilla

Table of Contents

Properties

$curso  : Curso
Instancia del modelo Curso
$solicitud  : Solicitud
Instancia del modelo Solicitud

Methods

__construct()  : mixed
Constructor de la clase. Se instancian los modelos Solicitud y Curso.
cargarDatosSolicitud()  : array<string|int, mixed>|string
Carga los datos necesarios para mostrar el formulario de nueva solicitud.
cargarGestionarSolicitud()  : array<string|int, mixed>
Carga los datos necesarios para mostrar la vista de gestión de una solicitud específica.
cargarModificarSolicitud()  : array<string|int, mixed>
Carga los datos necesarios para mostrar el formulario de modificación de la que se desea modificar solicitud.
cargarVerSolicitud()  : array<string|int, mixed>
Carga los datos necesarios para mostrar una solicitud específica sin posibilidad de modificación.
crearSolicitud()  : array<string|int, mixed>|string
Procesa el formulario de creación de una nueva solicitud.
eliminarSolicitud()  : string
Elimina una solicitud de la base de datos, retirando los archivos asociados del servidor durante el proceso.
generarIdentificador()  : string
Genera un identificador único para una solicitud basada en su fecha de presentación y número.
generarIdentificadorParaAdministrador()  : string
Genera un identificador único de solicitud para las vistas del administrador.
generarNombreUnico()  : string
Necesitamos generar nombres únicos para los archivos que se van a introducir con cada solicitud.
gestionarEstado()  : string
Gestiona la actualización del estado de una solicitud específica.
modificarSolicitud()  : string
Procesa una solicitud (POST). Se modifica una solicitud previamente planteada.
obtenerSolicitudesCurso()  : array<string|int, mixed>
Obtiene las solicitudes asociadas a un curso específico para su gestión por parte del administrador.
obtenerSolicitudesGestion()  : array<string|int, mixed>
Obtiene y prepara las solicitudes del curso activo para su gestión, ya sea por parte del administrador o del moderador.
obtenerSolicitudesPropias()  : array<string|int, mixed>
Vamos a retornar las solicitudes del usuario interesado en ver el estado de las propias presentadas.
subirArchivosSolicitud()  : array<string|int, mixed>
Procesa y guarda los archivos subidos en las rutas correspondientes.
eliminarArchivoFisico()  : mixed
Elimina físicamente un archivo del servidor.
manejarSubidaArchivo()  : array<string|int, mixed>|false
Procesa y guarda un archivo subido en el subdirectorio correspondiente.

Properties

Methods

__construct()

Constructor de la clase. Se instancian los modelos Solicitud y Curso.

public __construct() : mixed

cargarDatosSolicitud()

Carga los datos necesarios para mostrar el formulario de nueva solicitud.

public cargarDatosSolicitud() : array<string|int, mixed>|string

Verifica si existe un curso activo en la sesión. Si no hay curso activo, devuelve una cadena indicando dicho estado. En caso contrario, recupera el ID del curso activo y los motivos disponibles desde el modelo de solicitud.

Return values
array<string|int, mixed>|string
  • Devuelve un array asociativo con los datos necesarios para la vista 'formnuevasolicitud'

cargarGestionarSolicitud()

Carga los datos necesarios para mostrar la vista de gestión de una solicitud específica.

public cargarGestionarSolicitud() : array<string|int, mixed>

Obtiene los parámetros de la solicitud mediante GET, incluyendo el ID del usuario, la fecha de presentación y el número de solicitud. Luego recupera la información completa de la solicitud, incluyendo horas seleccionadas, motivos y archivos relacionados, clasificados por tipo.

Return values
array<string|int, mixed>
  • Retorna un array asociativo con toda la información.

cargarModificarSolicitud()

Carga los datos necesarios para mostrar el formulario de modificación de la que se desea modificar solicitud.

public cargarModificarSolicitud() : array<string|int, mixed>

Extrae el ID del usuario, la fecha de presentación y el número de solicitud desde el GET, recupera la solicitud correspondiente, las horas seleccionadas, los motivos disponibles y los archivos asociados, clasificando estos últimos por tipo.

Return values
array<string|int, mixed>
  • Retorna un array asociativo con otros array para cargar toda la información de la vista.

cargarVerSolicitud()

Carga los datos necesarios para mostrar una solicitud específica sin posibilidad de modificación.

public cargarVerSolicitud() : array<string|int, mixed>

Obtiene los parámetros necesarios desde la URL mediante GET: ID del usuario, fecha de presentación y número de solicitud. Recupera la solicitud correspondiente, las horas seleccionadas, los motivos disponibles y los archivos asociados, clasificando estos últimos por tipo (justificantes y materiales).

Return values
array<string|int, mixed>
  • Retorna un array asociativo con toda la información (vista, datos de solicitud, horas marcadas...).

crearSolicitud()

Procesa el formulario de creación de una nueva solicitud.

public crearSolicitud() : array<string|int, mixed>|string

Este método:

  • Valída la existencia de los campos necesarios y el curso activo.
  • Comprueba que las fechas estén dentro del curso y no sean anteriores a mañana.
  • Rechaza si hay solapamientos con solicitudes anteriores del mismo usuario.
  • Inserta la solicitud, las horas seleccionadas (si las hay) y los archivos adjuntos.
Return values
array<string|int, mixed>|string
  • Un array que devuelve la vista y el error en caso de algún problema o la vista de éxito si la solicitud se crea correctamente.

eliminarSolicitud()

Elimina una solicitud de la base de datos, retirando los archivos asociados del servidor durante el proceso.

public eliminarSolicitud() : string

Así evitamos la existencia de archivos que no estén relacionados a una solicitud.

Return values
string
  • Devuelve la vista 'avisoexito' si la eliminación fue realizada con éxito.

generarIdentificador()

Genera un identificador único para una solicitud basada en su fecha de presentación y número.

public generarIdentificador(string $fecha, int $num) : string

El identificador resultante tiene el siguiente formato: yyyymmdd_nn, donde:

  • yyyymmdd es la fecha de presentación sin guiones.
  • nn es el número de la solicitud con al menos dos dígitos (relleno con ceros a la izquierda si es necesario).

Este identificador es útil para mostrar solicitudes de forma clara y ordenada en las vistas de usuario.

Parameters
$fecha : string
  • Fecha de presentación de la solicitud (en formato reconocible por strtotime).
$num : int
  • Número de solicitud presentado ese día.
Return values
string
  • Identificador único con el formato yyyymmdd_nn.

generarIdentificadorParaAdministrador()

Genera un identificador único de solicitud para las vistas del administrador.

public generarIdentificadorParaAdministrador(int|string $idUsuario, string $fecha, int $num) : string

El identificador resultante tiene el formato: idUsuario_yyyymmdd_nn, donde:

  • idUsuario es el identificador del usuario que presentó la solicitud.
  • yyyymmdd es la fecha de presentación sin guiones.
  • nn es el número de solicitud de ese día, con al menos dos dígitos (relleno con ceros a la izquierda si es necesario).

Este identificador permite al administrador diferenciar solicitudes de distintos usuarios de forma precisa y ordenada en las interfaces de gestión.

Parameters
$idUsuario : int|string
  • ID del usuario que presentó la solicitud.
$fecha : string
  • Fecha de presentación de la solicitud (formato reconocible por strtotime).
$num : int
  • Número de la solicitud presentada en ese día por el usuario.
Return values
string
  • Identificador único con el formato idUsuario_yyyymmdd_nn.

generarNombreUnico()

Necesitamos generar nombres únicos para los archivos que se van a introducir con cada solicitud.

public generarNombreUnico(string $archivo) : string
  1. Extrae el nombre inicial.
  2. Extrae la extensión.
  3. Codificamos el nombre base por medio de un hash básico.
  4. Combinamos el nuevo nombre que hemos generado con la extensión.
Parameters
$archivo : string

Nombre original del archivo (por ejemplo, 'documento.pdf').

Return values
string

Nombre único generado con extensión (por ejemplo, '662fb190b...a.pdf').

gestionarEstado()

Gestiona la actualización del estado de una solicitud específica.

public gestionarEstado() : string

Recupera los parámetros necesarios desde un GET, incluyendo el ID del usuario, la fecha de presentación, el número de solicitud y el nuevo estado. Luego, el modelo realiza la actualización del estado de la solicitud.

Return values
string
  • Devuelve la cadena 'avisoexito' para indicar que la operación fue exitosa.

modificarSolicitud()

Procesa una solicitud (POST). Se modifica una solicitud previamente planteada.

public modificarSolicitud() : string

Este método realiza las siguientes acciones:

  1. Recoge los datos del formulario enviado por POST.
  2. Actualiza la solicitud en la base de datos.
  3. Elimina los archivos marcados por el usuario.
  4. Sube y registra nuevos archivos, si se proporcionan.

Requiere que existan en $_POST:

  • id_usuario
  • fecha_presentacion
  • num (número de solicitud)
  • motivo
  • descripcion
  • comentario
  • archivos_a_eliminar (opcional)
  • archivos_info (opcional)

Requiere que existan en $_FILES:

  • justificantes (opcional)
  • materiales (opcional)
Return values
string

Devuelve 'avisoexito' si la modificación se ha procesado correctamente o 'saludo' si no es una petición POST.

obtenerSolicitudesCurso()

Obtiene las solicitudes asociadas a un curso específico para su gestión por parte del administrador.

public obtenerSolicitudesCurso() : array<string|int, mixed>
  • Verifica que el usuario tenga una sesión activa y sea administrador. Si no es así, redirige al inicio.
  • Recupera el curso correspondiente al ID recibido por GET y todas las solicitudes asociadas a ese curso.
  • A cada solicitud se le añade un identificador único para su visualización por parte del administrador.
Return values
array<string|int, mixed>
  • Retorna un array asociativo con los datos para la carga de la vista del listado de solicitudes.

obtenerSolicitudesGestion()

Obtiene y prepara las solicitudes del curso activo para su gestión, ya sea por parte del administrador o del moderador.

public obtenerSolicitudesGestion() : array<string|int, mixed>

Este método realiza las siguientes acciones:

  • Verifica que exista una sesión activa y que el rol sea válido ('A' o 'M').
  • Si el usuario no tiene permiso, redirige al inicio.
  • Recupera los datos del curso activo desde la sesión.
  • Obtiene las solicitudes asociadas al curso.
  • Si el usuario es moderador, filtra las solicitudes excluyendo las suyas propias.
  • Genera un identificador único para cada solicitud.
Return values
array<string|int, mixed>

Array asociativo con los datos para cargar la vista 'cursoactual'.

obtenerSolicitudesPropias()

Vamos a retornar las solicitudes del usuario interesado en ver el estado de las propias presentadas.

public obtenerSolicitudesPropias() : array<string|int, mixed>

Lo hacemos a partir de los datos guardados en la variable de sesión: id -> El usuario interesado en ver sus solicitudes idCursoActivo -> El curso activo actualmente

Al usuario común solo se le mostrarán las solicitudes presentadas en el curso actual. En caso de que no haya uno activo, no se mostrará ninguna acción a realizar en la aplicación.

Return values
array<string|int, mixed>

Array asociativo con los datos para cargar la vista 'listarsolicitudes'.

subirArchivosSolicitud()

Procesa y guarda los archivos subidos en las rutas correspondientes.

public subirArchivosSolicitud(array<string|int, mixed> $archivos) : array<string|int, mixed>
Parameters
$archivos : array<string|int, mixed>
  • El array $_FILES con los campos 'justificantes' y/o 'materiales'.
Return values
array<string|int, mixed>

$datos - Un array con los nombres de los archivos subidos por cada tipo.

eliminarArchivoFisico()

Elimina físicamente un archivo del servidor.

private eliminarArchivoFisico(array<string|int, mixed> $archivo) : mixed

Se ejecuta en el momento en que se hace una modificación de una solicitud que requiere de la eliminación de un archivo.

Este método se utiliza durante la modificación de una solicitud cuando se requiere eliminar uno de los archivos previamente subidos por el usuario.

Parameters
$archivo : array<string|int, mixed>

Array asociativo que debe contener: 'nombre_generado' (el nuevo nombre del archivo), 'ruta_archivo' (subdirectorio dentro de src/subidas) y 'tipo_archivo' (la extensión del archivo)

manejarSubidaArchivo()

Procesa y guarda un archivo subido en el subdirectorio correspondiente.

private manejarSubidaArchivo(array<string|int, mixed> $archivo, string $subdirectorio) : array<string|int, mixed>|false
  • Crea el directorio si no existe.
  • Genera un nombre único para evitar la duplicidad de los archivos subidos, así no hay posible sobrescritura o confusión con los archivos.
  • Si la subida es exitosa, devuelve información relevante del archivo.
Parameters
$archivo : array<string|int, mixed>
  • Array con los datos del archivo subido (como en $_FILES).
$subdirectorio : string
  • Nombre del subdirectorio donde se guardará el archivo (por ejemplo, 'justificantes' o 'materiales').
Return values
array<string|int, mixed>|false
  • Array con información del archivo subido si tiene éxito, o false en caso de error.

        
On this page

Search results