chore: add all notification sewrvice to the queue

This commit is contained in:
mahyargdz
2025-05-04 16:06:14 +03:30
parent d50b18b8aa
commit c3ad2a1733
16 changed files with 539 additions and 277 deletions
@@ -5,7 +5,7 @@ import { ReferralService } from "./referral.service";
import { ParamDto } from "../../../common/DTO/param.dto";
import { CommonMessage, TicketMessageEnum, UserMessage } from "../../../common/enums/message.enum";
import { DanakService } from "../../danak-services/entities/danak-service.entity";
import { NotificationsService } from "../../notifications/providers/notifications.service";
import { NotificationQueue } from "../../notifications/queue/notification.queue";
import { User } from "../../users/entities/user.entity";
import { AdminsService } from "../../users/providers/admins.service";
import { UsersService } from "../../users/providers/users.service";
@@ -28,7 +28,7 @@ import { TicketsRepository } from "../repositories/tickets.repository";
export class TicketsService {
private readonly logger = new Logger(TicketsService.name);
constructor(
private readonly notificationsService: NotificationsService,
private readonly notificationQueue: NotificationQueue,
private readonly ticketsCategoryRepository: TicketCategoryRepository,
private readonly ticketsRepository: TicketsRepository,
private readonly ticketMessagesRepository: TicketMessagesRepository,
@@ -219,7 +219,7 @@ export class TicketsService {
await queryRunner.manager.save(Ticket, ticket);
if (isAdmin) {
await this.sendNotificationForAdminResponse(queryRunner, ticket, user);
await this.sendNotificationForAdminResponse(ticket, user);
}
await queryRunner.commitTransaction();
@@ -295,18 +295,14 @@ export class TicketsService {
ticket.assignedTo = admin;
await queryRunner.manager.save(this.ticketsRepository.target, ticket);
await this.notificationsService.createAssignTicketNotificationForAdmin(
admin.id,
{
ticketId: ticket.numericId.toString(),
subject: ticket.subject,
date: ticket.createdAt,
userPhone: ticket.user.phone,
userEmail: ticket.user.email,
user: `${ticket.user.firstName} ${ticket.user.lastName}`,
},
queryRunner,
);
await this.notificationQueue.addAssignTicketNotificationForAdmin(admin.id, {
ticketId: ticket.numericId.toString(),
subject: ticket.subject,
date: ticket.createdAt,
userPhone: admin.phone,
userEmail: admin.email,
user: `${ticket.user.firstName} ${ticket.user.lastName}`,
});
await queryRunner.commitTransaction();
return {
@@ -345,30 +341,22 @@ export class TicketsService {
ticket.assignedTo = assignedUser;
await queryRunner.manager.save(Ticket, ticket);
await this.notificationsService.createAssignTicketNotificationForAdmin(
assignedUser.id,
{
ticketId: ticket.numericId.toString(),
subject: ticket.subject,
date: ticket.createdAt,
userPhone: user.phone,
userEmail: user.email,
user: `${user.firstName} ${user.lastName}`,
},
queryRunner,
);
await this.notificationQueue.addAssignTicketNotificationForAdmin(assignedUser.id, {
ticketId: ticket.numericId.toString(),
subject: ticket.subject,
date: ticket.createdAt,
userPhone: user.phone,
userEmail: user.email,
user: `${user.firstName} ${user.lastName}`,
});
await this.notificationsService.createTicketNotification(
user.id,
{
ticketId: ticket.numericId.toString(),
subject: ticket.subject,
date: ticket.createdAt,
userPhone: user.phone,
userEmail: user.email,
},
queryRunner,
);
await this.notificationQueue.addTicketNotification(user.id, {
ticketId: ticket.numericId.toString(),
subject: ticket.subject,
date: ticket.createdAt,
userPhone: user.phone,
userEmail: user.email,
});
await this.notifySuperAdminsForTicket(queryRunner, ticket);
}
//***************************** */
@@ -409,18 +397,14 @@ export class TicketsService {
}
//***************************** */
private async sendNotificationForAdminResponse(queryRunner: QueryRunner, ticket: Ticket, admin: User) {
await this.notificationsService.createAnswerTicketNotification(
ticket.user.id,
{
ticketId: ticket.numericId.toString(),
subject: ticket.subject,
date: ticket.createdAt,
userPhone: admin.phone,
userEmail: admin.email,
},
queryRunner,
);
private async sendNotificationForAdminResponse(ticket: Ticket, admin: User) {
await this.notificationQueue.addAnswerTicketNotification(ticket.user.id, {
ticketId: ticket.numericId.toString(),
subject: ticket.subject,
date: ticket.createdAt,
userPhone: admin.phone,
userEmail: admin.email,
});
}
//***************************** */
@@ -428,17 +412,13 @@ export class TicketsService {
const superAdmins = await this.adminsService.getSuperAdmins(queryRunner);
for (const admin of superAdmins) {
await this.notificationsService.createNewTicketGlobalNotification(
admin.id,
{
ticketId: ticket.numericId.toString(),
ticketSubject: ticket.subject,
userPhone: admin.phone,
userEmail: admin.email,
fullName: `${ticket.user.firstName} ${ticket.user.lastName}`,
},
queryRunner,
);
await this.notificationQueue.addNewTicketGlobalNotification(admin.id, {
ticketId: ticket.numericId.toString(),
ticketSubject: ticket.subject,
userPhone: admin.phone,
userEmail: admin.email,
fullName: `${ticket.user.firstName} ${ticket.user.lastName}`,
});
}
}
}