El sistema Pensión a la Medida está construido sobre Laravel 7 y usa Eloquent ORM para mapear cada entidad del dominio a su tabla de base de datos correspondiente. Los modelos se encuentran en el directorioDocumentation 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.
app/ y siguen las convenciones de Eloquent, aunque varios de ellos declaran claves primarias y nombres de tabla personalizados. A continuación se documenta cada modelo, sus campos principales y los métodos especiales que expone.
Varios campos de tipo UUID (
uuid_habitacion, uuid_grupo_familiar) se generan con el paquete webpatser/laravel-uuid y no son los UUIDs nativos de MySQL. Deben tratarse como cadenas de texto de 36 caracteres en la base de datos (VARCHAR(36)).Alumnos
Modelo central del sistema. Representa a cada estudiante universitario registrado en la residencia. La clave primaria no sigue la convención de Eloquent (id) y debe declararse explícitamente.
| Propiedad | Valor |
|---|---|
| Clase | App\Alumnos |
| Tabla | alumnos |
| Clave primaria | numIdAlumno |
Campos fillable
Identificador único del alumno. Actúa como clave primaria personalizada.
Nombre de pila del alumno.
Apellidos del alumno.
Número de Identificación Fiscal (DNI/NIE/Pasaporte).
Tipo de documento de identidad. Permite discriminar entre DNI, NIE u otros documentos.
Dirección de correo electrónico del alumno.
Sexo del alumno. Valor libre (p. ej.
M, F).Indica si el alumno está activo en el sistema. Usado por el scope
scopeStatus.Marca al alumno como dado de baja definitivamente.
Indica si el alumno está matriculado actualmente.
Indica si el alumno proviene de la plataforma Emagister.
Fecha de nacimiento del alumno.
Fecha en que el alumno fue dado de alta en el sistema.
Fecha de alta en el centro de estudios.
Código del expediente académico del alumno.
Dirección postal del alumno.
Localidad de residencia del alumno.
Provincia de residencia.
Código postal del domicilio del alumno.
País de residencia.
ID del país de residencia (FK a tabla de países).
ID de la provincia de residencia (FK a tabla de provincias).
País de nacimiento del alumno.
ID del país de nacimiento.
Provincia de nacimiento.
ID de la provincia de nacimiento.
Teléfono de contacto principal.
Teléfono de contacto secundario.
Número de teléfono móvil.
Ruta relativa a la fotografía del alumno almacenada en el servidor.
Número de afiliación a la Seguridad Social.
Código del nivel de estudios cursado.
Identificador del origen o canal de captación del alumno.
Ruta al fichero de notas académicas del alumno.
Scopes
scopeStatus(Builder $query, mixed $status): Builder
Filtra la consulta por el valor del campo blnVigente. Si $status es falsy, el scope no aplica ningún filtro y devuelve todos los registros.
GruposFamiliares
Agrupa la información familiar de un alumno: padre, madre e hijos dependientes. Los hijos se almacenan como una lista de IDs separados por pipes (|) en un único campo de texto.
| Propiedad | Valor |
|---|---|
| Clase | App\GruposFamiliares |
| Tabla | grupos_familiares |
Campos
Identificador único del grupo familiar. Generado con
webpatser/laravel-uuid.numIdAlumno del alumno que ejerce el rol de padre. FK a la tabla alumnos.numIdAlumno del alumno que ejerce el rol de madre. FK a la tabla alumnos.Lista de IDs de hijos separados por el carácter
|. Por ejemplo: 1|4|7. FK implícita a la tabla hijos.Métodos protegidos
Guardar(Request $request): bool
Crea un nuevo registro en la tabla hijos y añade su ID al campo hijos del grupo familiar mediante concatenación con |. Devuelve true si la operación fue exitosa.
Habitaciones
Representa cada unidad habitacional de la residencia. El campomobiliario almacena los IDs de los elementos de mobiliario asignados como una lista separada por pipes, de forma análoga a GruposFamiliares.hijos.
| Propiedad | Valor |
|---|---|
| Clase | App\Habitaciones |
| Tabla | habitaciones |
Campos fillable
Número o código identificador de la habitación (p. ej.
101, 2B).Tipo de habitación: individual, doble, suite, etc.
Número máximo de ocupantes permitidos.
Planta del edificio donde se encuentra la habitación.
Lista de IDs de
Mobiliarios separados por |. Referencia qué mobiliario está asignado a la habitación.Texto libre para anotaciones o incidencias sobre la habitación.
Hospedajes
Registra los periodos de estancia de un alumno en la residencia. Vincula un alumno (a través deuuid_habitacion en el modelo Alumnos) con una habitación y un rango de fechas.
| Propiedad | Valor |
|---|---|
| Clase | App\Hospedajes |
| Tabla | hospedajes |
Campos fillable
Número de habitación asignada al hospedaje. Referencia
Habitaciones.num_habitacion.Fecha de inicio del periodo de hospedaje.
Fecha de fin del periodo de hospedaje. Puede ser
null si el alumno sigue en la residencia.Notas adicionales sobre el hospedaje (estado de la habitación al entrar/salir, incidencias, etc.).
La relación entre un alumno y sus hospedajes se establece a través del campo
uuid_habitacion del modelo Alumnos, que almacena el UUID del registro de hospedaje activo generado con webpatser/laravel-uuid.Hijos
Representa a los hijos a cargo de los tutores registrados en unGrupoFamiliar. El modelo no declara campos $fillable explícitos; la asignación de atributos se gestiona directamente en GruposFamiliares::Guardar().
| Propiedad | Valor |
|---|---|
| Clase | App\Hijos |
| Tabla | hijos |
Campos
Nombre o nombres del hijo.
Apellidos del hijo.
Documento de identidad del hijo.
Fecha de nacimiento del hijo.
Sexo del hijo.
Mobiliarios
Catálogo de elementos de mobiliario disponibles para asignar a las habitaciones. Los IDs de estos registros se almacenan enHabitaciones.mobiliario como lista separada por pipes.
| Propiedad | Valor |
|---|---|
| Clase | App\Mobiliarios |
| Tabla | mobiliarios |
Campos fillable
Categoría del mobiliario (p. ej.
cama, escritorio, armario).Descripción detallada del elemento: dimensiones, color, marca, etc.
Estado actual del elemento:
activo, en_reparacion, dado_de_baja, etc.Trabajos
Catálogo de tipos de trabajo o servicio que pueden imputarse a un alumno. Actúa como tabla maestra paraTrabajos_realizados. El modelo no declara $fillable propio; toda la configuración es estándar de Eloquent.
| Propiedad | Valor |
|---|---|
| Clase | App\Trabajos |
| Tabla | trabajos |
Trabajos_realizados
Registro de trabajos o servicios ya realizados e imputados a un alumno concreto. Relaciona el catálogoTrabajos con la tabla Alumnos y añade metadatos de fecha y observaciones.
| Propiedad | Valor |
|---|---|
| Clase | App\Trabajos_realizados |
| Tabla | trabajos_realizados |
Campos fillable
FK a
trabajos.id. Indica el tipo de trabajo realizado.FK a
alumnos.numIdAlumno. Alumno al que se imputa el trabajo.Fecha en que se realizó el trabajo.
Notas adicionales sobre la ejecución del trabajo.
User / Usuario
El sistema dispone de dos modelos relacionados con la autenticación y la gestión de usuarios del panel de administración.User
Modelo de autenticación estándar de Laravel, extendido con el traitHasRoles de Spatie Laravel Permission para habilitar el control de acceso basado en roles.
| Propiedad | Valor |
|---|---|
| Clase | App\User |
| Tabla | users |
| Extiende | Illuminate\Foundation\Auth\User (Authenticatable) |
| Traits | Notifiable, HasRoles |
Nombre completo del usuario del panel.
Correo electrónico único. Usado como credencial de acceso.
Contraseña hasheada con
bcrypt. Oculta en serialización ($hidden).Token de sesión persistente. Oculto en serialización.
Fecha y hora de verificación del correo. Cast automático a
datetime.Usuario
Modelo complementario que apunta a la misma tablausers pero expone el método protegido Guardar() para operaciones de creación y edición de usuarios desde las vistas de administración. También usa el trait HasRoles y declara $guard_name = 'web'.
| Propiedad | Valor |
|---|---|
| Clase | App\Usuario |
| Tabla | users |
| Guard | web |
| Traits | HasRoles |
Guardar(Request $request): bool
Gestiona tanto la creación como la actualización de un usuario:
- Creación (cuando
$request->idUseresnull): instanciaApp\User, asigna contraseña por defecto12345678y llama aassignRole(). - Actualización: busca el usuario por email, elimina el rol actual con
removeRole()y asigna el nuevo conassignRole().
name, telefonoMovil, telefonoFijo, direccion, cp, pais_id, facebook, instagram, twitter y linkedin.
Empresa
Almacena los datos fiscales y de contacto de la empresa propietaria de la pensión. El modelo expone el método protegidoGuardar() para actualizar el registro desde el formulario de información de empresa (módulo actualmente comentado en routes/web.php).
| Propiedad | Valor |
|---|---|
| Clase | App\Empresa |
| Tabla | empresa |
Campos
El modelo no declara$fillable; los atributos se asignan directamente dentro del método Guardar().
Razón social o nombre fiscal de la empresa.
Nombre comercial o marca con el que opera la empresa.
Registro Fiscal / NIF de la empresa.
Estado o comunidad autónoma donde está domiciliada la empresa.
Dirección postal de la empresa.
Provincia del domicilio fiscal.
Código postal.
Teléfono fijo de contacto.
Teléfono móvil de contacto.
Número de fax.
Correo electrónico de contacto de la empresa.
URL del sitio web de la empresa.
URL del perfil de LinkedIn de la empresa.
Cuenta o URL de Twitter/X de la empresa.
Página o URL de Facebook de la empresa.
Perfil o URL de Instagram de la empresa.
Canal o URL de YouTube de la empresa.
Métodos protegidos
Guardar(Request $request): bool
Localiza el registro de empresa por $request->idEmpresa con Empresa::find() y sobrescribe todos los campos de contacto y redes sociales. Devuelve true si el guardado fue exitoso.
Alumnos_tmp
Tabla de importación temporal que espeja la estructura dealumnos. Se utiliza durante el proceso de carga masiva de nuevos alumnos desde fichero (rutas subir-fichero-nuevos-alumnos y delete-fichero-importar-alumno). Comparte exactamente el mismo $fillable que Alumnos.
| Propiedad | Valor |
|---|---|
| Clase | App\Alumnos_tmp |
| Tabla | alumnos_tmp |
Alumnos_tmp es una tabla de staging. Los registros se validan aquí antes de migrarse definitivamente a la tabla alumnos. No debe usarse como fuente de verdad; consulta el modelo Alumnos para la referencia de campos.Roles
Modelo ligero que apunta a la tablaroles gestionada por Spatie Laravel Permission. Se usa exclusivamente en las vistas de administración de roles para listar y mostrar los roles disponibles, sin extender la clase Role de Spatie.
| Propiedad | Valor |
|---|---|
| Clase | App\Roles |
| Tabla | roles |
App\Roles es un wrapper de solo lectura sobre la tabla de Spatie. Para crear roles, asignar permisos o revocarlos programáticamente, usa directamente Spatie\Permission\Models\Role. Consulta la página de Permisos para más detalles.