chore: complete the discount service and test the logic to create

This commit is contained in:
mahyargdz
2025-04-19 10:55:13 +03:30
parent d198800362
commit c42f43ee95
13 changed files with 239 additions and 137 deletions
@@ -6,7 +6,7 @@ import { UserSubscription } from "./user-subscription.entity";
import { BaseEntity } from "../../../common/entities/base.entity";
import { DecimalTransformer } from "../../../common/transformers/decimal.transformer";
import { DanakService } from "../../danak-services/entities/danak-service.entity";
import { DirectDiscount } from "../../discounts/entities/direct-discount.entity";
import { Discount } from "../../discounts/entities/discount.entity";
@Entity()
@Index(["service", "name"], { unique: true })
@@ -29,8 +29,8 @@ export class SubscriptionPlan extends BaseEntity {
@OneToMany(() => UserSubscription, (userSubscription) => userSubscription.plan)
userSubscriptions: UserSubscription[];
@ManyToOne(() => DirectDiscount, (directDiscount) => directDiscount.subscriptionPlans, { nullable: true })
directDiscount?: DirectDiscount;
@ManyToOne(() => Discount, (discount) => discount.subscriptionPlans, { nullable: true })
directDiscount?: Discount;
@DeleteDateColumn({ nullable: true })
deletedAt?: Date;
@@ -2,7 +2,7 @@ import { BadRequestException, Injectable } from "@nestjs/common";
import dayjs from "dayjs";
// eslint-disable-next-line import/no-named-as-default
import Decimal from "decimal.js";
import { DataSource, In, Not } from "typeorm";
import { DataSource, In, Not, QueryRunner } from "typeorm";
import { ServiceMessage, SubscriptionMessage } from "../../../common/enums/message.enum";
import { DanakServicesService } from "../../danak-services/providers/danak-services.service";
@@ -269,9 +269,10 @@ export class SubscriptionsService {
}
//************************************ */
async getAllServiceSubscriptions(serviceIds: string[]) {
const subscriptions = await this.subscriptionsPlanRepository.find({
async getAllServiceSubscriptions(serviceIds: string[], queryRunner: QueryRunner) {
const subscriptions = await queryRunner.manager.find(this.subscriptionsPlanRepository.target, {
where: { service: { id: In(serviceIds) }, isActive: true },
relations: { directDiscount: true, service: true },
});
return subscriptions;
}