ticket refactor
This commit is contained in:
@@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -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()
|
||||
|
||||
Reference in New Issue
Block a user