apps/recallassess/recallassess-api/src/api/admin/knowledge-review/controllers/knowledge-review-question.controller.ts
api/admin/knowledge-review/:id/question
Methods |
|
| Async addQuestion | ||||||
addQuestion(data: Record<string | unknown>)
|
||||||
Decorators :
@Post()
|
||||||
|
Parameters :
Returns :
Promise<KnowledgeReviewQuestionDto>
|
| Async deleteQuestion | ||||||
deleteQuestion(id: number)
|
||||||
Decorators :
@Delete(':id')
|
||||||
|
Parameters :
Returns :
Promise<void>
|
| Async getQuestionsByKnowledgeReview | ||||||
getQuestionsByKnowledgeReview(knowledgeReviewId: number)
|
||||||
Decorators :
@Get()
|
||||||
|
Parameters :
|
| Async reorderQuestions | ||||||
reorderQuestions(questions: literal type[])
|
||||||
Decorators :
@Put('reorder')
|
||||||
|
Parameters :
Returns :
Promise<void>
|
| Async saveQuestion | |||||||||
saveQuestion(id: number, data: Record<string | unknown>)
|
|||||||||
Decorators :
@Put(':id')
|
|||||||||
|
Parameters :
Returns :
Promise<KnowledgeReviewQuestionDto>
|
import {
Body,
Controller,
Delete,
Get,
Param,
ParseIntPipe,
Post,
Put,
UnprocessableEntityException,
} from "@nestjs/common";
import { plainToInstance } from "class-transformer";
import { validate } from "class-validator";
import { KnowledgeReviewQuestionDto } from "./../dto/quiz/knowledge-review-question.dto";
import { KnowledgeReviewQuestionAddDto } from "./../dto/quiz/knowledge-review-question-add.dto";
import { KnowledgeReviewQuestionListDto } from "./../dto/quiz/knowledge-review-question-list.dto";
import { KnowledgeReviewQuestionSaveDto } from "./../dto/quiz/knowledge-review-question-save.dto";
import { KnowledgeReviewQuestionService } from "./../services/knowledge-review-question.service";
@Controller("api/admin/knowledge-review/:id/question")
export class KnowledgeReviewQuestionController {
constructor(private readonly knowledgeReviewQuestionService: KnowledgeReviewQuestionService) {}
@Get()
async getQuestionsByKnowledgeReview(
@Param("id", ParseIntPipe) knowledgeReviewId: number,
): Promise<KnowledgeReviewQuestionListDto[]> {
return this.knowledgeReviewQuestionService.getQuestionsByKnowledgeReview(knowledgeReviewId);
}
@Post()
async addQuestion(@Body() data: Record<string, unknown>): Promise<KnowledgeReviewQuestionDto> {
// we need to convert the addQuestionDto to KnowledgeReviewQuestionAddDto by getting the data first as any
const addQuestionDto = plainToInstance(KnowledgeReviewQuestionAddDto, data);
const errors = await validate(addQuestionDto);
if (errors.length > 0) {
throw new UnprocessableEntityException(errors);
}
const knowledgeReviewId: number = data["knowledge_review_id"] as number;
return this.knowledgeReviewQuestionService.addQuestion(addQuestionDto, knowledgeReviewId);
}
@Put(":id")
async saveQuestion(
@Param("id", ParseIntPipe) id: number,
@Body() data: Record<string, unknown>,
): Promise<KnowledgeReviewQuestionDto> {
// we need to convert the updateQuestionDto to KnowledgeReviewQuestionSaveDto by getting the data first as any
const updateQuestionDto = plainToInstance(KnowledgeReviewQuestionSaveDto, data);
const errors = await validate(updateQuestionDto);
if (errors.length > 0) {
throw new UnprocessableEntityException(errors);
}
return this.knowledgeReviewQuestionService.saveQuestion(id, updateQuestionDto);
}
@Delete(":id")
async deleteQuestion(@Param("id", ParseIntPipe) id: number): Promise<void> {
return this.knowledgeReviewQuestionService.deleteQuestion(id);
}
@Put("reorder")
async reorderQuestions(@Body() questions: { id: number; sort_order: number }[]): Promise<void> {
return this.knowledgeReviewQuestionService.reorderQuestions(questions);
}
}