order and payment notifs
This commit is contained in:
@@ -5,6 +5,7 @@ export class OrderCreatedEvent {
|
||||
public readonly orderId: string,
|
||||
public readonly restaurantId: string,
|
||||
public readonly orderNumber: string,
|
||||
public readonly total: number,
|
||||
) {}
|
||||
}
|
||||
|
||||
|
||||
@@ -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<string>('ORDER_CREATED_SMS_TEMPLATE_ID') ?? '123';
|
||||
this.orderCreatedSmsTemplateId = this.configService.get<string>('SMS_PATTERN_ORDER_CREATED') ?? '123';
|
||||
this.orderStatusChangedSmsTemplateId = this.configService.get<string>('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,
|
||||
|
||||
@@ -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 };
|
||||
|
||||
@@ -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
|
||||
) {}
|
||||
}
|
||||
|
||||
|
||||
@@ -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<string>('ORDER_CREATED_SMS_TEMPLATE_ID') ?? '123';
|
||||
this.paymentSuccessSmsTemplateId = this.configService.get<string>('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: `/`,
|
||||
},
|
||||
},
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user