chore: add wallet deduct notification

This commit is contained in:
Mahyargdz
2025-05-11 16:06:14 +03:30
parent e7c3d8105f
commit e8402b673f
2 changed files with 19 additions and 0 deletions
@@ -549,6 +549,7 @@ export class InvoicesService {
// //
await queryRunner.manager.save(UserSubscription, userSubscription); await queryRunner.manager.save(UserSubscription, userSubscription);
await this.walletsService.createSubscriptionTransaction(invoice.totalPrice, userWallet.id, queryRunner); await this.walletsService.createSubscriptionTransaction(invoice.totalPrice, userWallet.id, queryRunner);
await this.addNotifyForWalletDeduction(invoice, user, userWallet, WalletMessage.SUBSCRIPTION_WALLET_TRANSFER);
await this.addNotifyAdminForSubscriptionPaymentToQueue(invoice); await this.addNotifyAdminForSubscriptionPaymentToQueue(invoice);
// //
} else if (invoice.items[0]?.supportPlan) { } else if (invoice.items[0]?.supportPlan) {
@@ -565,8 +566,11 @@ export class InvoicesService {
await queryRunner.manager.save(UserSupportPlan, userSupportPlan); await queryRunner.manager.save(UserSupportPlan, userSupportPlan);
await this.walletsService.createSupportPlanTransaction(invoice.totalPrice, userWallet.id, queryRunner); await this.walletsService.createSupportPlanTransaction(invoice.totalPrice, userWallet.id, queryRunner);
await this.addNotifyForWalletDeduction(invoice, user, userWallet, WalletMessage.SUPPORT_PLAN_WALLET_TRANSFER);
//
} else { } else {
await this.walletsService.createInvoiceTransaction(invoice.totalPrice, userWallet.id, queryRunner); await this.walletsService.createInvoiceTransaction(invoice.totalPrice, userWallet.id, queryRunner);
await this.addNotifyForWalletDeduction(invoice, user, userWallet, WalletMessage.INVOICE_WALLET_TRANSFER);
} }
invoice.status = InvoiceStatus.PAID; invoice.status = InvoiceStatus.PAID;
invoice.paidAt = dayjs().toDate(); invoice.paidAt = dayjs().toDate();
@@ -809,4 +813,16 @@ export class InvoicesService {
}, },
); );
} }
//*********************************** */
private async addNotifyForWalletDeduction(invoice: Invoice, user: User, userWallet: Wallet, reason: string) {
await this.notificationQueue.addWalletDeductionNotification(user.id, {
amount: invoice.totalPrice.toNumber(),
balance: userWallet.balance.toNumber(),
reason,
date: dayjs().toDate(),
userPhone: user.phone,
userEmail: user.email,
});
}
} }
@@ -78,6 +78,8 @@ export class NotificationQueue {
await this.addNotificationJob(NotifType.CREATE_INVOICE, recipientId, data); await this.addNotificationJob(NotifType.CREATE_INVOICE, recipientId, data);
} }
//TODO:USE THIS
async addAnnouncementNotification(recipientId: string, data: IAnnouncementNotificationData) { async addAnnouncementNotification(recipientId: string, data: IAnnouncementNotificationData) {
await this.addNotificationJob(NotifType.ANNOUNCEMENT, recipientId, data); await this.addNotificationJob(NotifType.ANNOUNCEMENT, recipientId, data);
} }
@@ -85,6 +87,7 @@ export class NotificationQueue {
async addWalletChargeNotification(recipientId: string, data: IWalletNotificationData) { async addWalletChargeNotification(recipientId: string, data: IWalletNotificationData) {
await this.addNotificationJob(NotifType.WALLET_CHARGE, recipientId, data); await this.addNotificationJob(NotifType.WALLET_CHARGE, recipientId, data);
} }
//TODO:USER THIS
async addWalletDeductionNotification(recipientId: string, data: IWalletNotificationData) { async addWalletDeductionNotification(recipientId: string, data: IWalletNotificationData) {
await this.addNotificationJob(NotifType.WALLET_DEDUCTION, recipientId, data); await this.addNotificationJob(NotifType.WALLET_DEDUCTION, recipientId, data);