chore: create ticket with select service

This commit is contained in:
Matin
2025-02-20 12:35:37 +03:30
parent e0a267bf2b
commit 5ff6b396cb
4 changed files with 40 additions and 8 deletions
@@ -3,6 +3,7 @@ import { DataSource, Not } from "typeorm";
import { ParamDto } from "../../../common/DTO/param.dto";
import { CommonMessage, TicketMessageEnum, UserMessage } from "../../../common/enums/message.enum";
import { DanakServicesService } from "../../danak-services/providers/danak-services.service";
import { User } from "../../users/entities/user.entity";
import { UsersService } from "../../users/providers/users.service";
import { PaginationUtils } from "../../utils/providers/pagination.utils";
@@ -27,6 +28,7 @@ export class TicketsService {
private readonly ticketsRepository: TicketsRepository,
private readonly ticketMessagesRepository: TicketMessagesRepository,
private readonly usersService: UsersService,
private readonly danakServicesService: DanakServicesService,
private dataSource: DataSource,
) {}
//******************************** */
@@ -107,12 +109,17 @@ export class TicketsService {
//******************************** */
async createTicket(createDto: CreateTicketDto, userId: string) {
let service;
const { user } = await this.usersService.findOneById(userId);
const ticketCategory = await this.ticketsCategoryRepository.findCategoryById(createDto.categoryId);
if (!ticketCategory) throw new BadRequestException(TicketMessageEnum.CATEGORY_NOT_FOUND);
const { attachmentUrls } = createDto;
//
if (createDto.danakServiceId) {
service = await this.danakServicesService.findServiceById(createDto.danakServiceId);
if (!service) throw new BadRequestException(TicketMessageEnum.SERVICE_NOT_FOUND);
}
const ticketMessage: Partial<TicketMessage> = { content: createDto.message, author: user };
@@ -123,7 +130,13 @@ export class TicketsService {
return attachment;
});
}
const ticket = this.ticketsRepository.create({ ...createDto, user, category: ticketCategory, messages: [ticketMessage] });
const ticket = this.ticketsRepository.create({
...createDto,
user,
category: ticketCategory,
messages: [ticketMessage],
danakService: service,
});
await this.ticketsRepository.save(ticket);
@@ -145,7 +158,24 @@ export class TicketsService {
},
relations: {
category: true,
// user: true,
danakService: true,
},
select: {
id: true,
subject: true,
status: true,
priority: true,
numericId: true,
createdAt: true,
updatedAt: true,
category: {
id: true,
title: true,
},
danakService: {
id: true,
name: true,
},
},
order: {
createdAt: "DESC" as const,