Skip to main content

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.

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 directorio 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.
PropiedadValor
ClaseApp\Alumnos
Tablaalumnos
Clave primarianumIdAlumno

Campos fillable

numIdAlumno
string
required
Identificador único del alumno. Actúa como clave primaria personalizada.
strNombre
string
required
Nombre de pila del alumno.
strApellidos
string
required
Apellidos del alumno.
strNif
string
Número de Identificación Fiscal (DNI/NIE/Pasaporte).
numTipoNif
integer
Tipo de documento de identidad. Permite discriminar entre DNI, NIE u otros documentos.
strEMail
string
Dirección de correo electrónico del alumno.
strSexo
string
Sexo del alumno. Valor libre (p. ej. M, F).
blnVigente
boolean
Indica si el alumno está activo en el sistema. Usado por el scope scopeStatus.
blnBaja
boolean
Marca al alumno como dado de baja definitivamente.
blnMatriculado
boolean
Indica si el alumno está matriculado actualmente.
blnEmagister
boolean
Indica si el alumno proviene de la plataforma Emagister.
fecFechaNacimiento
date
Fecha de nacimiento del alumno.
fecFechaAlta
date
Fecha en que el alumno fue dado de alta en el sistema.
fecFechaAltaCentro
date
Fecha de alta en el centro de estudios.
strCodigoExpediente
string
Código del expediente académico del alumno.
strDomicilio
string
Dirección postal del alumno.
strPoblacion
string
Localidad de residencia del alumno.
strProvincia
string
Provincia de residencia.
strCodigoPostal
string
Código postal del domicilio del alumno.
strPais
string
País de residencia.
numIdPais
integer
ID del país de residencia (FK a tabla de países).
numIdProvincia
integer
ID de la provincia de residencia (FK a tabla de provincias).
strPaisNacimiento
string
País de nacimiento del alumno.
numIdPaisNacimiento
integer
ID del país de nacimiento.
strProvinciaNacimiento
string
Provincia de nacimiento.
numIdProvinciaNacimiento
integer
ID de la provincia de nacimiento.
strTelefono1
string
Teléfono de contacto principal.
strTelefono2
string
Teléfono de contacto secundario.
strTelefonoMovil
string
Número de teléfono móvil.
strFoto
string
Ruta relativa a la fotografía del alumno almacenada en el servidor.
strNumeroSeguridadSocial
string
Número de afiliación a la Seguridad Social.
numNivelEstudios
integer
Código del nivel de estudios cursado.
numIdOrigen
integer
Identificador del origen o canal de captación del alumno.
strRutaNotas
string
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.
// Obtener solo alumnos activos
$activos = Alumnos::status(1)->get();

// Obtener todos (sin filtrar)
$todos = Alumnos::status(null)->get();

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.
PropiedadValor
ClaseApp\GruposFamiliares
Tablagrupos_familiares

Campos

uuid
string
required
Identificador único del grupo familiar. Generado con webpatser/laravel-uuid.
padre
string
numIdAlumno del alumno que ejerce el rol de padre. FK a la tabla alumnos.
madre
string
numIdAlumno del alumno que ejerce el rol de madre. FK a la tabla alumnos.
hijos
string
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.
// Llamada interna desde el controlador (a través de herencia o instancia):
$grupo = new GruposFamiliares();
$exito = $grupo->Guardar($request);

Habitaciones

Representa cada unidad habitacional de la residencia. El campo mobiliario almacena los IDs de los elementos de mobiliario asignados como una lista separada por pipes, de forma análoga a GruposFamiliares.hijos.
PropiedadValor
ClaseApp\Habitaciones
Tablahabitaciones

Campos fillable

num_habitacion
string
required
Número o código identificador de la habitación (p. ej. 101, 2B).
tipo
string
Tipo de habitación: individual, doble, suite, etc.
capacidad
integer
Número máximo de ocupantes permitidos.
piso
integer
Planta del edificio donde se encuentra la habitación.
mobiliario
string
Lista de IDs de Mobiliarios separados por |. Referencia qué mobiliario está asignado a la habitación.
observaciones
string
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 de uuid_habitacion en el modelo Alumnos) con una habitación y un rango de fechas.
PropiedadValor
ClaseApp\Hospedajes
Tablahospedajes

Campos fillable

num_habitacion
string
required
Número de habitación asignada al hospedaje. Referencia Habitaciones.num_habitacion.
entrada
date
required
Fecha de inicio del periodo de hospedaje.
salida
date
Fecha de fin del periodo de hospedaje. Puede ser null si el alumno sigue en la residencia.
observaciones
string
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 un GrupoFamiliar. El modelo no declara campos $fillable explícitos; la asignación de atributos se gestiona directamente en GruposFamiliares::Guardar().
PropiedadValor
ClaseApp\Hijos
Tablahijos

Campos

nombres
string
required
Nombre o nombres del hijo.
apellidos
string
required
Apellidos del hijo.
dni
string
Documento de identidad del hijo.
fecha_nacimiento
date
Fecha de nacimiento del hijo.
sexo
string
Sexo del hijo.

