Leer QR (1) - [leerCodigoQR]
🧾 Descripción
Este servicio valida un código QR de acceso a buses internos y determina si un empleado puede registrar un nuevo escaneo.
El flujo consulta los registros previos, controla tiempos de reescaneo (mínimo 4 horas) y registra un nuevo ingreso si corresponde.
El servicio interactúa con:
-
Tabla “Registro de Escaneres de Bus” (documento principal con el QR)
-
Tabla “Tabla Lista Blanca” (registros de escaneo por empleado)
-
ERP vía dbErp() y ServiceErp()
-
Carbon para manejo de fechas
🚀 Endpoint
POST /leer-codigo-qr
📥 Request Body
Parámetros
| Campo | Tipo | Obligatorio | Descripción |
|---|---|---|---|
| qr | string | ✔️ | Código QR escaneado |
| employee | string | ✔️ | Código del empleado que intenta registrar el escaneo |
🔐 Seguridad
Requiere autenticación interna del ERP (vía dbErp() y ServiceErp()).
🧠 Flujo del Servicio (resumen real)
1️⃣ Validaciones iniciales
-
El QR no puede venir vacío
-
El código de empleado tampoco
Si falla, retorna error inmediato.
2️⃣ Buscar el documento del QR
Consulta el ERP:
Campos devueltos:
-
name(documento padre) -
empleado -
fechadel escaneo
Si no hay resultados: QR inválido.
3️⃣ Filtrar último registro por empleado
Construye una lista de empleados únicos y toma el último escaneo para cada uno.
Si el empleado actual tiene un registro:
-
Calcula diferencia de horas entre el último registro y ahora.
-
Si es menor a 4 horas, se retorna:
4️⃣ Registrar nuevo escaneo
Si cumple la validación, inserta un registro en la tabla:
Si falla el registro → error
Si se registra correctamente → "permitido"
📤 Response 200 – Ejemplos
✔️ Permitido
⛔ Denegado por escaneo reciente
❌ QR sin registros
❌ Error interno
❗ Posibles Errores
-
QR vacío
-
Empleado vacío
-
QR inexistente en ERP
-
Error al insertar registro
-
Error interno (try–catch)
🗃 Tablas / Schemas utilizados
Registro de Escaneres de Bus (tpr)
Campos usados:
Tabla Lista Blanca (teas)
Campos usados:
No hay comentarios para mostrar
No hay comentarios para mostrar