From 87bf8913aa86ff28d84793aca75d169c6288c009 Mon Sep 17 00:00:00 2001 From: mahyargdz Date: Wed, 7 May 2025 10:53:01 +0330 Subject: [PATCH] feat: add user plan to the user ticket info for admin --- src/common/enums/message.enum.ts | 1 + .../providers/support-plans.service.ts | 2 +- src/modules/tickets/providers/tickets.service.ts | 15 +++++++++++++++ src/modules/tickets/tickets.controller.ts | 8 ++++++++ 4 files changed, 25 insertions(+), 1 deletion(-) diff --git a/src/common/enums/message.enum.ts b/src/common/enums/message.enum.ts index 156a1fb..473e013 100755 --- a/src/common/enums/message.enum.ts +++ b/src/common/enums/message.enum.ts @@ -290,6 +290,7 @@ export const enum TicketMessageEnum { TICKET_LIMIT_NOT_FOUND = "محدودیت تعداد تیکت در پلن پشتیبانی شما یافت نشد", INVALID_TICKET_LIMIT = "محدودیت تعداد تیکت در پلن پشتیبانی شما نامعتبر است", TICKET_LIMIT_EXCEEDED = "شما به محدودیت تعداد تیکت در پلن پشتیبانی خود رسیده‌اید", + OPENED = "تیکت با موفقیت باز شد", } export const enum WalletMessage { diff --git a/src/modules/support-plans/providers/support-plans.service.ts b/src/modules/support-plans/providers/support-plans.service.ts index 6a82b89..07771fc 100644 --- a/src/modules/support-plans/providers/support-plans.service.ts +++ b/src/modules/support-plans/providers/support-plans.service.ts @@ -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 }; diff --git a/src/modules/tickets/providers/tickets.service.ts b/src/modules/tickets/providers/tickets.service.ts index a499dc7..c782cbb 100755 --- a/src/modules/tickets/providers/tickets.service.ts +++ b/src/modules/tickets/providers/tickets.service.ts @@ -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(); diff --git a/src/modules/tickets/tickets.controller.ts b/src/modules/tickets/tickets.controller.ts index 60912f8..beb869b 100755 --- a/src/modules/tickets/tickets.controller.ts +++ b/src/modules/tickets/tickets.controller.ts @@ -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)