Saltar al contenido principal

Puntos Finales de Asistencia

El módulo de Asistencia gestiona ubicaciones de campus, servicios, horas de servicio, sesiones de asistencia, visitas, y sesiones de visita. Proporciona la infraestructura para rastrear quién asistió a qué servicio o reunión de grupo, admite flujos de trabajo de check-in, y ofrece reportes de tendencias y resúmenes de asistencia.

Ruta base: /attendance

Campus

Ruta base: /attendance/campuses

Controlador CRUD estándar (extiende GenericCrudController). Proporciona rutas getById, getAll, post, y delete a través de la clase base CRUD.

MétodoRutaAuthPermisoDescripción
GET/JWTEnumera todos los campuses de la iglesia
GET/:idJWTObtener un campus por ID
POST/JWTServices.EditCrear o actualizar campuses
DELETE/:idJWTServices.EditEliminar un campus

Servicios

Ruta base: /attendance/services

Extiende GenericCrudController con rutas CRUD getById, getAll, post, y delete. Los puntos finales getAll (GET /) y search se anulan con implementaciones personalizadas.

MétodoRutaAuthPermisoDescripción
GET/JWTEnumera todos los servicios (incluye información de campus)
GET/:idJWTObtener un servicio por ID
GET/search?campusId=JWTBuscar servicios por ID de campus
POST/JWTServices.EditCrear o actualizar servicios
DELETE/:idJWTServices.EditEliminar un servicio

Ejemplo: Buscar Servicios por Campus

GET /attendance/services/search?campusId=abc-123
Authorization: Bearer <token>
[
{
"id": "svc-001",
"churchId": "church-123",
"campusId": "abc-123",
"name": "Sunday Morning"
}
]

Horas de Servicio

Ruta base: /attendance/servicetimes

Extiende GenericCrudController con rutas CRUD getById, post, y delete. Los puntos finales getAll y search son implementaciones personalizadas.

MétodoRutaAuthPermisoDescripción
GET/JWTEnumera todas las horas de servicio. Filtra por ?serviceId=. Agrega ?include=groups para añadir datos de grupo
GET/:idJWTObtener una hora de servicio por ID
GET/search?campusId=&serviceId=JWTBuscar horas de servicio por campus y servicio
GET/public/:churchIdPúblicoObtener el árbol campus → servicio → hora para una iglesia. Impulsa el elemento serviceTimes del generador de sitios web
POST/JWTServices.EditCrear o actualizar horas de servicio
DELETE/:idJWTServices.EditEliminar una hora de servicio

Horas de Servicio de Grupo

Ruta base: /attendance/groupservicetimes

Vincula grupos a horas de servicio específicas.

MétodoRutaAuthPermisoDescripción
GET/JWTEnumera todas las asociaciones grupo-hora de servicio. Filtra por ?groupId= para obtener asociaciones con nombres de servicio
GET/:idJWTObtener una asociación grupo-hora de servicio por ID
POST/JWTServices.EditCrear o actualizar asociaciones grupo-hora de servicio
DELETE/:idJWTServices.EditEliminar una asociación grupo-hora de servicio

Registros de Asistencia

Ruta base: /attendance/attendancerecords

Proporciona vistas agregadas de solo lectura de datos de asistencia para reportes y visualización.

MétodoRutaAuthPermisoDescripción
GET/JWTAttendance.ViewCargar registros de asistencia para una persona. Requiere ?personId=
GET/treeJWTCargar el árbol completo de asistencia (campuses, servicios, horas de servicio, grupos)
GET/trend?campusId=&serviceId=&serviceTimeId=&groupId=JWTAttendance.View SummaryCargar datos de tendencia de asistencia con filtros opcionales
GET/groups?serviceId=&week=JWTAttendance.ViewCargar asistencia de grupo para un servicio en una semana dada
GET/search?campusId=&serviceId=&serviceTimeId=&groupId=&startDate=&endDate=JWTAttendance.ViewBuscar registros de asistencia con filtros (campus, servicio, hora de servicio, grupo, rango de fechas)

Ejemplo: Tendencia de Asistencia

GET /attendance/attendancerecords/trend?serviceId=svc-001
Authorization: Bearer <token>
[
{ "week": "2025-01-05", "count": 142 },
{ "week": "2025-01-12", "count": 156 },
{ "week": "2025-01-19", "count": 138 }
]

Sesiones

Ruta base: /attendance/sessions

Extiende GenericCrudController con rutas CRUD getById y delete. Los puntos finales getAll y save son implementaciones personalizadas que también permiten a los líderes de grupo gestionar sesiones para sus grupos.

