File

apps/recallassess/recallassess-api/src/api/admin/knowledge-review/controllers/knowledge-review-question.controller.ts

Prefix

api/admin/knowledge-review/:id/question

Index

Methods

Methods

Async addQuestion
addQuestion(data: Record<string | unknown>)
Decorators :
@Post()
Parameters :
Name Type Optional
data Record<string | unknown> No
Async deleteQuestion
deleteQuestion(id: number)
Decorators :
@Delete(':id')
Parameters :
Name Type Optional
id number No
Returns : Promise<void>
Async getQuestionsByKnowledgeReview
getQuestionsByKnowledgeReview(knowledgeReviewId: number)
Decorators :
@Get()
Parameters :
Name Type Optional
knowledgeReviewId number No
Async reorderQuestions
reorderQuestions(questions: literal type[])
Decorators :
@Put('reorder')
Parameters :
Name Type Optional
questions literal type[] No
Returns : Promise<void>
Async saveQuestion
saveQuestion(id: number, data: Record<string | unknown>)
Decorators :
@Put(':id')
Parameters :
Name Type Optional
id number No
data Record<string | unknown> No
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);
  }
}

results matching ""

    No results matching ""