chore: add notif service for new criticisms ticket and subscribtion

This commit is contained in:
mahyargdz
2025-05-04 14:48:39 +03:30
parent 9d50578cc2
commit 170bb867d0
14 changed files with 236 additions and 93 deletions
@@ -7,6 +7,7 @@ import { CommonMessage, TicketMessageEnum, UserMessage } from "../../../common/e
import { DanakService } from "../../danak-services/entities/danak-service.entity";
import { NotificationsService } from "../../notifications/providers/notifications.service";
import { User } from "../../users/entities/user.entity";
import { AdminsService } from "../../users/providers/admins.service";
import { UsersService } from "../../users/providers/users.service";
import { CreateTicketCategoryDto } from "../DTO/create-ticket-category.dto";
import { CreateTicketMessageDto } from "../DTO/create-ticket-message.dto";
@@ -32,6 +33,7 @@ export class TicketsService {
private readonly ticketsRepository: TicketsRepository,
private readonly ticketMessagesRepository: TicketMessagesRepository,
private readonly usersService: UsersService,
private readonly adminsService: AdminsService,
private readonly referralService: ReferralService,
private dataSource: DataSource,
) {}
@@ -367,6 +369,7 @@ export class TicketsService {
},
queryRunner,
);
await this.notifySuperAdminsForTicket(queryRunner, ticket);
}
//***************************** */
@@ -395,7 +398,7 @@ export class TicketsService {
}
//***************************** */
private async saveAttachments(queryRunner: QueryRunner, attachmentUrls: string[], ticketMessage: TicketMessage): Promise<void> {
private async saveAttachments(queryRunner: QueryRunner, attachmentUrls: string[], ticketMessage: TicketMessage) {
const attachments = attachmentUrls.map((url) =>
queryRunner.manager.create(TicketMessageAttachment, {
attachmentUrl: url,
@@ -406,7 +409,7 @@ export class TicketsService {
}
//***************************** */
private async sendNotificationForAdminResponse(queryRunner: QueryRunner, ticket: Ticket, admin: User): Promise<void> {
private async sendNotificationForAdminResponse(queryRunner: QueryRunner, ticket: Ticket, admin: User) {
await this.notificationsService.createAnswerTicketNotification(
ticket.user.id,
{
@@ -419,4 +422,23 @@ export class TicketsService {
queryRunner,
);
}
//***************************** */
private async notifySuperAdminsForTicket(queryRunner: QueryRunner, ticket: Ticket) {
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: ticket.user.phone,
userEmail: ticket.user.email,
fullName: `${ticket.user.firstName} ${ticket.user.lastName}`,
},
queryRunner,
);
}
}
}