Obtener Usuario (1,2,3,4) - [getUser3]
🧾 Descripción
Retorna la información del usuario ingresado en la app (empleado o estudiante).
El servicio consulta primero la tabla Employee del ERP.
Si no existe o no está activo, consulta la tabla Student.
Finalmente, devuelve la información personal, laboral/educativa, permisos y datos complementarios.
Funciona como un servicio maestro de login/datos del usuario para la aplicación móvil.
🚀 Endpoint
El nombre real depende del archivo
routes/api.php.
🔐 Seguridad
-
No se ve autenticación explícita, pero las consultas al ERP (
dbErp,ServiceErp) requieren token/credenciales internas. -
Se recomienda protegerlo con autenticación JWT o middleware.
📥 Request Body
{
"username": "string"
} |
Campos
| Campo | Tipo | Requerido | Descripción |
|---|---|---|---|
| username | string | Sí | Email o DNI/pasaporte. Si contiene “@” se asume email, de lo contrario documento. |
🧩 Lógica Interna Detallada
1️⃣ Determinar si buscar por email o documento
-
Si el parámetro incluye “@” → buscar por
emp.user_id -
Sino → buscar por
emp.passport_number
2️⃣ Consultar información del empleado en ERP
Consulta SQL con múltiples JOIN:
Tablas involucradas:
-
tabEmployee(principal) -
tabUser -
tabBranch -
tabContrato de Trabajo -
tabDepartment
Si no encuentra empleado → pasa a modo estudiante.
❌ Errores de empleado antes de consultar estudiante:
-
No
valoren la respuesta -
responsevacío
→ continuar con búsqueda en Student
3️⃣ Consultar información del estudiante (fallback)
Si el usuario no es empleado, consulta en:
-
tabStudent -
tabUser -
tabBranch -
tabJob Applicant -
tabRequerimiento de Personal -
tabDesignation -
tabDepartment
Validaciones de estudiante:
-
Si no existe →
{ "valor": false, "msn": "Sin Estudiante: ...", "data": [] } -
Si el usuario está deshabilitado (
us.enabled = 0) →
{ "valor": false, "msn": "Usuario Deshabilitado...", "data": [...] } |
Si todo está correcto → retorna data del estudiante.
4️⃣ Procesamiento final de empleado
Validaciones
-
Si
status = Inactive→ usuario no puede usar la app
Ajustes en la data:
-
Formato de fecha de nacimiento →
mm-dd -
Si contrato indeterminado → reemplazar texto
-
Detectar si es renovación o primer contrato (ServiceErp)
-
Normalizar campos:
-
bank_ac_no -
pets -
tipo_usuario = "Empleado"
-
5️⃣ Respuesta final (Empleado o Estudiante)
Retorna la data enriquecida del usuario.
📤 Responses
✔️ 200 – Usuario encontrado
{
"valor": true,
"msn": "Si hay data",
"data": [ ... ]
} |
❌ Usuario no es empleado ni estudiante
{
"valor": false,
"msn": "Este usuario no es empleado",
"data": []
} |
❌ Usuario estudiante sin permisos
{
"valor": false,
"msn": "Sin Estudiante: Su usuario no tiene permisos para acceder al aplicativo. Contactar con soporte.",
"data": []
} |
❌ Usuario deshabilitado
{
"valor": false,
"msn": "Usuario Deshabilitado: Comuníquese con su administrador",
"data": [ ... ]
} |
❌ Empleado inactivo
{
"valor": false,
"msn": "Empleado Inactivo: Comuníquese con su administrador",
"data": [ ... ]
} |
📚 Schemas
Request
{
"username": "string"
} |
Response (general)
{
"valor": "boolean",
"msn": "string",
"data": "array"
} |
🧪 Ejemplo de uso (curl)
curl -X POST https://midominio.com/api/get-user3 \
-H "Content-Type: application/json" \
-d '{"username":"empleado@empresa.com"}' |
✔️ Servicios ERP usados internamente
1. send-query-database
Método POST que ejecuta consultas SQL personalizadas en ERPNext.
2. resource/Contrato de Trabajo
Consulta REST para obtener contratos de trabajo.
📝 Observaciones técnicas (reales)
-
Código mezcla SQL dinámico en body con filtros JSON → validar inyección.
-
Se usa
LIMIT 1en employee, pero la consulta de contratos tienelimit=None. -
Campos duplicados en
sql_query(ej.emp.bank_ac_noaparece 2 veces). -
Es un servicio muy grande, podría dividirse por responsabilidad.
No hay comentarios para mostrar
No hay comentarios para mostrar