fix: bug in the ticket message creation from user side
This commit is contained in:
@@ -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 },
|
||||
|
||||
Reference in New Issue
Block a user