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