feat: add user plan to the user ticket info for admin

This commit is contained in:
mahyargdz
2025-05-07 10:53:01 +03:30
parent 55ec7b713f
commit 87bf8913aa
4 changed files with 25 additions and 1 deletions
+1
View File
@@ -290,6 +290,7 @@ export const enum TicketMessageEnum {
TICKET_LIMIT_NOT_FOUND = "محدودیت تعداد تیکت در پلن پشتیبانی شما یافت نشد",
INVALID_TICKET_LIMIT = "محدودیت تعداد تیکت در پلن پشتیبانی شما نامعتبر است",
TICKET_LIMIT_EXCEEDED = "شما به محدودیت تعداد تیکت در پلن پشتیبانی خود رسیده‌اید",
OPENED = "تیکت با موفقیت باز شد",
}
export const enum WalletMessage {
@@ -175,7 +175,7 @@ export class SupportPlansService {
async getUserSupportPlanOfUser(userId: string) {
const userSupportPlan = await this.userSupportPlanRepo.findOne({
where: { user: { id: userId }, status: UserSupportPlanStatus.ACTIVE },
relations: { supportPlan: { features: true } },
relations: { supportPlan: true },
});
return { userSupportPlan };
@@ -286,9 +286,11 @@ export class TicketsService {
if (!ticket) throw new BadRequestException(TicketMessageEnum.TICKET_NOT_FOUND);
const messages = await this.ticketMessagesRepository.findMessagesByTicketId(ticketId);
const userSupportPlan = await this.supportPlansService.getUserSupportPlanOfUser(ticket.user.id);
return {
ticket,
messages,
supportPlan: userSupportPlan,
};
}
@@ -312,6 +314,19 @@ export class TicketsService {
message: TicketMessageEnum.CLOSED,
};
}
//******************************** * /
async openTicketByAdmin(ticketId: string) {
const ticket = await this.ticketsRepository.findTicketById(ticketId);
if (!ticket) throw new BadRequestException(TicketMessageEnum.TICKET_NOT_FOUND);
ticket.status = TicketStatus.PENDING;
await this.ticketsRepository.save(ticket);
return {
message: TicketMessageEnum.OPENED,
};
}
//******************************** */
async referTicket(ticketId: string, userId: string, referDto: ReferTicketDto) {
const queryRunner = this.dataSource.createQueryRunner();
@@ -107,6 +107,14 @@ export class TicketsController {
return this.ticketsService.closeTicketByUser(paramDto.id, userId, isAdmin);
}
@ApiOperation({ summary: "open ticket by admin" })
@AdminRoute()
@PermissionsDec(PermissionEnum.TICKETS)
@Post(":id/open")
openTicketByAdmin(@Param() paramDto: ParamDto) {
return this.ticketsService.openTicketByAdmin(paramDto.id);
}
@ApiOperation({ summary: "referer ticket ==> admin route" })
@AdminRoute()
@PermissionsDec(PermissionEnum.TICKETS)