88 lines
3.3 KiB
TypeScript
Executable File
88 lines
3.3 KiB
TypeScript
Executable File
import { Body, Controller, Delete, Get, Param, Patch, Post } from "@nestjs/common";
|
|
import { ApiOperation, ApiTags } from "@nestjs/swagger";
|
|
|
|
import { CreateLearningCategoryDto } from "./DTO/create-learning-category.dto";
|
|
import { CreateLearningDto } from "./DTO/create-learning.dto";
|
|
import { UpdateLearningCategoryDto } from "./DTO/update-learning-category.dto";
|
|
import { UpdateLearningDto } from "./DTO/update-learning.dto";
|
|
import { LearningService } from "./providers/learning.service";
|
|
import { AuthGuards } from "../../common/decorators/auth-guard.decorator";
|
|
import { PermissionsDec } from "../../common/decorators/permission.decorator";
|
|
import { ParamDto } from "../../common/DTO/param.dto";
|
|
import { PermissionEnum } from "../users/enums/permission.enum";
|
|
|
|
@ApiTags("Learning")
|
|
@AuthGuards()
|
|
@Controller("learnings")
|
|
export class LearningController {
|
|
constructor(private readonly learningService: LearningService) {}
|
|
|
|
@ApiOperation({ summary: "Create learning video" })
|
|
@PermissionsDec(PermissionEnum.LEARNINGS_CREATE)
|
|
@Post()
|
|
createLearningVideo(@Body() createDto: CreateLearningDto) {
|
|
return this.learningService.createLearningVideo(createDto);
|
|
}
|
|
|
|
@ApiOperation({ summary: "find learnings video" })
|
|
@Get()
|
|
findAllLearnings() {
|
|
return this.learningService.findLearningsVideos();
|
|
}
|
|
|
|
@ApiOperation({ summary: "find learning video by id" })
|
|
@Get(":id")
|
|
findLearningVideoById(@Param() paramDto: ParamDto) {
|
|
return this.learningService.findLearningVideoById(paramDto.id);
|
|
}
|
|
|
|
@ApiOperation({ summary: "delete learning video by id" })
|
|
@PermissionsDec(PermissionEnum.LEARNINGS_DELETE)
|
|
@Delete(":id")
|
|
deleteLearningVideoById(@Param() paramDto: ParamDto) {
|
|
return this.learningService.deleteLearningVideoById(paramDto.id);
|
|
}
|
|
|
|
@ApiOperation({ summary: "update learning video by id" })
|
|
@PermissionsDec(PermissionEnum.LEARNINGS_UPDATE)
|
|
@Patch(":id")
|
|
updateLearningVideoById(@Param() paramDto: ParamDto, @Body() updateDto: UpdateLearningDto) {
|
|
return this.learningService.updateLearningVideo(paramDto.id, updateDto);
|
|
}
|
|
|
|
//----------------- category management ----------------------
|
|
|
|
@ApiOperation({ summary: "Create learning category" })
|
|
@PermissionsDec(PermissionEnum.LEARNINGS_CREATE)
|
|
@Post("category")
|
|
createCategory(@Body() createDto: CreateLearningCategoryDto) {
|
|
return this.learningService.createLearningCategory(createDto);
|
|
}
|
|
|
|
@ApiOperation({ summary: "find learning categories" })
|
|
@Get("category")
|
|
findCategories() {
|
|
return this.learningService.findCategories();
|
|
}
|
|
|
|
@ApiOperation({ summary: "find one learning category by id" })
|
|
@Get("category/:id")
|
|
findCategoryById(@Param() paramDto: ParamDto) {
|
|
return this.learningService.findCategoryById(paramDto.id);
|
|
}
|
|
|
|
@ApiOperation({ summary: "update learning category ==> admin route" })
|
|
@PermissionsDec(PermissionEnum.LEARNINGS_UPDATE)
|
|
@Patch("category/:id")
|
|
updateLearningCategory(@Param() paramDto: ParamDto, @Body() updateDto: UpdateLearningCategoryDto) {
|
|
return this.learningService.updateLearningCategory(paramDto.id, updateDto);
|
|
}
|
|
|
|
@ApiOperation({ summary: "delete category by id" })
|
|
@PermissionsDec(PermissionEnum.LEARNINGS_DELETE)
|
|
@Delete("category/:id")
|
|
deleteCategoryById(@Param() paramDto: ParamDto) {
|
|
return this.learningService.deleteCategoryById(paramDto.id);
|
|
}
|
|
}
|