add maxCataloguesCount

This commit is contained in:
2026-03-15 14:15:03 +03:30
parent 6002774400
commit 98916399c4
2 changed files with 24 additions and 28 deletions
@@ -778,8 +778,7 @@ export class InvoicesService {
queryRunner = this.dataSource.createQueryRunner(),
) {
let transactionStarted = false;
try {
try {
if (!queryRunner.isTransactionActive) {
await queryRunner.connect();
await queryRunner.startTransaction();
@@ -805,23 +804,22 @@ export class InvoicesService {
const userSubscription = invoice.items[0].subscriptionPlan;
const invoiceItem = invoice.items[0];
// Check if this is an upgrade (subscription is ACTIVE and plan in invoice differs from current plan)
const purpose = invoice.purpose
if (purpose == InvoicePurpose.UPGRADE) {
// This is an upgrade - update subscription with the new plan
const upgradePlan = invoiceItem.plan!;
const diffrence = upgradePlan.duration - userSubscription.plan.duration
if (diffrence > 0) {
userSubscription.endDate = dayjs(userSubscription.endDate).add(diffrence, "day").toDate();
}
this.logger.log(`Subscription ${userSubscription.id} upgraded to plan ${upgradePlan.name}`);
userSubscription.plan = upgradePlan;
await this.scheduleNextRenewalJob(userSubscription);
// Call external API for dmenu service upgrades
@@ -901,29 +899,31 @@ export class InvoicesService {
}
} else if (purpose == InvoicePurpose.NEW) {
userSubscription.status = SubscriptionStatus.ACTIVE;
await this.scheduleNextRenewalJob(userSubscription);
this.logger.log(`Subscription ${userSubscription.id} activated `);
console.log('hi-1')
if (userSubscription.plan.service.slug?.toLowerCase().includes('dpage')) {
try {
this.logger.log(`Calling external API for dpage setup: subscription ${userSubscription.id}`);
console.log('userSubscription.plan.count',userSubscription.plan.count)
await this.dpageService.setupDpageAccount({
danakSubscriptionId:userSubscription.id,
danakSubscriptionId: userSubscription.id,
name: userSubscription.businessName,
slug: randomInt(100_000,1_000_000).toString(),
phone: userSubscription.user.phone,
firstName: userSubscription.user.firstName,
lastName: userSubscription.user.lastName
} );
slug: randomInt(100_000, 1_000_000).toString(),
phone: user.phone,
firstName: user.firstName,
lastName: user.lastName,
maxCataloguesCount: userSubscription.plan.count ?? 0
});
this.logger.log(`External API call completed for dpage setup account: subscription ${userSubscription.id}`);
} catch (error) {
this.logger.error(`Failed to call external API for dpage setup account: ${error instanceof Error ? error.message : 'Unknown error'}`);
// Don't fail the transaction if external API call fails
}
}
userSubscription.status = SubscriptionStatus.ACTIVE;
await this.scheduleNextRenewalJob(userSubscription);
this.logger.log(`Subscription ${userSubscription.id} activated `);
}
// if serivce is dmenu for renew or upgrade it must call dmenu api
//
await queryRunner.manager.save(UserSubscription, userSubscription);
await this.walletsService.createSubscriptionTransaction(invoice.totalPrice, userWallet.id, queryRunner);
await this.addNotifyForWalletDeduction(invoice, user, userWallet, WalletMessage.SUBSCRIPTION_WALLET_TRANSFER);
@@ -1021,7 +1021,9 @@ export class InvoicesService {
relations: {
items: {
subscriptionPlan: {
plan: true,
plan: {
service: true
}
},
plan: {
service: true