diff --git a/src/modules/orders/events/order.events.ts b/src/modules/orders/events/order.events.ts index 01f59b8..5348149 100644 --- a/src/modules/orders/events/order.events.ts +++ b/src/modules/orders/events/order.events.ts @@ -5,6 +5,7 @@ export class OrderCreatedEvent { public readonly orderId: string, public readonly restaurantId: string, public readonly orderNumber: string, + public readonly total: number, ) {} } diff --git a/src/modules/orders/listeners/order.listeners.ts b/src/modules/orders/listeners/order.listeners.ts index 87c0b8c..5a48a2b 100644 --- a/src/modules/orders/listeners/order.listeners.ts +++ b/src/modules/orders/listeners/order.listeners.ts @@ -13,13 +13,15 @@ import { OrderStatus } from '../interface/order.interface'; export class OrderListeners { private readonly logger = new Logger(OrderListeners.name); private orderCreatedSmsTemplateId: string; + private orderStatusChangedSmsTemplateId: string; constructor( private readonly adminService: AdminRepository, private readonly OrderRepository: OrderRepository, private readonly notificationService: NotificationService, private readonly configService: ConfigService, ) { - this.orderCreatedSmsTemplateId = this.configService.get('ORDER_CREATED_SMS_TEMPLATE_ID') ?? '123'; + this.orderCreatedSmsTemplateId = this.configService.get('SMS_PATTERN_ORDER_CREATED') ?? '123'; + this.orderStatusChangedSmsTemplateId = this.configService.get('SMS_PATTERN_ORDER_STATUS_CHANGE') ?? '123'; } @OnEvent(OrderCreatedEvent.name) @@ -37,20 +39,21 @@ export class OrderListeners { restaurantId: event.restaurantId, message: { title: NotifTitleEnum.ORDER_CREATED, - content: `Order ${event.orderNumber} has been created successfully`, + content: `Order ${event.orderNumber} with ${event.total} has been created successfully`, sms: { templateId: this.orderCreatedSmsTemplateId, parameters: { orderNumber: event.orderNumber, + total: event.total.toString(), }, }, pushNotif: { - title: `Order ${event.orderNumber} has been created successfully`, - content: `Order ${event.orderNumber} has been created successfully`, - icon: `Order ${event.orderNumber} has been created successfully`, + title: `Order ${event.orderNumber} with ${event.total} has been created successfully`, + content: `Order ${event.orderNumber} with ${event.total} has been created successfully`, + icon: `/`, action: { - type: `Order ${event.orderNumber} has been created successfully`, - url: `Order ${event.orderNumber} has been created successfully`, + type: NotifTitleEnum.ORDER_CREATED, + url: `/`, }, }, }, @@ -90,7 +93,26 @@ export class OrderListeners { ]; await this.notificationService.sendNotification({ restaurantId: event.restaurantId, - message: this.factory(event.newStatus, event)?.message, + message: { + title: NotifTitleEnum.ORDER_STATUS_CHANGED, + content: `Order #${event.orderNumber} status is changed to ${event.newStatus} .`, + sms: { + templateId: this.orderStatusChangedSmsTemplateId, + parameters: { + orderNumber: event.orderNumber, + status: event.newStatus, + }, + }, + pushNotif: { + title: `Order #${event.orderNumber} status is changed to ${event.newStatus} .`, + content: `Order #${event.orderNumber} status is changed to ${event.newStatus} .`, + icon: `/`, + action: { + type: NotifTitleEnum.ORDER_STATUS_CHANGED, + url: ``, + }, + }, + }, recipients, metadata: { priority: 1, diff --git a/src/modules/orders/providers/orders.service.ts b/src/modules/orders/providers/orders.service.ts index 1de2227..44a2252 100644 --- a/src/modules/orders/providers/orders.service.ts +++ b/src/modules/orders/providers/orders.service.ts @@ -56,7 +56,7 @@ export class OrdersService { private readonly paymentsService: PaymentsService, private readonly inventoryService: InventoryService, private readonly eventEmitter: EventEmitter2, - ) {} + ) { } async checkout(userId: string, restaurantId: string) { const cart = await this.cartService.findOneOrFail(userId, restaurantId); @@ -133,7 +133,7 @@ export class OrdersService { const { paymentUrl } = await this.paymentsService.payOrder(order.id); this.eventEmitter.emit( OrderCreatedEvent.name, - new OrderCreatedEvent(order.id, restaurantId, String(order?.orderNumber) || ''), + new OrderCreatedEvent(order.id, restaurantId, String(order?.orderNumber) || '', order.total), ); return { paymentUrl, order }; diff --git a/src/modules/payments/events/payment.events.ts b/src/modules/payments/events/payment.events.ts index 41b3d1a..ccb8b2e 100644 --- a/src/modules/payments/events/payment.events.ts +++ b/src/modules/payments/events/payment.events.ts @@ -1,8 +1,12 @@ +import { PaymentMethodEnum } from "../interface/payment"; + export class paymentSucceedEvent { constructor( public readonly orderId: string, public readonly restaurantId: string, public readonly orderNumber: string, + public readonly paymentMethod: PaymentMethodEnum, + public readonly total:number ) {} } diff --git a/src/modules/payments/listeners/payment.listeners.ts b/src/modules/payments/listeners/payment.listeners.ts index a6faf77..658f2d8 100644 --- a/src/modules/payments/listeners/payment.listeners.ts +++ b/src/modules/payments/listeners/payment.listeners.ts @@ -10,14 +10,14 @@ import { ConfigService } from '@nestjs/config'; @Injectable() export class OrderListeners { private readonly logger = new Logger(OrderListeners.name); - private orderCreatedSmsTemplateId: string; + private paymentSuccessSmsTemplateId: string; constructor( private readonly adminService: AdminRepository, private readonly notificationService: NotificationService, private readonly configService: ConfigService, // private readonly orderSer ) { - this.orderCreatedSmsTemplateId = this.configService.get('ORDER_CREATED_SMS_TEMPLATE_ID') ?? '123'; + this.paymentSuccessSmsTemplateId = this.configService.get('SMS_PATTERN_PAYMENT_SUCCESS') ?? '123'; } @OnEvent(paymentSucceedEvent.name) @@ -35,21 +35,21 @@ export class OrderListeners { await this.notificationService.sendNotification({ restaurantId: event.restaurantId, message: { - title: NotifTitleEnum.ORDER_CREATED, - content: `payment order #${event.orderNumber} has been paid successfully`, + title: NotifTitleEnum.PAYMENT_SUCCESS, + content: `payment order #${event.orderNumber} has been paid successfully with ${event.paymentMethod} method and total amount of ${event.total}`, sms: { - templateId: this.orderCreatedSmsTemplateId, + templateId: this.paymentSuccessSmsTemplateId, parameters: { orderNumber: event.orderNumber, }, }, pushNotif: { - title: `Payment Order ${event.orderNumber} has been paid successfully`, - content: `Payment Order ${event.orderNumber} has been paid successfully`, - icon: `Payment Order ${event.orderNumber} has been paid successfully`, + title: `Payment Order ${event.orderNumber} has been paid successfully with ${event.paymentMethod} method and total amount of ${event.total} `, + content: `Payment Order ${event.orderNumber} has been paid successfully with ${event.paymentMethod} method and total amount of ${event.total} `, + icon: ``, action: { - type: `Payment Order ${event.orderNumber} has been paid successfully`, - url: `Payment Order ${event.orderNumber} has been paid successfully`, + type: NotifTitleEnum.PAYMENT_SUCCESS, + url: `/`, }, }, },