apps/recallassess/recallassess-api/src/api/client/reports/course-reports.controller.ts
api/client/reports/course
Methods |
| Async getPublishedCourseByIdForReports | ||||||
getPublishedCourseByIdForReports(id: number)
|
||||||
Decorators :
@HttpCode(HttpStatus.OK)
|
||||||
|
Get a single published course by ID for client reports GET /api/reports/client/course/:id
Parameters :
Returns :
Promise<CLCourseDto>
|
| Async getPublishedCoursesForReports |
getPublishedCoursesForReports()
|
Decorators :
@HttpCode(HttpStatus.OK)
|
|
Get all published courses for client reports GET /api/reports/client/course
Returns :
Promise<CLCourseDto[]>
|
import { Public } from "@bish-nest/core/auth/decorator/public.decorator";
import { Controller, Get, HttpCode, HttpStatus, NotFoundException, Param, ParseIntPipe } from "@nestjs/common";
import { ApiOperation, ApiResponse, ApiTags } from "@nestjs/swagger";
import { CLCourseService } from "../course/course.service";
import { CLCourseDto } from "../course/dto";
@ApiTags("Client - Reports - Courses")
@Controller("api/client/reports/course")
export class CLCourseReportsController {
constructor(private courseService: CLCourseService) {}
/**
* Get all published courses for client reports
* GET /api/reports/client/course
*/
@HttpCode(HttpStatus.OK)
@Public()
@Get()
@ApiOperation({ summary: "Get all published courses (reports)" })
@ApiResponse({
status: 200,
description: "Returns array of published courses with enriched data",
type: [CLCourseDto],
})
async getPublishedCoursesForReports(): Promise<CLCourseDto[]> {
return this.courseService.getPublishedCourses();
}
/**
* Get a single published course by ID for client reports
* GET /api/reports/client/course/:id
*/
@HttpCode(HttpStatus.OK)
@Public()
@Get(":id")
@ApiOperation({ summary: "Get a published course by ID (reports)" })
@ApiResponse({
status: 200,
description: "Returns a single published course with enriched data",
type: CLCourseDto,
})
@ApiResponse({
status: 404,
description: "Course not found or not published",
})
async getPublishedCourseByIdForReports(@Param("id", ParseIntPipe) id: number): Promise<CLCourseDto> {
const course = await this.courseService.getPublishedCourseById(id);
if (!course) {
throw new NotFoundException(`Course with ID ${id} not found or not published`);
}
return course;
}
}