import { Body, Controller, Get, Param, Post } from "@nestjs/common"; import { ApiOperation, ApiResponse, ApiTags } from "@nestjs/swagger"; import { CreateDiscountDto } from "./DTO/create-discount.dto"; import { DiscountsService } from "./providers/discounts.service"; import { AdminRoute } from "../../common/decorators/admin.decorator"; import { AuthGuards } from "../../common/decorators/auth-guard.decorator"; import { PermissionsDec } from "../../common/decorators/permission.decorator"; import { PermissionEnum } from "../users/enums/permission.enum"; @ApiTags("Discounts") @Controller("discounts") @AuthGuards() export class DiscountsController { constructor(private readonly discountsService: DiscountsService) {} @ApiOperation({ summary: "Create a new discount" }) @AdminRoute() @PermissionsDec(PermissionEnum.DISCOUNTS) @Post() @ApiResponse({ status: 201, description: "Discount created successfully" }) create(@Body() createDiscountDto: CreateDiscountDto) { return this.discountsService.create(createDiscountDto); } @ApiOperation({ summary: "Get discount by ID" }) @AdminRoute() @PermissionsDec(PermissionEnum.DISCOUNTS) @Get(":id") findOne(@Param("id") id: string) { return this.discountsService.findById(id); } }