Ir al contenido principal

Listar Cursos (1) - [listar]

🧾 Descripción

Este servicio obtiene todos los cursos asignados a un empleado o estudiante, basándose en su puesto (designation / puesto académico).

El flujo evalúa primero si el DNI pertenece a un Empleado, y si no, valida si pertenece a un Estudiante.
Con el puesto encontrado, se consultan los cursos vinculados y finalmente se retornan los detalles del curso desde tabCourse.

El servicio interactúa con:

  • tabEmployee

  • tabStudent

  • tabPuesto Curso

  • tabCourse


🚀 Endpoint

POST /listar


📥 Request Body

{ "dni": "string" }

Campo Tipo Obligatorio Descripción
dni string DNI del empleado o estudiante para identificar su puesto.

🔐 Seguridad

  • Requiere autenticación interna del ERP vía dbErp().

  • No requiere token externo del cliente.


🧠 Flujo del Servicio (Resumen real)

1. Buscar si el DNI pertenece a un Empleado activo

Consulta a: tabEmployee

con filtros:

  • passport_number = DNI

  • status = Active

  • designation IS NOT NULL

Si se encuentra → extrae el designation.


2. Si no es empleado, verificar si es Estudiante activo

Consulta a: tabStudent

con filtros:

  • dni = DNI

  • enabled = 1

Si se encuentra → extrae el campo puesto.


3. Si no existe puesto asignado

Retorna mensaje:

"valor": false "msn": "No se encontro el puesto de empleado"


4. Buscar cursos asignados al puesto

Consulta a: tabPuesto Curso

filtrando por:

  • designation = puestoEmpleado

Obtiene los parent → IDs de los cursos asignados.


5. Obtener información de los cursos

Consulta a: tabCourse

Retorna campos:

  • name

  • hero_image


6. Respuesta final

Se devuelve el listado de cursos con sus imágenes.


📤 Response 200 – Ejemplo

{ "valor": true, "data": [ { "name": "CURS-001", "hero_image": "/files/curso_001.png" }, { "name": "CURS-002", "hero_image": "/files/curso_002.png" } ] }


❗ Posibles Errores

1. No existe empleado NI estudiante con ese DNI

{ "valor": false, "msn": "No se encontro el puesto de empleado" }


2. Puesto sin cursos configurados

{ "valor": false, "msn": "Su usuario no tiene cursos asignados" }


3. Error al obtener datos del ERP

{ "valor": false, "msn": "Error al consultar datos", "data": [] }


📚 Tablas y Campos utilizados

🔸 tabEmployee

Campos:

  • passport_number

  • designation

  • status

🔸 tabStudent

Campos:

  • dni

  • enabled

  • puesto

🔸 tabPuesto Curso

Campos:

  • designation

  • parent (ID del curso)

🔸 tabCourse

Campos:

  • name

  • hero_image


🗃 Lógica en pseudo-código

dni = request.dni employee = GET tabEmployee WHERE passport_number = dni AND status = 'Active' if employee exists: puesto = employee.designation else: student = GET tabStudent WHERE dni = dni AND enabled = 1 if student exists: puesto = student.puesto else: return error("No se encontro el puesto de empleado") cursosAsignados = GET tabPuesto Curso WHERE designation = puesto if cursosAsignados empty: return error("Su usuario no tiene cursos asignados") idsCursos = cursosAsignados.parents infoCursos = GET tabCourse WHERE name IN idsCursos return infoCursos