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 = "محدودیت تعداد تیکت در پلن پشتیبانی شما یافت نشد", TICKET_LIMIT_NOT_FOUND = "محدودیت تعداد تیکت در پلن پشتیبانی شما یافت نشد",
INVALID_TICKET_LIMIT = "محدودیت تعداد تیکت در پلن پشتیبانی شما نامعتبر است", INVALID_TICKET_LIMIT = "محدودیت تعداد تیکت در پلن پشتیبانی شما نامعتبر است",
TICKET_LIMIT_EXCEEDED = "شما به محدودیت تعداد تیکت در پلن پشتیبانی خود رسیده‌اید", TICKET_LIMIT_EXCEEDED = "شما به محدودیت تعداد تیکت در پلن پشتیبانی خود رسیده‌اید",
OPENED = "تیکت با موفقیت باز شد",
} }
export const enum WalletMessage { export const enum WalletMessage {
@@ -175,7 +175,7 @@ export class SupportPlansService {
async getUserSupportPlanOfUser(userId: string) { async getUserSupportPlanOfUser(userId: string) {
const userSupportPlan = await this.userSupportPlanRepo.findOne({ const userSupportPlan = await this.userSupportPlanRepo.findOne({
where: { user: { id: userId }, status: UserSupportPlanStatus.ACTIVE }, where: { user: { id: userId }, status: UserSupportPlanStatus.ACTIVE },
relations: { supportPlan: { features: true } }, relations: { supportPlan: true },
}); });
return { userSupportPlan }; return { userSupportPlan };
@@ -286,9 +286,11 @@ export class TicketsService {
if (!ticket) throw new BadRequestException(TicketMessageEnum.TICKET_NOT_FOUND); if (!ticket) throw new BadRequestException(TicketMessageEnum.TICKET_NOT_FOUND);
const messages = await this.ticketMessagesRepository.findMessagesByTicketId(ticketId); const messages = await this.ticketMessagesRepository.findMessagesByTicketId(ticketId);
const userSupportPlan = await this.supportPlansService.getUserSupportPlanOfUser(ticket.user.id);
return { return {
ticket, ticket,
messages, messages,
supportPlan: userSupportPlan,
}; };
} }
@@ -312,6 +314,19 @@ export class TicketsService {
message: TicketMessageEnum.CLOSED, 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) { async referTicket(ticketId: string, userId: string, referDto: ReferTicketDto) {
const queryRunner = this.dataSource.createQueryRunner(); const queryRunner = this.dataSource.createQueryRunner();
@@ -107,6 +107,14 @@ export class TicketsController {
return this.ticketsService.closeTicketByUser(paramDto.id, userId, isAdmin); 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" }) @ApiOperation({ summary: "referer ticket ==> admin route" })
@AdminRoute() @AdminRoute()
@PermissionsDec(PermissionEnum.TICKETS) @PermissionsDec(PermissionEnum.TICKETS)