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 Grupos Familiares permite modelar la unidad familiar de los alumnos residentes en Pensión a la Medida. Cada grupo vincula a dos alumnos del padrón como padre y madre, y acumula un número variable de hijos menores registrados en la tabla hijos. Todo grupo queda identificado de forma única mediante un UUID, que también se propaga a los registros de los alumnos padres para permitir la consulta rápida desde otras partes del sistema.

Acceso al módulo

El acceso a la vista principal requiere que el usuario autenticado tenga el permiso gestion_grupos_familiares.
MétodoRutaControlador → Método
GET/gestionar-grupos-familiaresGruposFamiliaresController@gestionarGrupoFamiliar
Al cargar la vista, el controlador inyecta dos colecciones de alumnos vigentes (blnVigente = 1) separadas por sexo:
  • padres — alumnos con strSexo = 'H'
  • madres — alumnos con strSexo = 'M'
Estas colecciones pueblan los selectores del formulario de creación/edición de grupos.

Listar grupos familiares

POST /listar-grupos-familiares
Devuelve un fragmento HTML con la representación visual de todos los grupos familiares registrados en la tabla grupos_familiares. La respuesta no utiliza DataTables; en su lugar el servidor genera directamente las tarjetas HTML mediante GruposFamiliaresController::drawGroupFamily(), agrupadas dentro de un <div class="row">. Cada tarjeta muestra una tabla con el nombre completo del padre y la madre (resueltos desde alumnos), y una fila por cada hijo del grupo (nombre, fecha de nacimiento y edad calculada con Carbon). Cada tarjeta incluye iconos para editar y eliminar el grupo, con el data-uuid del grupo en el atributo correspondiente. Respuesta exitosa:
{
  "success": true,
  "message": "Se genero el listado de grupos",
  "data": "<div class=\"row\"><div class=\"col-sm-4\">...</div></div>"
}

Estructura de un grupo familiar

Cada registro de la tabla grupos_familiares tiene la siguiente estructura lógica:
CampoTipoDescripción
uuidstringIdentificador único universal del grupo. Generado con Webpatser\Uuid\Uuid::generate() al crear.
padreintegerFK hacia alumnos.numIdAlumno. El alumno referenciado debe tener strSexo = 'H'.
madreintegerFK hacia alumnos.numIdAlumno. El alumno referenciado debe tener strSexo = 'M'.
hijosstringLista de IDs de registros hijos separados por el carácter | (p. ej. 1|3|7). Vacío si no hay hijos.
Los hijos no se almacenan directamente en el grupo; residen en su propia tabla hijos y se referencian a través del campo hijos con IDs separados por |. El método hijos() del controlador expande esta cadena, resuelve cada ID y construye la representación visual del hijo (nombre completo, fecha de nacimiento y edad calculada con Carbon).

Crear un grupo familiar

POST /guardar-grupo-familiar
Content-Type: application/json
Crea un nuevo grupo o actualiza uno existente según la presencia del parámetro uuid.
padre
integer
required
numIdAlumno del alumno que actuará como padre del grupo (strSexo = 'H').
madre
integer
required
numIdAlumno del alumno que actuará como madre del grupo (strSexo = 'M').
uuid
string | null
required
Enviar null para crear un grupo nuevo. Enviar el UUID de un grupo existente para actualizarlo.
Comportamiento al crear (uuid = null):
  1. Se instancia un nuevo GruposFamiliares y se genera un UUID con Uuid::generate().
  2. Se asignan padre y madre, y el grupo se persiste en base de datos.
  3. Se recuperan los registros Alumnos correspondientes al padre y a la madre y se actualiza el campo uuid_grupo_familiar de ambos con el UUID recién generado.
Comportamiento al actualizar (uuid presente):
  1. Se recupera el grupo existente por UUID.
  2. Se reemplazan los valores de padre y madre y se guarda.
  3. Los campos uuid_grupo_familiar de los alumnos no se modifican en la actualización.
Respuesta exitosa:
{
  "success": true,
  "message": "El grupo familiar se actualizo correctamente."
}

Editar un grupo familiar

POST /editar-grupo-familiar
Content-Type: application/json
Recupera los datos del grupo para pre-cargar el formulario de edición y construye la tabla HTML de hijos actuales.
uuid
string
required
UUID del grupo familiar a editar.
Respuesta:
{
  "success": true,
  "message": "Editar grupo familiar.",
  "padres": {
    "padre": 1012,
    "madre": 2045
  },
  "table": "<tr>...</tr>",
  "grupo": { "uuid": "...", "padre": 1012, "madre": 2045, "hijos": "3|7" }
}
El campo table contiene el HTML de las filas <tr> de la tabla de hijos, donde cada fila muestra id, nombres, apellidos, dni, fecha_nacimiento, sexo y un icono de eliminación con el data-id del hijo.

Gestionar hijos

Añadir un hijo

POST /actualizar-hijo
Content-Type: application/json
Crea un nuevo registro en la tabla hijos y lo anexa al campo hijos del grupo familiar mediante $grupo->hijos = $grupo->hijos.'|'.$hijo->id.
nombre_hijo
string
required
Nombre(s) del hijo. Se almacena en hijos.nombres.
apellidos_hijo
string
required
Apellidos del hijo. Se almacena en hijos.apellidos.
dni_hijo
string
required
Documento nacional de identidad del hijo. Se almacena en hijos.dni.
fec_nac_hijo
string
required
Fecha de nacimiento del hijo en formato YYYY-MM-DD. Se almacena en hijos.fecha_nacimiento.
sexo_hijo
string
required
Sexo del hijo. Valores esperados: H (Hombre) o M (Mujer). Se almacena en hijos.sexo.
uuid_grupo_familiar
string
required
UUID del grupo familiar al que se añade el hijo. Se usa para localizar el grupo y actualizar su campo hijos.
Respuesta exitosa:
{
  "success": true,
  "message": "Los datos se guardaron correctamente."
}

Eliminar un hijo

POST /eliminar-hijo
Content-Type: application/json
Elimina el registro del hijo de la tabla hijos y retira su ID de la cadena hijos del grupo usando str_replace('|'.$idHijo, '', $hijos).
idHijo
integer
required
ID del registro en la tabla hijos que se desea eliminar.
uuid
string
required
UUID del grupo familiar del que se desvincula al hijo.

Eliminar un grupo familiar

POST /eliminar-grupo-familiar
Content-Type: application/json
uuid
string
required
UUID del grupo familiar a eliminar.
Elimina el registro de grupos_familiares que coincide con el UUID proporcionado mediante GruposFamiliares::where('uuid', $request->uuid)->delete(). Respuesta exitosa:
{
  "success": true,
  "message": "El grupo familiar fue eliminado correctamente."
}
Eliminar un grupo familiar no elimina los registros de hijos (hijos) asociados a él, ni limpia la referencia uuid_grupo_familiar en los alumnos que actuaban como padre y madre. Solo se borra el registro de la tabla grupos_familiares y deja de existir el índice de IDs de hijos en grupos_familiares.hijos. Si necesitas limpiar completamente un núcleo familiar, debes eliminar manualmente los hijos y actualizar los alumnos afectados.

Build docs developers (and LLMs) love