File

apps/recallassess/recallassess-api/src/api/admin/course-module-page/course-module-page.controller.ts

Prefix

api/admin/course-module-page

Extends

Index

Methods

Methods

getPagesByCourseModule
getPagesByCourseModule(courseModuleId: number)
Decorators :
@Get('module/:courseModuleId')
Parameters :
Name Type Optional
courseModuleId number No
Returns : any
Async save
save(id: number, data: unknown)
Decorators :
@Put(':id')

Uses enrollment-aware validation (see CourseModulePageService.validateSavePayload). Base controller always validates with CourseModulePageSaveDto, which breaks saves when locked fields are omitted for enrolled courses.

Parameters :
Name Type Optional
id number No
data unknown No
import { BaseController } from "@bish-nest/core/controller/base.controller";
import { SaveResponseDataInterface } from "@bish-nest/core/interfaces/save-response-data.interface";
import {
  Body,
  Controller,
  Get,
  Param,
  ParseIntPipe,
  Put,
  UnprocessableEntityException,
} from "@nestjs/common";
import { CourseModulePageService } from "./course-module-page.service";

@Controller("api/admin/course-module-page")
export class CourseModulePageController extends BaseController<CourseModulePageService> {
  constructor(private readonly courseModulePageService: CourseModulePageService) {
    super(courseModulePageService);
  }

  /**
   * Uses enrollment-aware validation (see {@link CourseModulePageService.validateSavePayload}).
   * Base controller always validates with {@link CourseModulePageSaveDto}, which breaks saves when
   * locked fields are omitted for enrolled courses.
   */
  @Put(":id")
  override async save(
    @Param("id", ParseIntPipe) id: number,
    @Body() data: unknown,
  ): Promise<SaveResponseDataInterface<unknown>> {
    const errors = await this.courseModulePageService.validateSavePayload(id, data);
    if (errors.length > 0) {
      throw new UnprocessableEntityException(errors);
    }
    return this.courseModulePageService.save(id, data);
  }

  @Get("module/:courseModuleId")
  getPagesByCourseModule(@Param("courseModuleId", ParseIntPipe) courseModuleId: number) {
    return this.courseModulePageService.getPagesByCourseModule(courseModuleId);
  }
}

results matching ""

    No results matching ""