Skip to main content

Módulo Cursos

El módulo Course (src/domains/course/) gestiona los cursos educativos asociados a instituciones (companies) e instructores.

Schema Course

Definido en schemas/course.schema.ts. Colección: courses.

CampoTipoDescripción
namestring (requerido)Nombre del curso
descriptionstringDescripción del curso
companyIdstring (requerido)ID de la institución/empresa
startDateDateFecha de inicio
endDateDateFecha de fin
statusbooleanEstado activo/inactivo (default: true)
instructorIdstringID del instructor (User)
maxStudentsnumberCupo máximo de estudiantes
categorystringCategoría del curso
deletedbooleanSoft delete

Índices

CourseSchema.index({ companyId: 1 });
CourseSchema.index({ instructorId: 1 });
CourseSchema.index({ status: 1 });
CourseSchema.index({ category: 1 });

Relación con Institutions/Companies

El campo companyId referencia a la colección Company. El servicio resuelve el nombre de la institución mediante resolveNames(), que hace un batch lookup en la colección Company trayendo name, nit y email. De igual forma resuelve el instructor desde la colección User con name, email y documentNumber.

Endpoints CRUD

MétodoRutaDescripciónPermiso
POST/api/coursesCrear curso (valida fecha inicio < fin)10
GET/api/coursesListar cursos (filtros: companyId, status)Bypass
GET/api/courses/:idObtener curso por ID
PUT/api/courses/:idActualizar curso10
DELETE/api/courses/:idSoft delete10

Endpoints adicionales

MétodoRutaDescripción
GET/api/courses/listLista simple (solo _id, name) para selectores
GET/api/courses/progressProgreso de cada curso (% de participantes activos)
GET/api/courses/company/:companyIdCursos por institución

Progreso de cursos (GET /api/courses/progress)

Calcula para cada curso activo:

  1. Total de participantes inscritos
  2. Participantes que han completado al menos una actividad (via UserResponse)
  3. Porcentaje de avance: (activeParticipants / totalParticipants) * 100

Retorna [{ courseId, courseName, totalParticipants, activeParticipants, progressPercent }] ordenado por progreso descendente.