diff --git a/src/modules/order/controllers/order.controller.ts b/src/modules/order/controllers/order.controller.ts index aaaacdb..dc8186c 100644 --- a/src/modules/order/controllers/order.controller.ts +++ b/src/modules/order/controllers/order.controller.ts @@ -136,7 +136,8 @@ export class OrderController { @Post('admin/orders/:orderId/item/:itemId/designer') @UseGuards(AdminAuthGuard) @ApiOperation({ summary: 'Assign Order Designer ' }) - assignDesigner(@Param('orderId') orderId: string, @Param('itemId') itemId: string, @Body() body: AssignDesignerDto) { + assignDesigner(@Param('orderId') orderId: string, @Param('itemId') itemId: string, + @Body() body: AssignDesignerDto) { return this.orderService.assignDesigner(orderId, +itemId, body.designerId); } @@ -173,11 +174,4 @@ export class OrderController { return this.orderService.updateOrderItemAsAdmin(orderId, +itemId, body); } - @Get('admin/prints') - @UseGuards(AdminAuthGuard) - @ApiOperation({ summary: 'Get all orders with pagination and filters' }) - findAllPrints(@Query() dto: FindOrdersDto) { - return this.orderService.findOrdersAsAdmin(dto); - } - } diff --git a/src/modules/ticket/controller/ticket.controller.ts b/src/modules/ticket/controller/ticket.controller.ts index 152b0f0..17960ec 100755 --- a/src/modules/ticket/controller/ticket.controller.ts +++ b/src/modules/ticket/controller/ticket.controller.ts @@ -19,60 +19,60 @@ export class TicketController { @Post('public/ticket/order/item/:id') @UseGuards(AuthGuard) @ApiOperation({ summary: "create ticket ==> user route" }) - createTicket(@Param('id') itemId: string, @Body() createDto: CreateTicketDto, @UserId() userId: string) { - return this.ticketsService.createTicketAsUser(itemId, createDto, userId); + createTicket(@Param('id') id: string, @Body() createDto: CreateTicketDto, @UserId() userId: string) { + return this.ticketsService.createTicketAsUser(+id, createDto, userId); } - @Get('public/ticket/order/:orderId') + @Get('public/ticket/order/item/:id') @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: "Get all order item tickets ==> user route" }) + getTickets(@Query() queryDto: FindTicketQueryDto, @Param('id') id: string, @UserId() userId: string) { + return this.ticketsService.getTickets(+id, queryDto, userId); } - @Delete('public/ticket/:ticketId') - @ApiOperation({ summary: "Delete Ticket ==> admin route" }) - @UseGuards(AuthGuard) - deleteTicket(@Param('ticketId') ticketId: string, @UserId() userId: string) { - return this.ticketsService.deleteTicketAsUSer(+ticketId, userId); - } - @Patch('public/ticket/:ticketId') + @Patch('public/ticket/:id') @UseGuards(AuthGuard) @ApiOperation({ summary: "Delete Ticket ==> admin route" }) - updateTicket(@Param('ticketId') ticketId: string, @UserId() userId: string, @Body() body: UpdateTicketDto) { - return this.ticketsService.updateTicketAsUser(+ticketId, userId, body); + updateTicket(@Param('id') id: string, @UserId() userId: string, @Body() body: UpdateTicketDto) { + return this.ticketsService.updateTicketAsUser(+id, userId, body); } + @Delete('public/ticket/:id') + @ApiOperation({ summary: "Delete Ticket ==> admin route" }) + @UseGuards(AuthGuard) + deleteTicket(@Param('id') id: string, @UserId() userId: string) { + return this.ticketsService.deleteTicketAsUSer(+id, userId); + } /*=========================== Admin ============================== */ - @Delete('admin/ticket/:ticketId') - @UseGuards(AdminAuthGuard) - @ApiOperation({ summary: "Delete Ticket ==> admin route" }) - deleteTicketAsAdmin(@Param('ticketId') ticketId: string, @AdminId() adminId: string) { - return this.ticketsService.deleteTicketAsAdmin(+ticketId, adminId); - } - @Post('admin/ticket/order/item/:id') @UseGuards(AdminAuthGuard) @ApiOperation({ summary: "create ticket ==> admin route" }) - createTicketAsAdmin(@Param('id') orderItemId: string, @Body() createDto: CreateTicketDto, @AdminId() adminId: string) { - return this.ticketsService.createTicketAsAdmin(orderItemId, createDto, adminId); + createTicketAsAdmin(@Param('id') itemId: string, @Body() createDto: CreateTicketDto, @AdminId() adminId: string) { + return this.ticketsService.createTicketAsAdmin(+itemId, createDto, adminId); } - @Get('admin/ticket/order/:orderId') + @Get('admin/ticket/order/item/:id') @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: "Get all order item tickets ==> admin route" }) + getTicketsAsAdmin(@Query() queryDto: FindTicketQueryDto, @Param('id') itemId: string) { + return this.ticketsService.getTickets(+itemId, queryDto); } - @Patch('admin/ticket/:ticketId') + @Patch('admin/ticket/:id') + @UseGuards(AdminAuthGuard) + @ApiOperation({ summary: "Update Ticket ==> admin route" }) + updateTicketAsAdmin(@Param('id') id: string, @AdminId() adminId: string, @Body() body: UpdateTicketDto) { + return this.ticketsService.updateTicketAsAdmin(+id, adminId, body); + } + + @Delete('admin/ticket/:id') @UseGuards(AdminAuthGuard) @ApiOperation({ summary: "Delete Ticket ==> admin route" }) - updateTicketAsAdmin(@Param('ticketId') ticketId: string, @AdminId() adminId: string, @Body() body: UpdateTicketDto) { - return this.ticketsService.updateTicketAsAdmin(+ticketId, adminId, body); + deleteTicketAsAdmin(@Param('id') id: string, @AdminId() adminId: string) { + return this.ticketsService.deleteTicketAsAdmin(+id, adminId); } } diff --git a/src/modules/ticket/providers/tickets.service.ts b/src/modules/ticket/providers/tickets.service.ts index 62447be..13beb76 100755 --- a/src/modules/ticket/providers/tickets.service.ts +++ b/src/modules/ticket/providers/tickets.service.ts @@ -14,26 +14,20 @@ import { OrderItem } from "src/modules/order/entities/order-item.entity"; import { AdminService } from "src/modules/admin/providers/admin.service"; import { UserService } from "src/modules/user/providers/user.service"; - @Injectable() export class TicketService { constructor( private readonly ticketsRepository: TicketRepository, private readonly orderItemRepository: OrderItemRepository, - private readonly userRepository: UserRepository, - private readonly adminRepository: AdminRepository, private readonly adminService: AdminService, private readonly userService: UserService, private readonly em: EntityManager, ) { } - async createTicketAsAdmin(itemId: string, dto: CreateTicketDto, adminId: string) { + async createTicketAsAdmin(orderItemId: number, dto: CreateTicketDto, adminId: string) { - const orderItem = await this.orderItemRepository.findOne({ id: itemId }) - if (!orderItem) { - throw new BadRequestException("orderItem not found") - } + const orderItem = await this.findOrderItemOrFail(orderItemId) let admin: null | Admin = null @@ -45,13 +39,9 @@ export class TicketService { } - async createTicketAsUser(itemId: string, dto: CreateTicketDto, userId: string) { + async createTicketAsUser(orderItemId: number, dto: CreateTicketDto, userId: string) { - const orderItem = await this.orderItemRepository.findOne({ id: itemId }) - - if (!orderItem) { - throw new BadRequestException("orderItem not found") - } + const orderItem = await this.findOrderItemOrFail(orderItemId) const user = await this.userService.findOrFail(userId) @@ -104,11 +94,6 @@ export class TicketService { return { message: 'success' } } - // //******************************** */ - - - - //******************************** */ async deleteTicketAsUSer(ticketId: number, userId: string) { const ticket = await this.findOneOrFail(ticketId) @@ -122,18 +107,16 @@ export class TicketService { } // ================ Core Logic ============ - - async getTickets(orderItemId: string, queryDto: FindTicketQueryDto, userId?: string) { - const orderItem = await this.orderItemRepository.findOne({ id: orderItemId }) - if (!orderItem) { - throw new BadRequestException("orderItem not found!") - } + async getTickets(orderItemId: number, queryDto: FindTicketQueryDto, userId?: string) { + const orderItem = await this.findOrderItemOrFail(orderItemId) + if (userId) { if (orderItem.order.user.id !== userId) { throw new BadRequestException("This ticket doenst belongs to You !") } } + const data = await this.ticketsRepository.findAllPaginated({ ...queryDto, orderItemId }); return data @@ -207,4 +190,14 @@ export class TicketService { } } + async findOrderItemOrFail(orderItemId: number) { + const orderItem = await this.orderItemRepository.findOne({ id: orderItemId }, { populate: ['order', 'order.user'] }) + + if (!orderItem) { + throw new BadRequestException("orderItem not found!") + } + + return orderItem + } + } diff --git a/src/modules/ticket/repositories/tickets.repository.ts b/src/modules/ticket/repositories/tickets.repository.ts index 1df5002..bf63718 100755 --- a/src/modules/ticket/repositories/tickets.repository.ts +++ b/src/modules/ticket/repositories/tickets.repository.ts @@ -5,7 +5,7 @@ import { FindTicketQueryDto } from '../DTO/search-ticket-query.dto'; import { PaginatedResult } from 'src/common/interfaces/pagination.interface'; class FindOrdersOpts extends FindTicketQueryDto { - orderItemId: string; + orderItemId: number; }; @Injectable()