update: add delete and update route for the dicsount

This commit is contained in:
mahyargdz
2025-04-20 10:32:38 +03:30
parent a2088e6176
commit 1c0ef1e1e1
3 changed files with 54 additions and 2 deletions
+36 -1
View File
@@ -1,12 +1,14 @@
import { Body, Controller, Get, Post, Query } from "@nestjs/common";
import { Body, Controller, Delete, Get, Param, Patch, Post, Query } from "@nestjs/common";
import { ApiOperation, ApiResponse, ApiTags } from "@nestjs/swagger";
import { CreateDiscountDto } from "./DTO/create-discount.dto";
import { SearchDiscountQueryDto } from "./DTO/search-discount-query.dto";
import { UpdateDiscountDto } from "./DTO/update-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 { ParamDto } from "../../common/DTO/param.dto";
import { PermissionEnum } from "../users/enums/permission.enum";
@ApiTags("Discounts")
@@ -32,4 +34,37 @@ export class DiscountsController {
getDiscountsForAdmin(@Query() queryDto: SearchDiscountQueryDto) {
return this.discountsService.getDiscountsForAdmin(queryDto);
}
@ApiOperation({ summary: "Get discount by id" })
@AdminRoute()
@PermissionsDec(PermissionEnum.DISCOUNTS)
@Get(":id")
@ApiResponse({ status: 200, description: "Discount fetched successfully" })
getDiscountById(@Param() paramDto: ParamDto) {
return this.discountsService.getDiscountById(paramDto.id);
}
@ApiOperation({ summary: "Toggle discount status" })
@AdminRoute()
@PermissionsDec(PermissionEnum.DISCOUNTS)
@Post(":id/toggle-status")
toggleDiscountStatus(@Param() paramDto: ParamDto) {
return this.discountsService.toggleDiscountStatus(paramDto.id);
}
@ApiOperation({ summary: "Delete discount" })
@AdminRoute()
@PermissionsDec(PermissionEnum.DISCOUNTS)
@Delete(":id")
deleteDiscount(@Param() paramDto: ParamDto) {
return this.discountsService.softDeleteDiscount(paramDto.id);
}
@ApiOperation({ summary: "Update discount" })
@AdminRoute()
@PermissionsDec(PermissionEnum.DISCOUNTS)
@Patch(":id")
updateDiscount(@Param() paramDto: ParamDto, @Body() updateDiscountDto: UpdateDiscountDto) {
return this.discountsService.updateDiscount(paramDto.id, updateDiscountDto);
}
}
@@ -70,6 +70,20 @@ export class DiscountsService {
return this.discountRepository.findById(id);
}
//************************************ */
async toggleDiscountStatus(id: string) {
const discount = await this.discountRepository.findById(id);
if (!discount) throw new BadRequestException(DiscountMessage.NOT_FOUND);
discount.isActive = !discount.isActive;
await this.discountRepository.save(discount);
return {
message: DiscountMessage.UPDATED,
discount,
};
}
//************************************ */
async updateDiscount(id: string, updateDiscountDto: UpdateDiscountDto) {
const queryRunner = this.dataSource.createQueryRunner();
@@ -14,7 +14,10 @@ export class DiscountRepository extends Repository<Discount> {
async findById(id: string) {
return this.findOne({
where: { id, isActive: true },
where: { id },
relations: {
subscriptionPlans: true,
},
withDeleted: false,
});
}