MétodoRutaAuthPermisoDescripción
GET/JWTAttendance.View o Líder de GrupoEnumera todas las sesiones. Filtra por ?groupId= (incluye nombres). Los líderes de grupo pueden ver sesiones para sus propios grupos
GET/:idJWTAttendance.ViewObtener una sesión por ID
POST/JWTAttendance.Edit o Líder de GrupoCrear o actualizar sesiones. Los líderes de grupo pueden guardar sesiones para sus propios grupos
DELETE/:idJWTAttendance.EditEliminar una sesión

Visitas

Ruta base: /attendance/visits

Gestiona registros de visita individuales (una persona asistiendo en una fecha específica) y proporciona el flujo de trabajo de check-in.

MétodoRutaAuthPermisoDescripción
GET/JWTAttendance.ViewEnumera todas las visitas. Filtra por ?personId=
GET/:idJWTAttendance.ViewObtener una visita por ID
GET/checkin?serviceId=&peopleIds=JWTAttendance.View o Attendance.CheckinCargar datos de check-in para personas en un servicio. Devuelve visitas con sesiones de visita desde la última fecha registrada
POST/JWTAttendance.EditCrear o actualizar visitas
POST/checkin?serviceId=&peopleIds=JWTAttendance.Edit o Attendance.CheckinEnviar datos de check-in. Crea/actualiza visitas y sesiones de visita, elimina registros obsoletos
DELETE/:idJWTAttendance.EditEliminar una visita

Ejemplo: Flujo de Check-In

Paso 1 -- Cargar datos de check-in existentes:

GET /attendance/visits/checkin?serviceId=svc-001&peopleIds=person-1,person-2
Authorization: Bearer <token>
[
{
"id": "visit-001",
"personId": "person-1",
"visitDate": "2025-01-19T00:00:00.000Z",
"visitSessions": [
{
"id": "vs-001",
"sessionId": "sess-001",
"visitId": "visit-001",
"session": {
"id": "sess-001",
"groupId": "group-001",
"serviceTimeId": "st-001",
"sessionDate": "2025-01-19T00:00:00.000Z"
}
}
]
}
]

Paso 2 -- Enviar check-in:

POST /attendance/visits/checkin?serviceId=svc-001&peopleIds=person-1,person-2
Authorization: Bearer <token>

[
{
"personId": "person-1",
"visitSessions": [
{
"session": { "serviceTimeId": "st-001", "groupId": "group-001" }
}
]
}
]

Sesiones de Visita

Ruta base: /attendance/visitsessions

Gestiona la asociación entre visitas y sesiones (qué sesión específica atendió una persona durante una visita). También proporciona un punto final de registro rápido y un punto final de descarga/exportación.

MétodoRutaAuthPermisoDescripción
GET/JWTAttendance.View o Líder de GrupoEnumera sesiones de visita. Filtra por ?sessionId=. Los líderes de grupo pueden ver sesiones de visita para sus propios grupos
GET/:idJWTAttendance.ViewObtener una sesión de visita por ID
GET/download/:sessionIdJWTAttendance.ViewDescargar asistencia para una sesión (devuelve nombres de personas con estado presente/ausente)
POST/JWTAttendance.EditCrear o actualizar sesiones de visita
POST/logJWTAttendance.Edit o Líder de GrupoRegistro rápido de la asistencia de una persona a una sesión. Crea automáticamente una visita si es necesario. Los líderes de grupo pueden registrar asistencia para sus propios grupos
DELETE/:idJWTAttendance.EditEliminar una sesión de visita por ID
DELETE/?personId=&sessionId=JWTAttendance.Edit o Líder de GrupoQuitar a una persona de una sesión. Elimina la sesión de visita y la visita padre si no quedan sesiones. Los líderes de grupo pueden quitar asistencia para sus propios grupos

Ejemplo: Registro Rápido de Asistencia

POST /attendance/visitsessions/log
Authorization: Bearer <token>

{
"personId": "person-001",
"visitSessions": [
{ "sessionId": "sess-001" }
]
}
{}

Ejemplo: Descargar Asistencia de Sesión

GET /attendance/visitsessions/download/sess-001
Authorization: Bearer <token>
[
{
"id": "vs-001",
"personId": "person-001",
"visitId": "visit-001",
"sessionDate": "2025-01-19T00:00:00.000Z",
"personName": "John Smith",
"status": "present"
},
{
"id": "",
"personId": "person-002",
"visitId": "",
"sessionDate": "2025-01-19T00:00:00.000Z",
"personName": "Jane Doe",
"status": "absent"
}
]

Rachas

Ruta base: /attendance/streaks

Rastrea rachas de asistencia para individuos -- semanas consecutivas que una persona ha asistido. Útil para métricas de participación y gamificación.

MétodoRutaAuthPermisoDescripción
GET/person/:personIdJWTCargar rachas de asistencia para una persona

Páginas Relacionadas