El módulo de Estudiantes es el núcleo del sistema Pensión a la Medida. Concentra el padrón completo de alumnos de la residencia universitaria, permitiendo importar registros masivamente desde ficheros Excel, consultar la ficha personal de cada alumno (datos de contacto, domicilio, expediente académico y hospedaje activo), imputar trabajos realizados a cada alumno y asignar o actualizar su habitación en la residencia.Documentation Index
Fetch the complete documentation index at: https://mintlify.com/amarcano568/pensionalamedida/llms.txt
Use this file to discover all available pages before exploring further.
Acceso al módulo
El acceso a la vista principal de gestión de estudiantes requiere que el usuario autenticado tenga el permisogestion_alumnos, gestionado mediante el middleware de permisos de Laravel.
| Método | Ruta | Controlador → Método |
|---|---|---|
GET | /gestionar-estudiantes | AlumnosController@gestionarEstudiantes |
Trabajos::get()) y el listado de habitaciones (Habitaciones::get()) para poblar los selectores del formulario.
Importar alumnos desde Excel
La importación masiva se compone de dos pasos consecutivos realizados desde el front-end.Paso 1 — Subir el fichero
Fichero Excel (
.xlsx / .xls) con los datos de los alumnos. La primera fila debe contener las cabeceras con los nombres de columna exactos del modelo Alumnos (p. ej. numIdAlumno, strNombre, strApellidos, etc.).- El fichero se persiste en el disco local de Laravel mediante
Storage::disk('local')->put(). - La tabla temporal
alumnos_tmpse trunca completamente. - Se ejecuta la importación con
Excel::import(new AlumnosImport, $nombre). La claseAlumnosImportimplementaToModel,WithHeadingRowyWithValidation, validando que las tres primeras columnas seannumIdAlumno,strNombreystrApellidosen ese orden. - Por cada registro de
alumnos_tmpse llama aAlumnos::firstOrCreate(['numIdAlumno' => …], $data), garantizando que un alumno ya existente no sea sobreescrito y que los nuevos sean insertados.
alumnos son:
Paso 2 — Eliminar el fichero temporal
Una vez completada la importación, el cliente debe solicitar la eliminación del fichero del servidor:Nombre original del fichero tal como fue almacenado en el disco local (p. ej.
alumnos_2024.xlsx).El fichero se borra usando
Storage::delete($archivo) únicamente si existe. Si el archivo no se encuentra en disco, la respuesta devuelve success: false. Es importante realizar este segundo paso para evitar que ficheros con datos sensibles queden almacenados en el servidor.Listado de estudiantes
yajra/laravel-datatables. Acepta un parámetro de filtro opcional para acotar los resultados por estado de vigencia.
Valor de filtro aplicado al scope
Status del modelo Alumnos. Cuando se proporciona, la consulta añade WHERE alumnos.blnVigente = :filtro. Si se omite o es nulo, se devuelven todos los alumnos sin importar su estado.Columnas devueltas
| Columna | Descripción |
|---|---|
numIdAlumno | Identificador numérico único del alumno (clave primaria) |
strNombre | Nombre(s) del alumno |
strApellidos | Apellidos del alumno |
strTelefono1 | Teléfono principal de contacto |
strEMail | Dirección de correo electrónico |
strCodigoExpediente | Código de expediente académico |
blnVigente | Estado de vigencia (1 = activo, 0 = inactivo) |
uuid_habitacion | UUID del registro de hospedaje asignado en la tabla hospedajes |
detalle (computed) | HTML de la tarjeta de detalle del alumno (véase sección siguiente) |
action (computed) | Botones de acción: imputar trabajo y asignar habitación |
setRowId('numIdAlumno') y un índice de fila adicional mediante addIndexColumn().
Detalle del alumno
Cada fila del listado incluye una columnadetalle que renderiza una tarjeta tipo popover construida por el método detalleAlumno(). Esta tarjeta contiene:
- Nombre completo y género (con icono de hombre/mujer según
strSexo). - NIF (
strNif), correo (strEMail), teléfonos (strTelefono1,strTelefono2). - Fecha de nacimiento y edad calculada en tiempo real con Carbon.
- Código de expediente y fecha de alta (
fecFechaAlta). - Residencia en la facultad: si el alumno tiene un
uuid_habitacionasignado, se muestra el número de habitación, la fecha de entrada y la fecha de salida formateadas (d-m-Y); en caso contrario, se indica “No tiene hospedaje en la universidad”. - Dirección: domicilio, país, provincia y población.
| Botón | Acción |
|---|---|
| Ir al expediente académico | Enlace al expediente del alumno |
| Ver grupo familiar | Abre el grupo familiar vinculado mediante uuid_grupo_familiar |
| Imputar trabajo realizado | Abre el formulario de imputación de trabajo para ese alumno |
Consultar grupo familiar de un alumno
uuid_grupo_familiar almacenado en su registro. Internamente delega en GruposFamiliaresController::drawGroupFamily() para construir la tarjeta HTML del grupo (padre, madre e hijos).
UUID del grupo familiar (
uuid_grupo_familiar del alumno) que se desea consultar. Se usa para localizar el registro en grupos_familiares mediante GruposFamiliares::where('uuid', $request->uuid)->first().data contiene el HTML de la tarjeta del grupo familiar lista para inyectar en el DOM.
Imputar trabajo realizado
Guardar un trabajo imputado
trabajos_realizados.
Identificador del tipo de trabajo del catálogo
trabajos (id_trabajo en BD).Fecha en la que se realizó el trabajo (formato
YYYY-MM-DD). Se almacena en el campo fecha.numIdAlumno del alumno al que se le imputa el trabajo. Se almacena en el campo id_alumno.Notas u observaciones adicionales sobre el trabajo realizado. Se almacena en el campo
observaciones.Listar trabajos realizados de un alumno
numIdAlumno del alumno cuyos trabajos se desean consultar.trabajo (nombre del trabajo), fecha, observaciones e id, junto con un botón de acción para eliminar cada entrada.
Eliminar un trabajo imputado
ID del registro en
trabajos_realizados que se desea eliminar.Asignar hospedaje
Crear o actualizar un hospedaje
- Si
uuid_habitacionesnull, se genera un nuevo UUID conWebpatser\Uuid\Uuid::generate(), se crea un registro enhospedajesy se actualiza el campouuid_habitaciondel alumno en la tablaalumnos. - Si
uuid_habitaciontiene un valor, se busca el registro existente enhospedajespor ese UUID y se actualizan sus campos.
UUID del hospedaje existente. Enviar
null para crear un nuevo registro de hospedaje.Número o identificador de la habitación asignada. Se almacena en
hospedajes.num_habitacion.Fecha de inicio del hospedaje. Se almacena en
hospedajes.desde.Fecha de fin del hospedaje. Se almacena en
hospedajes.hasta.Observaciones sobre la entrega o estado de la habitación. Se almacena en
hospedajes.observaciones.numIdAlumno del alumno al que se le asigna el hospedaje. Requerido únicamente cuando se crea un hospedaje nuevo (uuid_habitacion = null).Consultar el hospedaje de un alumno
UUID del hospedaje (
uuid_habitacion del alumno) a consultar.Hospedajes completo si existe, o success: false si el alumno no tiene hospedaje asignado.