Mobiliarios

Catálogo de elementos de mobiliario disponibles para asignar a las habitaciones. Los IDs de estos registros se almacenan en Habitaciones.mobiliario como lista separada por pipes.
PropiedadValor
ClaseApp\Mobiliarios
Tablamobiliarios

Campos fillable

tipo
string
required
Categoría del mobiliario (p. ej. cama, escritorio, armario).
descripcion
string
Descripción detallada del elemento: dimensiones, color, marca, etc.
status
string
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 para Trabajos_realizados. El modelo no declara $fillable propio; toda la configuración es estándar de Eloquent.
PropiedadValor
ClaseApp\Trabajos
Tablatrabajos

Trabajos_realizados

Registro de trabajos o servicios ya realizados e imputados a un alumno concreto. Relaciona el catálogo Trabajos con la tabla Alumnos y añade metadatos de fecha y observaciones.
PropiedadValor
ClaseApp\Trabajos_realizados
Tablatrabajos_realizados

Campos fillable

id_trabajo
integer
required
FK a trabajos.id. Indica el tipo de trabajo realizado.
id_alumno
string
required
FK a alumnos.numIdAlumno. Alumno al que se imputa el trabajo.
fecha
date
required
Fecha en que se realizó el trabajo.
observaciones
string
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 trait HasRoles de Spatie Laravel Permission para habilitar el control de acceso basado en roles.
PropiedadValor
ClaseApp\User
Tablausers
ExtiendeIlluminate\Foundation\Auth\User (Authenticatable)
TraitsNotifiable, HasRoles
name
string
required
Nombre completo del usuario del panel.
email
string
required
Correo electrónico único. Usado como credencial de acceso.
password
string
required
Contraseña hasheada con bcrypt. Oculta en serialización ($hidden).
remember_token
string
Token de sesión persistente. Oculto en serialización.
email_verified_at
datetime
Fecha y hora de verificación del correo. Cast automático a datetime.

Usuario

Modelo complementario que apunta a la misma tabla users 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'.
PropiedadValor
ClaseApp\Usuario
Tablausers
Guardweb
TraitsHasRoles
Guardar(Request $request): bool Gestiona tanto la creación como la actualización de un usuario:
  • Creación (cuando $request->idUser es null): instancia App\User, asigna contraseña por defecto 12345678 y llama a assignRole().
  • Actualización: busca el usuario por email, elimina el rol actual con removeRole() y asigna el nuevo con assignRole().
En ambos casos actualiza los campos de perfil extendido: name, telefonoMovil, telefonoFijo, direccion, cp, pais_id, facebook, instagram, twitter y linkedin.
En el código fuente de Guardar() los campos telefonoMovil y telefonoFijo están intercambiados: el valor de $request->telefonoFijo se asigna a $usuario->telefonoMovil y viceversa. Este es un bug conocido en la implementación actual.
// Ejemplo de uso en el controlador de mantenimiento de usuarios:
$usuario = new Usuario();
$guardado = $usuario->Guardar($request);

if ($guardado) {
    return response()->json(['success' => true]);
}
La contraseña por defecto al crear un usuario es 12345678. Se recomienda forzar el cambio de contraseña en el primer inicio de sesión antes de desplegar en producción.

Empresa

Almacena los datos fiscales y de contacto de la empresa propietaria de la pensión. El modelo expone el método protegido Guardar() para actualizar el registro desde el formulario de información de empresa (módulo actualmente comentado en routes/web.php).
PropiedadValor
ClaseApp\Empresa
Tablaempresa

Campos

El modelo no declara $fillable; los atributos se asignan directamente dentro del método Guardar().
nombreFiscal
string
required
Razón social o nombre fiscal de la empresa.
nombreComercial
string
Nombre comercial o marca con el que opera la empresa.
rfc
string
Registro Fiscal / NIF de la empresa.
estado
string
Estado o comunidad autónoma donde está domiciliada la empresa.
direccion
string
Dirección postal de la empresa.
provincia
string
Provincia del domicilio fiscal.
cp
string
Código postal.
telefonoFijo
string
Teléfono fijo de contacto.
telefonoMovil
string
Teléfono móvil de contacto.
fax
string
Número de fax.
email
string
Correo electrónico de contacto de la empresa.
web
string
URL del sitio web de la empresa.
linkedin
string
URL del perfil de LinkedIn de la empresa.
twitter
string
Cuenta o URL de Twitter/X de la empresa.
facebook
string
Página o URL de Facebook de la empresa.
instagram
string
Perfil o URL de Instagram de la empresa.
youtube
string
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.
$empresa = new Empresa();
$guardado = $empresa->Guardar($request);

Alumnos_tmp

Tabla de importación temporal que espeja la estructura de alumnos. 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.
PropiedadValor
ClaseApp\Alumnos_tmp
Tablaalumnos_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 tabla roles 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.
PropiedadValor
ClaseApp\Roles
Tablaroles
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.

Build docs developers (and LLMs) love