add : remove subscription
This commit is contained in:
@@ -528,6 +528,7 @@ export const enum SubscriptionMessage {
|
||||
SERVICE_MISMATCH = "سرویس پلن فعلی با سرویس پلن جدید متفاوت است",
|
||||
UPGRADE_TO_LOWER_OR_EQUAL_PLAN_NOT_ALLOWED = "ارتقا به پلن با قیمت کمتر یا برابر مجاز نیست",
|
||||
SUBSCRIPTION_EXPIRED_CANNOT_UPGRADE = "اشتراک منقضی شده و قابل ارتقا نیست",
|
||||
SUBSCRIPTION_DELETED="اشتراک با موفقیت حذف شد"
|
||||
}
|
||||
|
||||
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 { BaseEntity } from "../../../common/entities/base.entity";
|
||||
@@ -37,4 +37,7 @@ export class UserSubscription extends BaseEntity {
|
||||
@ManyToMany(() => User)
|
||||
@JoinTable()
|
||||
staff: User[];
|
||||
|
||||
@DeleteDateColumn({ nullable: true })
|
||||
deletedAt?: Date;
|
||||
}
|
||||
|
||||
@@ -288,7 +288,7 @@ export class SubscriptionsService {
|
||||
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);
|
||||
|
||||
let staff: User[] = [];
|
||||
@@ -309,7 +309,7 @@ export class SubscriptionsService {
|
||||
await queryRunner.manager.save(UserSubscription, userSubscription);
|
||||
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;
|
||||
|
||||
await queryRunner.manager.save(UserSubscription, userSubscription);
|
||||
@@ -367,7 +367,7 @@ export class SubscriptionsService {
|
||||
|
||||
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;
|
||||
|
||||
@@ -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,
|
||||
) {}
|
||||
|
||||
@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" })
|
||||
@PermissionsDec(PermissionEnum.SERVICES)
|
||||
@Post()
|
||||
|
||||
Reference in New Issue
Block a user