chore: ticket service but not tested
This commit is contained in:
@@ -1,4 +1,97 @@
|
||||
import { Injectable } from "@nestjs/common";
|
||||
import { BadRequestException, Injectable } from "@nestjs/common";
|
||||
import { Not } from "typeorm";
|
||||
|
||||
import { ParamDto } from "../../../common/DTO/param.dto";
|
||||
import { CommonMessage, TicketMessageEnum } from "../../../common/enums/message.enum";
|
||||
import { UsersService } from "../../users/providers/users.service";
|
||||
import { PaginationUtils } from "../../utils/providers/pagination.utils";
|
||||
import { CreateTicketCategoryDto } from "../DTO/create-ticket-category.dto";
|
||||
import { SearchTicketCategoryDto } from "../DTO/search-ticket-category.dto";
|
||||
import { UpdateTicketCategoryDto } from "../DTO/update-ticket-category.dto";
|
||||
import { TicketCategoryRepository } from "../repositories/tickets-category.repository";
|
||||
|
||||
@Injectable()
|
||||
export class TicketsService {}
|
||||
export class TicketsService {
|
||||
constructor(
|
||||
private readonly ticketsCategoryRepository: TicketCategoryRepository,
|
||||
private readonly usersService: UsersService,
|
||||
) {}
|
||||
//******************************** */
|
||||
async getTicketCategories() {
|
||||
const ticketCategories = await this.ticketsCategoryRepository.find({ relations: { group: true } });
|
||||
return {
|
||||
ticketCategories,
|
||||
};
|
||||
}
|
||||
//******************************** */
|
||||
|
||||
async getCategoriesList(queryDto: SearchTicketCategoryDto) {
|
||||
const { limit, skip } = PaginationUtils(queryDto);
|
||||
const queryBuilder = this.ticketsCategoryRepository
|
||||
.createQueryBuilder("category")
|
||||
// .leftJoinAndSelect("category.group", "group")
|
||||
// .addSelect(["group.id", "group.name"])
|
||||
.leftJoin("category.group", "group")
|
||||
.addSelect(["group.id", "group.name"])
|
||||
// .leftJoinAndSelect("group.users", "users")
|
||||
.loadRelationCountAndMap("category.ticketsCount", "category.tickets")
|
||||
.loadRelationCountAndMap("category.usersCount", "group.users");
|
||||
|
||||
if (queryDto.isActive !== undefined) {
|
||||
queryBuilder.andWhere("category.isActive = :isActive", { isActive: queryDto.isActive === 1 });
|
||||
}
|
||||
|
||||
if (queryDto.q) {
|
||||
queryBuilder.where("category.title LIKE :q", { q: `%${queryDto.q}%` });
|
||||
}
|
||||
|
||||
const [categories, count] = await queryBuilder.skip(skip).take(limit).getManyAndCount();
|
||||
|
||||
return { categories, count };
|
||||
}
|
||||
//******************************** */
|
||||
async createTicketCategory(createDto: CreateTicketCategoryDto) {
|
||||
const { userGroup } = await this.usersService.getUserGroupById(createDto.userGroupId);
|
||||
const existCategory = await this.ticketsCategoryRepository.findCategoryByTitle(createDto.title);
|
||||
|
||||
if (existCategory) throw new BadRequestException(TicketMessageEnum.CATEGORY_EXIST);
|
||||
const ticketCategory = this.ticketsCategoryRepository.create({ ...createDto, group: userGroup });
|
||||
await this.ticketsCategoryRepository.save(ticketCategory);
|
||||
|
||||
return {
|
||||
message: TicketMessageEnum.CATEGORY_CREATED,
|
||||
};
|
||||
}
|
||||
|
||||
//******************************** */
|
||||
async updateCategory(paramDto: ParamDto, updateCategoryDto: UpdateTicketCategoryDto) {
|
||||
const category = await this.ticketsCategoryRepository.findCategoryById(paramDto.id);
|
||||
if (!category) throw new BadRequestException(TicketMessageEnum.CATEGORY_NOT_FOUND);
|
||||
|
||||
if (updateCategoryDto.title) {
|
||||
const { title } = updateCategoryDto;
|
||||
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 });
|
||||
|
||||
return {
|
||||
message: CommonMessage.UPDATE_SUCCESS,
|
||||
};
|
||||
}
|
||||
//******************************** */
|
||||
async toggleCategoryStatus(paramDto: ParamDto) {
|
||||
const category = await this.ticketsCategoryRepository.findCategoryById(paramDto.id);
|
||||
if (!category) throw new BadRequestException(TicketMessageEnum.CATEGORY_NOT_FOUND);
|
||||
category.isActive = !category.isActive;
|
||||
await this.ticketsCategoryRepository.save(category);
|
||||
return {
|
||||
message: CommonMessage.UPDATE_SUCCESS,
|
||||
isActive: category.isActive,
|
||||
};
|
||||
}
|
||||
|
||||
//******************************** */
|
||||
|
||||
async createTicket() {}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user