add : remove subscription
This commit is contained in:
@@ -528,6 +528,7 @@ export const enum SubscriptionMessage {
|
|||||||
SERVICE_MISMATCH = "سرویس پلن فعلی با سرویس پلن جدید متفاوت است",
|
SERVICE_MISMATCH = "سرویس پلن فعلی با سرویس پلن جدید متفاوت است",
|
||||||
UPGRADE_TO_LOWER_OR_EQUAL_PLAN_NOT_ALLOWED = "ارتقا به پلن با قیمت کمتر یا برابر مجاز نیست",
|
UPGRADE_TO_LOWER_OR_EQUAL_PLAN_NOT_ALLOWED = "ارتقا به پلن با قیمت کمتر یا برابر مجاز نیست",
|
||||||
SUBSCRIPTION_EXPIRED_CANNOT_UPGRADE = "اشتراک منقضی شده و قابل ارتقا نیست",
|
SUBSCRIPTION_EXPIRED_CANNOT_UPGRADE = "اشتراک منقضی شده و قابل ارتقا نیست",
|
||||||
|
SUBSCRIPTION_DELETED="اشتراک با موفقیت حذف شد"
|
||||||
}
|
}
|
||||||
|
|
||||||
export const enum InvoiceMessage {
|
export const enum InvoiceMessage {
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import { Column, Entity, JoinTable, ManyToMany, ManyToOne } from "typeorm";
|
import { Column, DeleteDateColumn, Entity, JoinTable, ManyToMany, ManyToOne } from "typeorm";
|
||||||
|
|
||||||
import { SubscriptionPlan } from "./subscription.entity";
|
import { SubscriptionPlan } from "./subscription.entity";
|
||||||
import { BaseEntity } from "../../../common/entities/base.entity";
|
import { BaseEntity } from "../../../common/entities/base.entity";
|
||||||
@@ -37,4 +37,7 @@ export class UserSubscription extends BaseEntity {
|
|||||||
@ManyToMany(() => User)
|
@ManyToMany(() => User)
|
||||||
@JoinTable()
|
@JoinTable()
|
||||||
staff: User[];
|
staff: User[];
|
||||||
|
|
||||||
|
@DeleteDateColumn({ nullable: true })
|
||||||
|
deletedAt?: Date;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -288,7 +288,7 @@ export class SubscriptionsService {
|
|||||||
slug = slugify(subscribeDto.businessName, { lower: true, strict: true });
|
slug = slugify(subscribeDto.businessName, { lower: true, strict: true });
|
||||||
}
|
}
|
||||||
|
|
||||||
const existingSlug = await queryRunner.manager.findOne(UserSubscription, { where: { slug } });
|
const existingSlug = await queryRunner.manager.findOne(UserSubscription, { where: { slug, deletedAt: undefined } });
|
||||||
if (existingSlug) throw new BadRequestException(SubscriptionMessage.SLUG_EXISTS);
|
if (existingSlug) throw new BadRequestException(SubscriptionMessage.SLUG_EXISTS);
|
||||||
|
|
||||||
let staff: User[] = [];
|
let staff: User[] = [];
|
||||||
@@ -309,7 +309,7 @@ export class SubscriptionsService {
|
|||||||
await queryRunner.manager.save(UserSubscription, userSubscription);
|
await queryRunner.manager.save(UserSubscription, userSubscription);
|
||||||
const invoiceDueDate = dayjs(userSubscription.startDate).add(INVOICE.DUEDATE, "day").toDate();
|
const invoiceDueDate = dayjs(userSubscription.startDate).add(INVOICE.DUEDATE, "day").toDate();
|
||||||
|
|
||||||
const invoice = await this.invoicesService.createInvoiceForSubscription(user, plan, userSubscription, invoiceDueDate, queryRunner,InvoicePurpose.NEW);
|
const invoice = await this.invoicesService.createInvoiceForSubscription(user, plan, userSubscription, invoiceDueDate, queryRunner, InvoicePurpose.NEW);
|
||||||
userSubscription.status = SubscriptionStatus.INACTIVE;
|
userSubscription.status = SubscriptionStatus.INACTIVE;
|
||||||
|
|
||||||
await queryRunner.manager.save(UserSubscription, userSubscription);
|
await queryRunner.manager.save(UserSubscription, userSubscription);
|
||||||
@@ -367,7 +367,7 @@ export class SubscriptionsService {
|
|||||||
|
|
||||||
const invoiceDueDate = dayjs().add(INVOICE.DUEDATE, "day").toDate();
|
const invoiceDueDate = dayjs().add(INVOICE.DUEDATE, "day").toDate();
|
||||||
|
|
||||||
const invoice = await this.invoicesService.createInvoiceForSubscription(user, plan, userSubscription, invoiceDueDate, queryRunner,InvoicePurpose.RENEW);
|
const invoice = await this.invoicesService.createInvoiceForSubscription(user, plan, userSubscription, invoiceDueDate, queryRunner, InvoicePurpose.RENEW);
|
||||||
|
|
||||||
// userSubscription.plan = plan;
|
// userSubscription.plan = plan;
|
||||||
|
|
||||||
@@ -689,4 +689,15 @@ export class SubscriptionsService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
//************************************ */
|
//************************************ */
|
||||||
|
|
||||||
|
async softDeleteUSerSubscription(userSubscriptionId: string) {
|
||||||
|
const usersubscription = await this.userSubscriptionsRepository.findOne({ where: { id: userSubscriptionId } })
|
||||||
|
if (!usersubscription) {
|
||||||
|
throw new BadRequestException(SubscriptionMessage.NOT_FOUND)
|
||||||
|
}
|
||||||
|
await this.userSubscriptionsRepository.softDelete(userSubscriptionId)
|
||||||
|
return {
|
||||||
|
message: SubscriptionMessage.SUBSCRIPTION_DELETED
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -29,6 +29,13 @@ export class SubscriptionsController {
|
|||||||
private readonly userQuickAccessService: UserQuickAccessService,
|
private readonly userQuickAccessService: UserQuickAccessService,
|
||||||
) {}
|
) {}
|
||||||
|
|
||||||
|
@ApiOperation({ summary: "Delete subscription " })
|
||||||
|
@PermissionsDec(PermissionEnum.SERVICES)
|
||||||
|
@Post(':id')
|
||||||
|
deleteSubscription(@Param('id') id :string) {
|
||||||
|
return this.subscriptionService.softDeleteUSerSubscription(id);
|
||||||
|
}
|
||||||
|
|
||||||
@ApiOperation({ summary: "Create a subscription plan" })
|
@ApiOperation({ summary: "Create a subscription plan" })
|
||||||
@PermissionsDec(PermissionEnum.SERVICES)
|
@PermissionsDec(PermissionEnum.SERVICES)
|
||||||
@Post()
|
@Post()
|
||||||
|
|||||||
Reference in New Issue
Block a user