apps/recallassess/recallassess-api/src/api/admin/course-module-page/course-module-page.controller.ts
api/admin/course-module-page
Methods |
|
| getPagesByCourseModule | ||||||
getPagesByCourseModule(courseModuleId: number)
|
||||||
Decorators :
@Get('module/:courseModuleId')
|
||||||
|
Parameters :
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. |
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);
}
}