File

apps/recallassess/recallassess-api/src/api/admin/report/reports/participant-progress/participant-progress.dto.ts

Index

Properties

Properties

completedAt
Type : string | null
Decorators :
@Expose()
modulesCompleted
Type : number | null
Decorators :
@Expose()
progressPercentage
Type : number | null
Decorators :
@Expose()
startedAt
Type : string | null
Decorators :
@Expose()
status
Type : string
Decorators :
@Expose()
statusLabel
Type : string
Decorators :
@Expose()
totalModules
Type : number | null
Decorators :
@Expose()
import type { ParticipantProgressVm } from "@recallassess/shared-ng";
import { Exclude, Expose, Type } from "class-transformer";

/**
 * Admin API DTOs for **`participant-progress`** report payload. Serialized output must match **`ParticipantProgressVm`**
 * (PWA / SSR contract in **`@recallassess/shared-ng`**). Built via **`bnestPlainToDto`** (**`@bish-nest/core`**) in
 * **`ParticipantProgressFiltersService`**.
 */
@Exclude()
export class ParticipantProgressPreBatDto {
  @Expose()
  enrollmentCompletedAt!: string | null;

  @Expose()
  assessmentCompletedAt!: string | null;

  @Expose()
  ipq!: number | null;
}

@Exclude()
export class ParticipantProgressELearningDto {
  @Expose()
  status!: string;

  @Expose()
  statusLabel!: string;

  @Expose()
  progressPercentage!: number | null;

  @Expose()
  modulesCompleted!: number | null;

  @Expose()
  totalModules!: number | null;

  @Expose()
  startedAt!: string | null;

  @Expose()
  completedAt!: string | null;
}

@Exclude()
export class ParticipantProgressKnowledgeReviewDto {
  @Expose()
  completedAt!: string | null;
}

@Exclude()
export class ParticipantProgressPostBatDto {
  @Expose()
  assessmentCompletedAt!: string | null;

  @Expose()
  ipq!: number | null;
}

@Exclude()
export class ParticipantProgressDto implements ParticipantProgressVm {
  @Expose()
  participantName!: string;

  @Expose()
  participantEmail!: string | null;

  @Expose()
  companyName!: string | null;

  @Expose()
  courseTitle!: string;

  @Expose()
  learningGroupName!: string;

  @Expose()
  enrollmentStatus!: string;

  @Expose()
  enrollmentStatusLabel!: string;

  @Expose()
  overallCompletionPercentage!: number | null;

  @Expose()
  invitedAt!: string | null;

  @Expose()
  acceptedAt!: string | null;

  @Expose()
  @Type(() => ParticipantProgressPreBatDto)
  preBat!: ParticipantProgressPreBatDto;

  @Expose()
  @Type(() => ParticipantProgressELearningDto)
  eLearning!: ParticipantProgressELearningDto;

  @Expose()
  @Type(() => ParticipantProgressKnowledgeReviewDto)
  knowledgeReview!: ParticipantProgressKnowledgeReviewDto;

  @Expose()
  @Type(() => ParticipantProgressPostBatDto)
  postBat!: ParticipantProgressPostBatDto;

  @Expose()
  courseCompletedAt!: string | null;
}

results matching ""

    No results matching ""