File

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

Prefix

api/admin/report/participant-progress-summary

Description

Dashboard filter endpoints only. Aggregated JSON + spreadsheet export use GET /api/report/data/participant-progress-summary (ParticipantProgressSummaryDataResolver + optional export=xlsx / csv).

Index

Methods

Methods

Async filterCompany
filterCompany(query: Record)
Decorators :
@Get('filter/company')
@HttpCode(HttpStatus.OK)
Parameters :
Name Type Optional
query Record<string | string | [] | undefined> No
Returns : unknown
Async filterCourse
filterCourse(query: Record)
Decorators :
@Get('filter/course')
@HttpCode(HttpStatus.OK)
Parameters :
Name Type Optional
query Record<string | string | [] | undefined> No
Returns : unknown
Async filterLearningGroup
filterLearningGroup(query: Record)
Decorators :
@Get('filter/learning-group')
@HttpCode(HttpStatus.OK)
Parameters :
Name Type Optional
query Record<string | string | [] | undefined> No
Returns : unknown
Async filterParticipant
filterParticipant(query: Record)
Decorators :
@Get('filter/participant')
@HttpCode(HttpStatus.OK)
Parameters :
Name Type Optional
query Record<string | string | [] | undefined> No
Returns : unknown
import { Controller, Get, HttpCode, HttpStatus, Query } from "@nestjs/common";
import { firstQueryString, parseOptionalQueryInt, parseSqEqualsInt } from "../../utils/report-query-params.util";
import { parseReportValuelistListQuery } from "../../utils/report-valuelist-query.util";
import { ParticipantScopeFiltersService } from "../shared/participant-scope-filters.service";

/**
 * Dashboard filter endpoints only. Aggregated JSON + spreadsheet export use **`GET /api/report/data/participant-progress-summary`**
 * (**`ParticipantProgressSummaryDataResolver`** + optional **`export=xlsx`** / **`csv`**).
 */
@Controller("api/admin/report/participant-progress-summary")
export class ParticipantProgressSummaryController {
  constructor(private readonly participantScopeFilters: ParticipantScopeFiltersService) {}

  @Get("filter/company")
  @HttpCode(HttpStatus.OK)
  async filterCompany(@Query() query: Record<string, string | string[] | undefined>) {
    return this.participantScopeFilters.listCompanyFilterOptions(parseReportValuelistListQuery(query));
  }

  @Get("filter/course")
  @HttpCode(HttpStatus.OK)
  async filterCourse(@Query() query: Record<string, string | string[] | undefined>) {
    const sq = firstQueryString(query["sq"]);
    const companyId =
      parseOptionalQueryInt(firstQueryString(query["company_id"])) ?? parseSqEqualsInt(sq, "company_id");
    return this.participantScopeFilters.listCourseFilterOptions({
      ...parseReportValuelistListQuery(query),
      companyId,
    });
  }

  @Get("filter/learning-group")
  @HttpCode(HttpStatus.OK)
  async filterLearningGroup(@Query() query: Record<string, string | string[] | undefined>) {
    const sq = firstQueryString(query["sq"]);
    const companyId =
      parseOptionalQueryInt(firstQueryString(query["company_id"])) ?? parseSqEqualsInt(sq, "company_id");
    const courseId =
      parseOptionalQueryInt(firstQueryString(query["course_id"])) ?? parseSqEqualsInt(sq, "course_id");
    return this.participantScopeFilters.listLearningGroupFilterOptions({
      ...parseReportValuelistListQuery(query),
      companyId,
      courseId,
    });
  }

  @Get("filter/participant")
  @HttpCode(HttpStatus.OK)
  async filterParticipant(@Query() query: Record<string, string | string[] | undefined>) {
    const sq = firstQueryString(query["sq"]);
    const companyId =
      parseOptionalQueryInt(firstQueryString(query["company_id"])) ?? parseSqEqualsInt(sq, "company_id");
    const courseId =
      parseOptionalQueryInt(firstQueryString(query["course_id"])) ?? parseSqEqualsInt(sq, "course_id");
    const learningGroupId =
      parseOptionalQueryInt(firstQueryString(query["learning_group_id"])) ??
      parseSqEqualsInt(sq, "learning_group_id");
    return this.participantScopeFilters.listParticipantFilterOptions({
      ...parseReportValuelistListQuery(query),
      companyId,
      courseId,
      learningGroupId,
    });
  }
}

results matching ""

    No results matching ""