import { Body, Controller, Delete, Get, Param, Post, Query } from "@nestjs/common"; import { ApiOperation, ApiTags } from "@nestjs/swagger"; import { CreateCriticismDto } from "./DTO/create-criticism.dto"; import { SearchCriticismQueryDto } from "./DTO/search-criticism-query.dto"; import { CriticismsService } from "./providers/criticisms.service"; import { AuthGuards } from "../../common/decorators/auth-guard.decorator"; import { PermissionsDec } from "../../common/decorators/permission.decorator"; import { UserDec } from "../../common/decorators/user.decorator"; import { ParamDto } from "../../common/DTO/param.dto"; import { PermissionEnum } from "../users/enums/permission.enum"; @Controller("criticisms") @ApiTags("Criticism") export class CriticismController { constructor(private readonly criticismService: CriticismsService) {} @AuthGuards() @ApiOperation({ summary: "Create a new criticism" }) @Post() create(@Body() createDto: CreateCriticismDto, @UserDec("id") userId: string) { return this.criticismService.create(createDto, userId); } @AuthGuards() @PermissionsDec(PermissionEnum.CRITICISMS_READ) @ApiOperation({ summary: "Get all Criticism ===> login as admin" }) @Get() findAll(@Query() queryDto: SearchCriticismQueryDto) { return this.criticismService.findAll(queryDto); } @AuthGuards() @PermissionsDec(PermissionEnum.CRITICISMS_READ) @ApiOperation({ summary: "Get one Criticism with id ===> login as admin" }) @Get(":id") fineOne(@Param() paramDto: ParamDto) { return this.criticismService.findOneAndMarkAsRead(paramDto.id); } @AuthGuards() @PermissionsDec(PermissionEnum.CRITICISMS_DELETE) @ApiOperation({ summary: "Delete one Criticism with id ===> login as admin" }) @Delete(":id") delete(@Param() paramDto: ParamDto) { return this.criticismService.delete(paramDto.id); } }