chore: test ticket service and ticket message
This commit is contained in:
@@ -3,6 +3,8 @@ import { Not } from "typeorm";
|
||||
|
||||
import { ParamDto } from "../../../common/DTO/param.dto";
|
||||
import { CommonMessage, TicketMessageEnum } from "../../../common/enums/message.enum";
|
||||
import { Role } from "../../users/entities/role.entity";
|
||||
import { RoleEnum } from "../../users/enums/role.enum";
|
||||
import { UsersService } from "../../users/providers/users.service";
|
||||
import { PaginationUtils } from "../../utils/providers/pagination.utils";
|
||||
import { CreateTicketCategoryDto } from "../DTO/create-ticket-category.dto";
|
||||
@@ -12,6 +14,7 @@ import { SearchTicketCategoryDto } from "../DTO/search-ticket-category.dto";
|
||||
import { SearchTicketQueryDto } from "../DTO/search-ticket-query.dto";
|
||||
import { UpdateTicketCategoryDto } from "../DTO/update-ticket-category.dto";
|
||||
import { TicketMessage } from "../entities/ticket-message.entity";
|
||||
import { Ticket } from "../entities/ticket.entity";
|
||||
import { TicketStatus } from "../enums/ticket-status.enum";
|
||||
import { TicketCategoryRepository } from "../repositories/tickets-category.repository";
|
||||
import { TicketMessagesRepository } from "../repositories/tickets-message.repository";
|
||||
@@ -27,7 +30,7 @@ export class TicketsService {
|
||||
) {}
|
||||
//******************************** */
|
||||
async getTicketCategories() {
|
||||
const ticketCategories = await this.ticketsCategoryRepository.find({ relations: { group: true } });
|
||||
const ticketCategories = await this.ticketsCategoryRepository.find({});
|
||||
return {
|
||||
ticketCategories,
|
||||
};
|
||||
@@ -56,7 +59,7 @@ export class TicketsService {
|
||||
|
||||
const [categories, count] = await queryBuilder.skip(skip).take(limit).getManyAndCount();
|
||||
|
||||
return { categories, count };
|
||||
return { categories, count, paginate: true };
|
||||
}
|
||||
//******************************** */
|
||||
async createTicketCategory(createDto: CreateTicketCategoryDto) {
|
||||
@@ -115,7 +118,6 @@ export class TicketsService {
|
||||
|
||||
return {
|
||||
message: TicketMessageEnum.CREATED,
|
||||
ticket,
|
||||
};
|
||||
}
|
||||
|
||||
@@ -131,7 +133,7 @@ export class TicketsService {
|
||||
},
|
||||
relations: {
|
||||
category: true,
|
||||
user: true,
|
||||
// user: true,
|
||||
},
|
||||
order: {
|
||||
createdAt: "DESC" as const,
|
||||
@@ -142,18 +144,23 @@ export class TicketsService {
|
||||
|
||||
const [tickets, count] = await this.ticketsRepository.findAndCount(findOptions);
|
||||
|
||||
return {
|
||||
tickets,
|
||||
count,
|
||||
};
|
||||
return { tickets, count, paginate: true };
|
||||
}
|
||||
|
||||
//******************************** */
|
||||
|
||||
async createTicketMessage(ticketId: string, createDto: CreateTicketMessageDto, userId: string) {
|
||||
const ticket = await this.ticketsRepository.findTicketById(ticketId, userId);
|
||||
async createTicketMessage(ticketId: string, createDto: CreateTicketMessageDto, userId: string, role: Role) {
|
||||
const userRole = role as unknown as RoleEnum;
|
||||
let ticket: null | Ticket = null;
|
||||
|
||||
if (userRole === RoleEnum.ADMIN) {
|
||||
ticket = await this.ticketsRepository.findTicketById(ticketId);
|
||||
} else {
|
||||
ticket = await this.ticketsRepository.findTicketById(ticketId, userId);
|
||||
}
|
||||
|
||||
if (!ticket) throw new BadRequestException(TicketMessageEnum.TICKET_NOT_FOUND);
|
||||
//
|
||||
|
||||
const { user } = await this.usersService.findOneById(userId);
|
||||
|
||||
const ticketMessage = this.ticketMessagesRepository.create({ ...createDto, author: user, ticket });
|
||||
@@ -162,26 +169,43 @@ export class TicketsService {
|
||||
|
||||
return {
|
||||
message: TicketMessageEnum.MESSAGE_CREATED,
|
||||
ticketMessage,
|
||||
// ticketMessage,
|
||||
};
|
||||
}
|
||||
|
||||
//******************************** */
|
||||
|
||||
async getTicketMessages(ticketId: string, userId: string) {
|
||||
const ticket = await this.ticketsRepository.findTicketById(ticketId, userId);
|
||||
async getTicketMessages(ticketId: string, userId: string, role: Role) {
|
||||
const userRole = role as unknown as RoleEnum;
|
||||
let ticket: null | Ticket = null;
|
||||
|
||||
//
|
||||
if (userRole === RoleEnum.ADMIN) {
|
||||
ticket = await this.ticketsRepository.findTicketById(ticketId);
|
||||
} else {
|
||||
ticket = await this.ticketsRepository.findTicketById(ticketId, userId);
|
||||
}
|
||||
if (!ticket) throw new BadRequestException(TicketMessageEnum.TICKET_NOT_FOUND);
|
||||
|
||||
const messages = await this.ticketMessagesRepository.findMessagesByTicketId(ticketId);
|
||||
return {
|
||||
ticket,
|
||||
messages,
|
||||
};
|
||||
}
|
||||
|
||||
//******************************** */
|
||||
|
||||
async closeTicketByUser(ticketId: string, userId: string) {
|
||||
const ticket = await this.ticketsRepository.findTicketById(ticketId, userId);
|
||||
async closeTicketByUser(ticketId: string, userId: string, role: Role) {
|
||||
const userRole = role as unknown as RoleEnum;
|
||||
let ticket: null | Ticket = null;
|
||||
|
||||
if (userRole === RoleEnum.ADMIN) {
|
||||
ticket = await this.ticketsRepository.findTicketById(ticketId);
|
||||
} else {
|
||||
ticket = await this.ticketsRepository.findTicketById(ticketId, userId);
|
||||
}
|
||||
|
||||
if (!ticket) throw new BadRequestException(TicketMessageEnum.TICKET_NOT_FOUND);
|
||||
|
||||
ticket.status = TicketStatus.CLOSED;
|
||||
|
||||
Reference in New Issue
Block a user