chore: add discount logic to apply to the plan price and ...
This commit is contained in:
@@ -2,9 +2,11 @@ import { randomBytes } from "node:crypto";
|
||||
|
||||
import { BadRequestException, Injectable } from "@nestjs/common";
|
||||
import dayjs from "dayjs";
|
||||
import { Decimal } from "decimal.js";
|
||||
import { DataSource, QueryRunner } from "typeorm";
|
||||
|
||||
import { DiscountMessage } from "../../../common/enums/message.enum";
|
||||
import { SubscriptionPlan } from "../../subscriptions/entities/subscription.entity";
|
||||
import { SubscriptionsService } from "../../subscriptions/providers/subscriptions.service";
|
||||
import { CreateDiscountDto } from "../DTO/create-discount.dto";
|
||||
import { SearchDiscountQueryDto } from "../DTO/search-discount-query.dto";
|
||||
@@ -142,6 +144,7 @@ export class DiscountsService {
|
||||
|
||||
for (const subscriptionPlan of subscriptionPlans) {
|
||||
subscriptionPlan.directDiscount = discount;
|
||||
await this.updatePlanPrice(subscriptionPlan, discount);
|
||||
await queryRunner.manager.save(subscriptionPlan);
|
||||
}
|
||||
|
||||
@@ -232,9 +235,22 @@ export class DiscountsService {
|
||||
|
||||
for (const subscriptionPlan of subscriptionPlans) {
|
||||
subscriptionPlan.directDiscount = discount;
|
||||
await this.updatePlanPrice(subscriptionPlan, discount);
|
||||
await queryRunner.manager.save(subscriptionPlan);
|
||||
}
|
||||
|
||||
await queryRunner.manager.save(discount);
|
||||
}
|
||||
//************************************ */
|
||||
private async updatePlanPrice(subscriptionPlan: SubscriptionPlan, discount: Discount) {
|
||||
if (!subscriptionPlan.originalPrice) subscriptionPlan.originalPrice = new Decimal(subscriptionPlan.price);
|
||||
|
||||
let discountAmount: Decimal;
|
||||
if (discount.type === DiscountType.PERCENTAGE) {
|
||||
discountAmount = subscriptionPlan.originalPrice.mul(discount.value).div(100);
|
||||
} else {
|
||||
discountAmount = new Decimal(discount.value);
|
||||
}
|
||||
subscriptionPlan.price = subscriptionPlan.originalPrice.sub(discountAmount);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user