order and payment notifs
This commit is contained in:
@@ -5,6 +5,7 @@ export class OrderCreatedEvent {
|
|||||||
public readonly orderId: string,
|
public readonly orderId: string,
|
||||||
public readonly restaurantId: string,
|
public readonly restaurantId: string,
|
||||||
public readonly orderNumber: string,
|
public readonly orderNumber: string,
|
||||||
|
public readonly total: number,
|
||||||
) {}
|
) {}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -13,13 +13,15 @@ import { OrderStatus } from '../interface/order.interface';
|
|||||||
export class OrderListeners {
|
export class OrderListeners {
|
||||||
private readonly logger = new Logger(OrderListeners.name);
|
private readonly logger = new Logger(OrderListeners.name);
|
||||||
private orderCreatedSmsTemplateId: string;
|
private orderCreatedSmsTemplateId: string;
|
||||||
|
private orderStatusChangedSmsTemplateId: string;
|
||||||
constructor(
|
constructor(
|
||||||
private readonly adminService: AdminRepository,
|
private readonly adminService: AdminRepository,
|
||||||
private readonly OrderRepository: OrderRepository,
|
private readonly OrderRepository: OrderRepository,
|
||||||
private readonly notificationService: NotificationService,
|
private readonly notificationService: NotificationService,
|
||||||
private readonly configService: ConfigService,
|
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)
|
@OnEvent(OrderCreatedEvent.name)
|
||||||
@@ -37,20 +39,21 @@ export class OrderListeners {
|
|||||||
restaurantId: event.restaurantId,
|
restaurantId: event.restaurantId,
|
||||||
message: {
|
message: {
|
||||||
title: NotifTitleEnum.ORDER_CREATED,
|
title: NotifTitleEnum.ORDER_CREATED,
|
||||||
content: `Order ${event.orderNumber} has been created successfully`,
|
content: `Order ${event.orderNumber} with ${event.total} has been created successfully`,
|
||||||
sms: {
|
sms: {
|
||||||
templateId: this.orderCreatedSmsTemplateId,
|
templateId: this.orderCreatedSmsTemplateId,
|
||||||
parameters: {
|
parameters: {
|
||||||
orderNumber: event.orderNumber,
|
orderNumber: event.orderNumber,
|
||||||
|
total: event.total.toString(),
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
pushNotif: {
|
pushNotif: {
|
||||||
title: `Order ${event.orderNumber} has been created successfully`,
|
title: `Order ${event.orderNumber} with ${event.total} has been created successfully`,
|
||||||
content: `Order ${event.orderNumber} has been created successfully`,
|
content: `Order ${event.orderNumber} with ${event.total} has been created successfully`,
|
||||||
icon: `Order ${event.orderNumber} has been created successfully`,
|
icon: `/`,
|
||||||
action: {
|
action: {
|
||||||
type: `Order ${event.orderNumber} has been created successfully`,
|
type: NotifTitleEnum.ORDER_CREATED,
|
||||||
url: `Order ${event.orderNumber} has been created successfully`,
|
url: `/`,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@@ -90,7 +93,26 @@ export class OrderListeners {
|
|||||||
];
|
];
|
||||||
await this.notificationService.sendNotification({
|
await this.notificationService.sendNotification({
|
||||||
restaurantId: event.restaurantId,
|
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,
|
recipients,
|
||||||
metadata: {
|
metadata: {
|
||||||
priority: 1,
|
priority: 1,
|
||||||
|
|||||||
@@ -133,7 +133,7 @@ export class OrdersService {
|
|||||||
const { paymentUrl } = await this.paymentsService.payOrder(order.id);
|
const { paymentUrl } = await this.paymentsService.payOrder(order.id);
|
||||||
this.eventEmitter.emit(
|
this.eventEmitter.emit(
|
||||||
OrderCreatedEvent.name,
|
OrderCreatedEvent.name,
|
||||||
new OrderCreatedEvent(order.id, restaurantId, String(order?.orderNumber) || ''),
|
new OrderCreatedEvent(order.id, restaurantId, String(order?.orderNumber) || '', order.total),
|
||||||
);
|
);
|
||||||
|
|
||||||
return { paymentUrl, order };
|
return { paymentUrl, order };
|
||||||
|
|||||||
@@ -1,8 +1,12 @@
|
|||||||
|
import { PaymentMethodEnum } from "../interface/payment";
|
||||||
|
|
||||||
export class paymentSucceedEvent {
|
export class paymentSucceedEvent {
|
||||||
constructor(
|
constructor(
|
||||||
public readonly orderId: string,
|
public readonly orderId: string,
|
||||||
public readonly restaurantId: string,
|
public readonly restaurantId: string,
|
||||||
public readonly orderNumber: string,
|
public readonly orderNumber: string,
|
||||||
|
public readonly paymentMethod: PaymentMethodEnum,
|
||||||
|
public readonly total:number
|
||||||
) {}
|
) {}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -10,14 +10,14 @@ import { ConfigService } from '@nestjs/config';
|
|||||||
@Injectable()
|
@Injectable()
|
||||||
export class OrderListeners {
|
export class OrderListeners {
|
||||||
private readonly logger = new Logger(OrderListeners.name);
|
private readonly logger = new Logger(OrderListeners.name);
|
||||||
private orderCreatedSmsTemplateId: string;
|
private paymentSuccessSmsTemplateId: string;
|
||||||
constructor(
|
constructor(
|
||||||
private readonly adminService: AdminRepository,
|
private readonly adminService: AdminRepository,
|
||||||
private readonly notificationService: NotificationService,
|
private readonly notificationService: NotificationService,
|
||||||
private readonly configService: ConfigService,
|
private readonly configService: ConfigService,
|
||||||
// private readonly orderSer
|
// 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)
|
@OnEvent(paymentSucceedEvent.name)
|
||||||
@@ -35,21 +35,21 @@ export class OrderListeners {
|
|||||||
await this.notificationService.sendNotification({
|
await this.notificationService.sendNotification({
|
||||||
restaurantId: event.restaurantId,
|
restaurantId: event.restaurantId,
|
||||||
message: {
|
message: {
|
||||||
title: NotifTitleEnum.ORDER_CREATED,
|
title: NotifTitleEnum.PAYMENT_SUCCESS,
|
||||||
content: `payment order #${event.orderNumber} has been paid successfully`,
|
content: `payment order #${event.orderNumber} has been paid successfully with ${event.paymentMethod} method and total amount of ${event.total}`,
|
||||||
sms: {
|
sms: {
|
||||||
templateId: this.orderCreatedSmsTemplateId,
|
templateId: this.paymentSuccessSmsTemplateId,
|
||||||
parameters: {
|
parameters: {
|
||||||
orderNumber: event.orderNumber,
|
orderNumber: event.orderNumber,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
pushNotif: {
|
pushNotif: {
|
||||||
title: `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`,
|
content: `Payment Order ${event.orderNumber} has been paid successfully with ${event.paymentMethod} method and total amount of ${event.total} `,
|
||||||
icon: `Payment Order ${event.orderNumber} has been paid successfully`,
|
icon: ``,
|
||||||
action: {
|
action: {
|
||||||
type: `Payment Order ${event.orderNumber} has been paid successfully`,
|
type: NotifTitleEnum.PAYMENT_SUCCESS,
|
||||||
url: `Payment Order ${event.orderNumber} has been paid successfully`,
|
url: `/`,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|||||||
Reference in New Issue
Block a user