notification
This commit is contained in:
@@ -4,7 +4,7 @@ import { CommonMessage, CriticismMessage } from '../../../common/enums/message.e
|
|||||||
import { NotificationQueueService } from '../../notification/services/notification-queue.service';
|
import { NotificationQueueService } from '../../notification/services/notification-queue.service';
|
||||||
import { AdminRepository } from '../../admin/repositories/admin.repository';
|
import { AdminRepository } from '../../admin/repositories/admin.repository';
|
||||||
import { PermissionEnum } from '../../../common/enums/permission.enum';
|
import { PermissionEnum } from '../../../common/enums/permission.enum';
|
||||||
import { NotifEvent } from '../../notification/interfaces/notification.interface';
|
import { NotifTitle } from '../../notification/interfaces/notification.interface';
|
||||||
import { Notification } from '../../notification/entities/notification.entity';
|
import { Notification } from '../../notification/entities/notification.entity';
|
||||||
import { CreateCriticismDto } from '../DTO/create-criticism.dto';
|
import { CreateCriticismDto } from '../DTO/create-criticism.dto';
|
||||||
import { SearchCriticismQueryDto } from '../DTO/search-criticism-query.dto';
|
import { SearchCriticismQueryDto } from '../DTO/search-criticism-query.dto';
|
||||||
@@ -119,7 +119,7 @@ export class CriticismsService {
|
|||||||
const notifications = admins.map((admin) =>
|
const notifications = admins.map((admin) =>
|
||||||
em.create(Notification, {
|
em.create(Notification, {
|
||||||
admin,
|
admin,
|
||||||
title: NotifEvent.NEW_CRITICISM,
|
title: NotifTitle.NEW_CRITICISM,
|
||||||
content: body,
|
content: body,
|
||||||
}),
|
}),
|
||||||
);
|
);
|
||||||
@@ -129,7 +129,7 @@ export class CriticismsService {
|
|||||||
await this.notificationQueueService.addBulkInAppNotifications(
|
await this.notificationQueueService.addBulkInAppNotifications(
|
||||||
notifications.map((n) => ({
|
notifications.map((n) => ({
|
||||||
recipient: { adminId: n.admin!.id },
|
recipient: { adminId: n.admin!.id },
|
||||||
subject: NotifEvent.NEW_CRITICISM,
|
subject: NotifTitle.NEW_CRITICISM,
|
||||||
body,
|
body,
|
||||||
notificationId: n.id,
|
notificationId: n.id,
|
||||||
})),
|
})),
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
import { Entity, Property, ManyToOne, Enum, PrimaryKey, OptionalProps } from '@mikro-orm/core';
|
import { Entity, Property, ManyToOne, Enum, PrimaryKey, OptionalProps } from '@mikro-orm/core';
|
||||||
import { BaseEntity } from '../../../common/entities/base.entity';
|
import { BaseEntity } from '../../../common/entities/base.entity';
|
||||||
import { User } from '../../user/entities/user.entity';
|
import { User } from '../../user/entities/user.entity';
|
||||||
import { NotifEvent } from '../interfaces/notification.interface';
|
import { NotifTitle } from '../interfaces/notification.interface';
|
||||||
import { Admin } from 'src/modules/admin/entities/admin.entity';
|
import { Admin } from 'src/modules/admin/entities/admin.entity';
|
||||||
|
|
||||||
@Entity({ tableName: 'notifications' })
|
@Entity({ tableName: 'notifications' })
|
||||||
@@ -14,8 +14,8 @@ export class Notification extends BaseEntity {
|
|||||||
@ManyToOne(() => Admin, { nullable: true })
|
@ManyToOne(() => Admin, { nullable: true })
|
||||||
admin?: Admin;
|
admin?: Admin;
|
||||||
|
|
||||||
@Enum(() => NotifEvent)
|
@Enum(() => NotifTitle)
|
||||||
title!: NotifEvent;
|
title!: NotifTitle;
|
||||||
|
|
||||||
@Property()
|
@Property()
|
||||||
content!: string;
|
content!: string;
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import type { NotifEvent, recipientType } from './notification.interface';
|
import type { NotifTitle, recipientType } from './notification.interface';
|
||||||
|
|
||||||
export interface SmsNotificationQueueJob {
|
export interface SmsNotificationQueueJob {
|
||||||
recipient: recipientType;
|
recipient: recipientType;
|
||||||
@@ -18,7 +18,7 @@ export interface PushNotificationQueueJob {
|
|||||||
}
|
}
|
||||||
export interface InAppNotificationQueueJob {
|
export interface InAppNotificationQueueJob {
|
||||||
recipient: { adminId: string; };
|
recipient: { adminId: string; };
|
||||||
subject: NotifEvent;
|
subject: NotifTitle;
|
||||||
body: string;
|
body: string;
|
||||||
notificationId: string;
|
notificationId: string;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,18 +4,22 @@ export enum NotifChannelEnum {
|
|||||||
PUSH = 'push',
|
PUSH = 'push',
|
||||||
}
|
}
|
||||||
|
|
||||||
export enum NotifEvent {
|
export enum NotifTitle {
|
||||||
NEW_REQUEST = 'newRequest',
|
NEW_REQUEST = 'newRequest',
|
||||||
INVOICED = 'invoiced',
|
NEW_INVOICE = 'newInvoice',
|
||||||
NEW_ORDER = 'newOrder', // for chapkhane sms bere
|
NEW_PAYMENT = 'newPayment',
|
||||||
DESIGNER_ASSIGN = 'designerAssign',
|
NEW_ORDER = 'newOrder',
|
||||||
PAYMENT_SUCCESS = 'paymentSuccess',
|
|
||||||
NEW_CRITICISM = 'newCriticism',
|
NEW_CRITICISM = 'newCriticism',
|
||||||
|
NEW_TICKET = 'newTicket',
|
||||||
|
NEW_ORDER_MESSAGE = 'newOrderMessage',
|
||||||
|
NEW_REQUEST_MESSAGE = 'newRequestMessage',
|
||||||
|
NEW_REQUEST_COMMENT = 'newRequestComment',
|
||||||
|
NEW_REQUEST_LIKE = 'newRequestLike',
|
||||||
}
|
}
|
||||||
export type recipientType = { userId: string } | { adminId: string };
|
export type recipientType = { userId: string } | { adminId: string };
|
||||||
|
|
||||||
export interface NotifRequestMessage {
|
export interface NotifRequestMessage {
|
||||||
title: NotifEvent;
|
title: NotifTitle;
|
||||||
content: string;
|
content: string;
|
||||||
sms: {
|
sms: {
|
||||||
templateId: string;
|
templateId: string;
|
||||||
@@ -35,23 +39,23 @@ interface INotifySmsPayload {
|
|||||||
}
|
}
|
||||||
interface INotifySms {
|
interface INotifySms {
|
||||||
phone: string;
|
phone: string;
|
||||||
subject: NotifEvent;
|
subject: NotifTitle;
|
||||||
}
|
}
|
||||||
export interface IInAppNotificationPayload {
|
export interface IInAppNotificationPayload {
|
||||||
notificationId: string;
|
notificationId: string;
|
||||||
subject: NotifEvent;
|
subject: NotifTitle;
|
||||||
body: string;
|
body: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
// 2. Payment Success
|
// // 2. Payment Success
|
||||||
interface IPaymentSuccessSmsNotifyPayload extends INotifySmsPayload {
|
// interface IPaymentSuccessSmsNotifyPayload extends INotifySmsPayload {
|
||||||
amount: number;
|
// amount: number;
|
||||||
date: Date;
|
// date: Date;
|
||||||
}
|
// }
|
||||||
|
|
||||||
interface IPaymentSuccessSmsNotify extends INotifySms {
|
// interface IPaymentSuccessSmsNotify extends INotifySms {
|
||||||
subject: NotifEvent.PAYMENT_SUCCESS;
|
// subject: NotifEvent.PAYMENT_SUCCESS;
|
||||||
payload: IPaymentSuccessSmsNotifyPayload;
|
// payload: IPaymentSuccessSmsNotifyPayload;
|
||||||
}
|
// }
|
||||||
|
|
||||||
export type ISmsNotifyPayload = IPaymentSuccessSmsNotify;
|
// export type ISmsNotifyPayload = IPaymentSuccessSmsNotify;
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ import { EntityManager, FilterQuery } from '@mikro-orm/postgresql';
|
|||||||
import { Notification } from '../entities/notification.entity';
|
import { Notification } from '../entities/notification.entity';
|
||||||
import { NotificationQueueService } from './notification-queue.service';
|
import { NotificationQueueService } from './notification-queue.service';
|
||||||
import { NotificationsGateway } from '../notifications.gateway';
|
import { NotificationsGateway } from '../notifications.gateway';
|
||||||
import { NotifChannelEnum, NotifRequest, NotifEvent } from '../interfaces/notification.interface';
|
import { NotifChannelEnum, NotifRequest, NotifTitle } from '../interfaces/notification.interface';
|
||||||
import { SmsLogRepository } from '../repositories/sms-log.repository';
|
import { SmsLogRepository } from '../repositories/sms-log.repository';
|
||||||
import { Admin } from '../../admin/entities/admin.entity';
|
import { Admin } from '../../admin/entities/admin.entity';
|
||||||
import { User } from '../../user/entities/user.entity';
|
import { User } from '../../user/entities/user.entity';
|
||||||
@@ -71,7 +71,7 @@ export class NotificationService {
|
|||||||
|
|
||||||
async createAdminBulkNotifications(
|
async createAdminBulkNotifications(
|
||||||
params: {
|
params: {
|
||||||
title: NotifEvent;
|
title: NotifTitle;
|
||||||
content: string;
|
content: string;
|
||||||
adminId: string | null;
|
adminId: string | null;
|
||||||
userId: string | null;
|
userId: string | null;
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ import { OnEvent } from '@nestjs/event-emitter';
|
|||||||
import { AdminRepository } from 'src/modules/admin/repositories/admin.repository';
|
import { AdminRepository } from 'src/modules/admin/repositories/admin.repository';
|
||||||
import { OrderCreatedEvent, OrderStatusChangedEvent } from '../events/order.events';
|
import { OrderCreatedEvent, OrderStatusChangedEvent } from '../events/order.events';
|
||||||
import { PermissionEnum } from 'src/common/enums/permission.enum';
|
import { PermissionEnum } from 'src/common/enums/permission.enum';
|
||||||
import { NotifEvent } from 'src/modules/notification/interfaces/notification.interface';
|
import { NotifTitle } from 'src/modules/notification/interfaces/notification.interface';
|
||||||
import { NotificationService } from 'src/modules/notification/services/notification.service';
|
import { NotificationService } from 'src/modules/notification/services/notification.service';
|
||||||
import { ConfigService } from '@nestjs/config';
|
import { ConfigService } from '@nestjs/config';
|
||||||
import { OrderRepository } from '../repositories/order.repository';
|
import { OrderRepository } from '../repositories/order.repository';
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ import { EntityManager } from '@mikro-orm/postgresql';
|
|||||||
import { AdminRepository } from 'src/modules/admin/repositories/admin.repository';
|
import { AdminRepository } from 'src/modules/admin/repositories/admin.repository';
|
||||||
import { onlinePaymentSucceedEvent } from '../events/payment.events';
|
import { onlinePaymentSucceedEvent } from '../events/payment.events';
|
||||||
import { PermissionEnum } from 'src/common/enums/permission.enum';
|
import { PermissionEnum } from 'src/common/enums/permission.enum';
|
||||||
import { NotifEvent } from 'src/modules/notification/interfaces/notification.interface';
|
import { NotifTitle } from 'src/modules/notification/interfaces/notification.interface';
|
||||||
import { Notification } from 'src/modules/notification/entities/notification.entity';
|
import { Notification } from 'src/modules/notification/entities/notification.entity';
|
||||||
import { NotificationQueueService } from 'src/modules/notification/services/notification-queue.service';
|
import { NotificationQueueService } from 'src/modules/notification/services/notification-queue.service';
|
||||||
|
|
||||||
@@ -39,7 +39,7 @@ export class PaymentListeners {
|
|||||||
const notifications = admins.map((admin) =>
|
const notifications = admins.map((admin) =>
|
||||||
this.em.create(Notification, {
|
this.em.create(Notification, {
|
||||||
admin,
|
admin,
|
||||||
title: NotifEvent.PAYMENT_SUCCESS,
|
title: NotifTitle.NEW_PAYMENT,
|
||||||
content: body,
|
content: body,
|
||||||
}),
|
}),
|
||||||
);
|
);
|
||||||
@@ -49,7 +49,7 @@ export class PaymentListeners {
|
|||||||
await this.notificationQueueService.addBulkInAppNotifications(
|
await this.notificationQueueService.addBulkInAppNotifications(
|
||||||
notifications.map((n) => ({
|
notifications.map((n) => ({
|
||||||
recipient: { adminId: n.admin!.id },
|
recipient: { adminId: n.admin!.id },
|
||||||
subject: NotifEvent.PAYMENT_SUCCESS,
|
subject: NotifTitle.NEW_PAYMENT,
|
||||||
body,
|
body,
|
||||||
notificationId: n.id,
|
notificationId: n.id,
|
||||||
})),
|
})),
|
||||||
|
|||||||
Reference in New Issue
Block a user