fix: bug in the ticket message creation from user side

This commit is contained in:
mahyargdz
2025-03-03 14:40:03 +03:30
parent ab72fedfb8
commit 1b722d0e79
@@ -56,7 +56,9 @@ export class TicketsService {
.loadRelationCountAndMap("category.usersCount", "group.users");
if (queryDto.isActive !== undefined) {
queryBuilder.andWhere("category.isActive = :isActive", { isActive: queryDto.isActive === 1 });
queryBuilder.andWhere("category.isActive = :isActive", {
isActive: queryDto.isActive === 1,
});
}
if (queryDto.q) {
@@ -73,7 +75,10 @@ export class TicketsService {
const existCategory = await this.ticketsCategoryRepository.findCategoryByTitle(createDto.title);
if (existCategory) throw new BadRequestException(TicketMessageEnum.CATEGORY_EXIST);
const ticketCategory = this.ticketsCategoryRepository.create({ ...createDto, group: userGroup });
const ticketCategory = this.ticketsCategoryRepository.create({
...createDto,
group: userGroup,
});
await this.ticketsCategoryRepository.save(ticketCategory);
return {
@@ -88,10 +93,16 @@ export class TicketsService {
if (updateCategoryDto.title) {
const { title } = updateCategoryDto;
const existCategory = await this.ticketsCategoryRepository.findOneBy({ title, id: Not(paramDto.id) });
const existCategory = await this.ticketsCategoryRepository.findOneBy({
title,
id: Not(paramDto.id),
});
if (existCategory) throw new BadRequestException(TicketMessageEnum.CATEGORY_EXIST);
}
await this.ticketsCategoryRepository.save({ ...category, ...updateCategoryDto });
await this.ticketsCategoryRepository.save({
...category,
...updateCategoryDto,
});
return {
message: CommonMessage.UPDATE_SUCCESS,
@@ -121,14 +132,19 @@ export class TicketsService {
try {
const [user, ticketCategory] = await Promise.all([
this.usersService.findOneByIdWithQueryRunner(userId, queryRunner),
queryRunner.manager.findOne(TicketCategory, { where: { id: createDto.categoryId }, relations: { group: { users: true } } }),
queryRunner.manager.findOne(TicketCategory, {
where: { id: createDto.categoryId },
relations: { group: { users: true } },
}),
]);
if (!ticketCategory) throw new BadRequestException(TicketMessageEnum.CATEGORY_NOT_FOUND);
let service = null;
if (createDto.danakServiceId) {
service = await queryRunner.manager.findOneBy(DanakService, { id: createDto.danakServiceId });
service = await queryRunner.manager.findOneBy(DanakService, {
id: createDto.danakServiceId,
});
if (!service) throw new BadRequestException(TicketMessageEnum.SERVICE_NOT_FOUND);
}
@@ -200,9 +216,13 @@ export class TicketsService {
.take(limit);
if (queryDto.status) {
queryBuilder.andWhere("ticket.status = :status", { status: queryDto.status });
queryBuilder.andWhere("ticket.status = :status", {
status: queryDto.status,
});
} else {
queryBuilder.andWhere("ticket.status != :closedStatus", { closedStatus: TicketStatus.CLOSED });
queryBuilder.andWhere("ticket.status != :closedStatus", {
closedStatus: TicketStatus.CLOSED,
});
}
const [tickets, count] = await queryBuilder.getManyAndCount();
@@ -228,7 +248,9 @@ export class TicketsService {
}
if (queryDto.status) {
queryBuilder.andWhere("ticket.status = :status", { status: queryDto.status });
queryBuilder.andWhere("ticket.status = :status", {
status: queryDto.status,
});
}
if (queryDto.userId) {
@@ -254,7 +276,8 @@ export class TicketsService {
const isSuperAdmin = await this.usersService.isSuperAdmin(userId);
console.log(isSuperAdmin);
console.log(ticket.assignedTo);
if (!isSuperAdmin && ticket.assignedTo?.id !== userId) throw new BadRequestException(TicketMessageEnum.TICKET_NOT_ASSIGNED_TO_USER);
if (isAdmin && !isSuperAdmin && ticket.assignedTo?.id !== userId)
throw new BadRequestException(TicketMessageEnum.TICKET_NOT_ASSIGNED_TO_USER);
const user = await queryRunner.manager.findOneBy(User, { id: userId });
if (!user) throw new BadRequestException(UserMessage.USER_NOT_FOUND);
@@ -334,13 +357,17 @@ export class TicketsService {
//******************************** */
async getUnreadTickets() {
const unreadTickets = await this.ticketsRepository.count({ where: { status: TicketStatus.PENDING } });
const unreadTickets = await this.ticketsRepository.count({
where: { status: TicketStatus.PENDING },
});
return unreadTickets;
}
//******************************** */
async countUserTickets(userId: string) {
const ticketCount = await this.ticketsRepository.count({ where: { user: { id: userId }, status: Not(TicketStatus.CLOSED) } });
const ticketCount = await this.ticketsRepository.count({
where: { user: { id: userId }, status: Not(TicketStatus.CLOSED) },
});
return ticketCount;
}
@@ -396,7 +423,10 @@ export class TicketsService {
private async findTicket(queryRunner: QueryRunner, ticketId: string, userId: string, isAdmin: boolean): Promise<Ticket> {
const ticket = isAdmin
? await queryRunner.manager.findOne(Ticket, { where: { id: ticketId }, relations: { user: true, assignedTo: true } })
? await queryRunner.manager.findOne(Ticket, {
where: { id: ticketId },
relations: { user: true, assignedTo: true },
})
: await queryRunner.manager.findOne(Ticket, {
where: { id: ticketId, user: { id: userId } },
relations: { user: true, assignedTo: true },