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 módulo de Residencia centraliza la administración física de la residencia universitaria en Pensión a la Medida. Desde aquí se gestiona el inventario completo de habitaciones (número, tipo, capacidad, piso y mobiliario asignado), se consultan en tiempo real los alumnos actualmente hospedados con sus fechas de entrada y salida, y se mantiene el catálogo de mobiliario disponible para asignar a cada habitación.

Acceso al módulo

El acceso a la vista principal requiere que el usuario autenticado tenga el permiso gestion_residencia.
MétodoRutaControlador → Método
GET/gestion-residenciaResidenciaController@gestionResidencia
Al cargar la vista, el controlador inyecta la colección completa de mobiliarios (Mobiliarios::get()) para poblar el selector de mobiliario del formulario de habitaciones.

Habitaciones

Listar habitaciones

POST /listar-habitaciones
Devuelve la colección completa de la tabla habitaciones en formato jQuery DataTables. Cada fila incluye una columna action con los botones para editar y eliminar la habitación, identificados con data-accion="editar-habitacion" y data-accion="eliminar-habitacion" respectivamente.

Obtener datos de una habitación

POST /editar-habitacion
Content-Type: application/json
Recupera el registro completo de una habitación para pre-cargar el formulario de edición.
id_hab
integer
required
ID de la habitación en la tabla habitaciones.
Respuesta exitosa:
{
  "success": true,
  "message": "Datos de la habitación obtenidos correctamente.",
  "data": {
    "id": 5,
    "num_habitacion": "101",
    "tipo": "Individual",
    "capacidad": 1,
    "piso": 1,
    "mobiliario": "2|4|7",
    "observaciones": "Habitación reformada en 2023."
  }
}

Crear o actualizar una habitación

POST /actualizar-habitaciones
Content-Type: application/json
Usa Habitaciones::updateOrCreate(['id' => $request->id_hab], [...]). Si id_hab no corresponde a ningún registro existente, se crea una nueva habitación.
id_hab
integer | null
ID de la habitación a actualizar. Enviar null o un ID inexistente para crear una nueva habitación.
num_hab
string
required
Número o código identificador de la habitación (p. ej. "101", "B-02"). Se almacena en habitaciones.num_habitacion.
tipo_hab
string
required
Tipo de habitación (p. ej. "Individual", "Doble", "Suite"). Se almacena en habitaciones.tipo.
cap_hab
integer
required
Capacidad máxima de personas de la habitación. Se almacena en habitaciones.capacidad.
pis_hab
integer
required
Número de piso en el que se encuentra la habitación. Se almacena en habitaciones.piso.
mobiliario_hab
array
required
Array de IDs de mobiliarios seleccionados (del catálogo mobiliarios). Los IDs se unen con implode('|', $request->mobiliario_hab) y el resultado se almacena en habitaciones.mobiliario.
obs_hab
string
Observaciones o notas sobre la habitación. Se almacena en habitaciones.observaciones.
El modelo Habitaciones declara los siguientes campos fillable:
protected $fillable = [
    'num_habitacion',
    'tipo',
    'capacidad',
    'piso',
    'mobiliario',
    'observaciones',
];

Eliminar una habitación

POST /eliminar-habitacion
Content-Type: application/json
id_hab
integer
required
ID de la habitación a eliminar. Usa Habitaciones::find($request->id_hab)->delete().
Respuesta exitosa:
{
  "success": true,
  "message": "La habitación fue eliminada correctamente."
}

Huéspedes activos

POST /listar-huespedes
Devuelve en formato DataTables el listado de todos los alumnos que tienen un hospedaje activo, es decir, cuyo campo uuid_habitacion en la tabla alumnos no es NULL. La consulta realiza un JOIN entre alumnos y hospedajes usando hospedajes.uuid = alumnos.uuid_habitacion:
Alumnos::select('strNombre', 'strApellidos', 'num_habitacion', 'desde', 'hasta', 'uuid_habitacion')
    ->join('hospedajes', 'hospedajes.uuid', 'alumnos.uuid_habitacion')
    ->whereNotNull('uuid_habitacion')
    ->get();

Columnas devueltas

ColumnaOrigenDescripción
strNombrealumnosNombre(s) del alumno huésped
strApellidosalumnosApellidos del alumno huésped
num_habitacionhospedajesNúmero de la habitación asignada
desdehospedajesFecha de inicio del hospedaje
hastahospedajesFecha de fin del hospedaje
detalle (computed)Tarjeta HTML con el mobiliario de la habitación (ver DetalleHabitacion)
El método DetalleHabitacion($num_habitacion) localiza la habitación por número, expande la cadena mobiliario (separada por |), resuelve cada ID en el catálogo Mobiliarios y devuelve una lista <ul class="list-group"> con la descripción de cada pieza de mobiliario.
El mobiliario se almacena como una lista delimitada por | de IDs en la columna habitaciones.mobiliario (p. ej. "2|4|7"). El método DetalleHabitacion resuelve estos IDs consultando la tabla mobiliarios en tiempo de renderizado para obtener la descripción legible de cada elemento. Esto significa que si se elimina un registro de mobiliario del catálogo, las habitaciones que lo referencien mostrarán un elemento vacío hasta que se actualice su configuración.

Mobiliario

El catálogo de mobiliario define los elementos disponibles para asignar a las habitaciones. Cada pieza tiene tipo, descripción y estado.

Listar mobiliarios

POST /listar-mobiliarios
Devuelve la colección completa de la tabla mobiliarios en formato DataTables. Cada fila incluye botones de acción para editar (data-accion="editar-mobiliario") y eliminar (data-accion="eliminar-mobiliario").

Obtener datos de un mobiliario

POST /editar-mobiliario
Content-Type: application/json
id_mobiliario
integer
required
ID del mobiliario a consultar. Usa Mobiliarios::find($request->id_mobiliario).
Respuesta exitosa:
{
  "success": true,
  "message": "Mobiliarios obtenidos correctamente.",
  "data": {
    "id": 3,
    "tipo": "Dormitorio",
    "descripcion": "Cama individual con somier",
    "status": 1
  }
}

Crear o actualizar un mobiliario

POST /actualizar-mobiliarios
Content-Type: application/json
Usa Mobiliarios::updateOrCreate(['id' => $request->id_mobiliario], [...]). Si el ID no existe, se crea un nuevo registro.
id_mobiliario
integer | null
ID del mobiliario a actualizar. Enviar null o un ID inexistente para crear un nuevo registro.
tipo_mobiliario
string
required
Categoría o tipo del mobiliario (p. ej. "Dormitorio", "Baño", "Estudio"). Se almacena en mobiliarios.tipo.
descripcion_mobiliario
string
required
Descripción detallada del elemento de mobiliario. Se almacena en mobiliarios.descripcion.
status_mobiliario
integer
required
Estado del mobiliario. 1 = activo / disponible, 0 = inactivo / fuera de servicio. Se almacena en mobiliarios.status.
Respuesta exitosa (actualización):
{
  "success": true,
  "message": "Datos del mobiliario actualizaron correctamente."
}
Respuesta exitosa (creación):
{
  "success": true,
  "message": "Mobiliario creado correctamente."
}

Eliminar un mobiliario

POST /eliminar-mobiliario
Content-Type: application/json
id_mobiliario
integer
required
ID del mobiliario a eliminar. Usa Mobiliarios::find($request->id_mobiliario)->delete().
Respuesta exitosa:
{
  "success": true,
  "message": "El mobiliario fue eliminado correctamente."
}

Build docs developers (and LLMs) love