chore: add new structure for the ticket assinge to admins
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
import { BadRequestException, HttpException, Injectable, InternalServerErrorException, Logger } from "@nestjs/common";
|
||||
import { DataSource, Not, QueryRunner } from "typeorm";
|
||||
|
||||
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";
|
||||
@@ -32,6 +33,7 @@ export class TicketsService {
|
||||
private readonly ticketsRepository: TicketsRepository,
|
||||
private readonly ticketMessagesRepository: TicketMessagesRepository,
|
||||
private readonly usersService: UsersService,
|
||||
private readonly referralService: ReferralService,
|
||||
private dataSource: DataSource,
|
||||
) {}
|
||||
//******************************** */
|
||||
@@ -371,41 +373,26 @@ export class TicketsService {
|
||||
return ticketCount;
|
||||
}
|
||||
|
||||
//******************************** */
|
||||
async autoAssignUser(category: TicketCategory): Promise<User | null> {
|
||||
if (!category.group) return null;
|
||||
|
||||
const { users } = await this.usersService.getUsersByGroup(category.group.id);
|
||||
|
||||
if (users.length === 0) return null;
|
||||
|
||||
users.sort((a, b) => (a.tickets.length || 0) - (b.tickets.length || 0));
|
||||
console.log(users);
|
||||
|
||||
return users[0];
|
||||
}
|
||||
|
||||
//***************************** */
|
||||
private async assignTicketAndNotify(ticket: Ticket, ticketCategory: TicketCategory, user: User, queryRunner: QueryRunner) {
|
||||
const assignedUser = await this.autoAssignUser(ticketCategory);
|
||||
// const assignedUser = await this.autoAssignUser(ticketCategory);
|
||||
const assignedUser = await this.referralService.assignAdmin(ticketCategory.group);
|
||||
//
|
||||
ticket.assignedTo = assignedUser;
|
||||
await queryRunner.manager.save(Ticket, ticket);
|
||||
|
||||
if (assignedUser) {
|
||||
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.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.notificationsService.createTicketNotification(
|
||||
user.id,
|
||||
|
||||
Reference in New Issue
Block a user