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); } }