From e44a239ef0a10a48dce7f5e35c5d3dd910dadc70 Mon Sep 17 00:00:00 2001 From: morteza-mortezai Date: Wed, 28 Jan 2026 11:11:20 +0330 Subject: [PATCH] ticket bug --- src/modules/ticket/DTO/create-ticket.dto.ts | 2 +- .../ticket/controller/ticket.controller.ts | 27 +++++++++++++------ src/modules/ticket/ticket.module.ts | 4 ++- 3 files changed, 23 insertions(+), 10 deletions(-) diff --git a/src/modules/ticket/DTO/create-ticket.dto.ts b/src/modules/ticket/DTO/create-ticket.dto.ts index 1d3dd86..51900d7 100755 --- a/src/modules/ticket/DTO/create-ticket.dto.ts +++ b/src/modules/ticket/DTO/create-ticket.dto.ts @@ -14,7 +14,7 @@ export class CreateTicketDto { @IsOptional() @IsNotEmpty({ message: TicketMessageEnum.ATTACHMENT_REQUIRED }) @IsUrl({ protocols: ["http", "https"], require_protocol: true }, { each: true, message: TicketMessageEnum.ATTACHMENT_SHOULD_BE_URL }) - @ApiProperty({ description: "attachment url", example: ["https://example.com/test.png"] }) + @ApiProperty({ description: "attachment url", example: [{ type: '', url: '' }] }) attachments?: AttachmentType[]; } diff --git a/src/modules/ticket/controller/ticket.controller.ts b/src/modules/ticket/controller/ticket.controller.ts index 93ddff6..40fba6a 100755 --- a/src/modules/ticket/controller/ticket.controller.ts +++ b/src/modules/ticket/controller/ticket.controller.ts @@ -1,66 +1,77 @@ -import { Body, Controller, Delete, Get, Param, Patch, Post, Query } from "@nestjs/common"; -import { ApiOperation, ApiTags } from "@nestjs/swagger"; +import { Body, Controller, Delete, Get, Param, Patch, Post, Query, UseGuards } from "@nestjs/common"; +import { ApiBearerAuth, ApiOperation, ApiTags } from "@nestjs/swagger"; import { CreateTicketDto } from "../DTO/create-ticket.dto"; import { FindTicketQueryDto } from "../DTO/search-ticket-query.dto"; import { TicketService } from "../providers/tickets.service"; import { UserId } from "src/common/decorators"; import { AdminId } from "src/common/decorators/admin-id.decorator"; import { UpdateTicketDto } from "../DTO/update-ticket.dto"; +import { AdminAuthGuard } from "src/modules/auth/guards/adminAuth.guard"; +import { AuthGuard } from "src/modules/auth/guards/auth.guard"; @Controller() @ApiTags("Tickets") +@ApiBearerAuth() export class TicketController { constructor(private readonly ticketsService: TicketService) { } @Post('public/ticket/order/:orderId') + @UseGuards(AuthGuard) @ApiOperation({ summary: "create ticket ==> user route" }) createTicket(@Param('orderId') orderId: string, @Body() createDto: CreateTicketDto, @UserId() userId: string) { return this.ticketsService.createTicket(orderId, createDto, userId); } - @ApiOperation({ summary: "Get all order tickets ==> user route" }) @Get('public/ticket/order/:orderId') + @UseGuards(AuthGuard) + @ApiOperation({ summary: "Get all order tickets ==> user route" }) getTickets(@Query() queryDto: FindTicketQueryDto, @Param('orderId') orderId: string, @UserId() userId: string) { return this.ticketsService.getTickets(orderId, queryDto, userId); } - @ApiOperation({ summary: "Delete Ticket ==> admin route" }) @Delete('public/ticket/:ticketId') + @ApiOperation({ summary: "Delete Ticket ==> admin route" }) + @UseGuards(AuthGuard) deleteTicket(@Param('ticketId') ticketId: string, @UserId() userId: string) { return this.ticketsService.deleteTicket(ticketId, userId); } - @ApiOperation({ summary: "Delete Ticket ==> admin route" }) @Patch('public/ticket/:ticketId') + @UseGuards(AuthGuard) + @ApiOperation({ summary: "Delete Ticket ==> admin route" }) updateTicket(@Param('ticketId') ticketId: string, @UserId() userId: string, @Body() body: UpdateTicketDto) { return this.ticketsService.updateTicket(ticketId, body, userId,); } /*=========================== Admin ============================== */ - @ApiOperation({ summary: "Delete Ticket ==> admin route" }) @Delete('admin/ticket/:ticketId') + @UseGuards(AdminAuthGuard) + @ApiOperation({ summary: "Delete Ticket ==> admin route" }) deleteTicketAsAdmin(@Param('ticketId') ticketId: string) { return this.ticketsService.deleteTicket(ticketId); } @Post('admin/ticket/order/:orderId') + @UseGuards(AdminAuthGuard) @ApiOperation({ summary: "create ticket ==> admin route" }) createTicketAsAdmin(@Param('orderId') orderId: string, @Body() createDto: CreateTicketDto, @AdminId() adminId: string) { return this.ticketsService.createTicket(orderId, createDto, undefined, adminId); } - @ApiOperation({ summary: "Get all order tickets ==> admin route" }) @Get('admin/ticket/order/:orderId') + @UseGuards(AdminAuthGuard) + @ApiOperation({ summary: "Get all order tickets ==> admin route" }) getTicketsAsAdmin(@Query() queryDto: FindTicketQueryDto, @Param('orderId') orderId: string) { return this.ticketsService.getTickets(orderId, queryDto); } - @ApiOperation({ summary: "Delete Ticket ==> admin route" }) @Patch('admin/ticket/:ticketId') + @UseGuards(AdminAuthGuard) + @ApiOperation({ summary: "Delete Ticket ==> admin route" }) updateTicketAsAdmin(@Param('ticketId') ticketId: string, @Body() body: UpdateTicketDto) { return this.ticketsService.updateTicket(ticketId, body); } diff --git a/src/modules/ticket/ticket.module.ts b/src/modules/ticket/ticket.module.ts index 61689a8..8850f7b 100755 --- a/src/modules/ticket/ticket.module.ts +++ b/src/modules/ticket/ticket.module.ts @@ -7,6 +7,7 @@ import { MikroOrmModule } from "@mikro-orm/nestjs"; import { OrderModule } from "../order/order.module"; import { AdminModule } from "../admin/admin.module"; import { UserModule } from "../user/user.module"; +import { JwtModule } from "@nestjs/jwt"; @@ -15,7 +16,8 @@ import { UserModule } from "../user/user.module"; forwardRef(() => OrderModule), MikroOrmModule.forFeature([Ticket]), AdminModule, - UserModule + UserModule, + JwtModule.register({}) ], providers: [TicketService, TicketRepository], controllers: [TicketController],