ticket refactor
This commit is contained in:
@@ -136,7 +136,8 @@ export class OrderController {
|
|||||||
@Post('admin/orders/:orderId/item/:itemId/designer')
|
@Post('admin/orders/:orderId/item/:itemId/designer')
|
||||||
@UseGuards(AdminAuthGuard)
|
@UseGuards(AdminAuthGuard)
|
||||||
@ApiOperation({ summary: 'Assign Order Designer ' })
|
@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);
|
return this.orderService.assignDesigner(orderId, +itemId, body.designerId);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -173,11 +174,4 @@ export class OrderController {
|
|||||||
return this.orderService.updateOrderItemAsAdmin(orderId, +itemId, body);
|
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')
|
@Post('public/ticket/order/item/:id')
|
||||||
@UseGuards(AuthGuard)
|
@UseGuards(AuthGuard)
|
||||||
@ApiOperation({ summary: "create ticket ==> user route" })
|
@ApiOperation({ summary: "create ticket ==> user route" })
|
||||||
createTicket(@Param('id') itemId: string, @Body() createDto: CreateTicketDto, @UserId() userId: string) {
|
createTicket(@Param('id') id: string, @Body() createDto: CreateTicketDto, @UserId() userId: string) {
|
||||||
return this.ticketsService.createTicketAsUser(itemId, createDto, userId);
|
return this.ticketsService.createTicketAsUser(+id, createDto, userId);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@Get('public/ticket/order/:orderId')
|
@Get('public/ticket/order/item/:id')
|
||||||
@UseGuards(AuthGuard)
|
@UseGuards(AuthGuard)
|
||||||
@ApiOperation({ summary: "Get all order tickets ==> user route" })
|
@ApiOperation({ summary: "Get all order item tickets ==> user route" })
|
||||||
getTickets(@Query() queryDto: FindTicketQueryDto, @Param('orderId') orderId: string, @UserId() userId: string) {
|
getTickets(@Query() queryDto: FindTicketQueryDto, @Param('id') id: string, @UserId() userId: string) {
|
||||||
return this.ticketsService.getTickets(orderId, queryDto, userId);
|
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)
|
@UseGuards(AuthGuard)
|
||||||
@ApiOperation({ summary: "Delete Ticket ==> admin route" })
|
@ApiOperation({ summary: "Delete Ticket ==> admin route" })
|
||||||
updateTicket(@Param('ticketId') ticketId: string, @UserId() userId: string, @Body() body: UpdateTicketDto) {
|
updateTicket(@Param('id') id: string, @UserId() userId: string, @Body() body: UpdateTicketDto) {
|
||||||
return this.ticketsService.updateTicketAsUser(+ticketId, userId, body);
|
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 ============================== */
|
/*=========================== 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')
|
@Post('admin/ticket/order/item/:id')
|
||||||
@UseGuards(AdminAuthGuard)
|
@UseGuards(AdminAuthGuard)
|
||||||
@ApiOperation({ summary: "create ticket ==> admin route" })
|
@ApiOperation({ summary: "create ticket ==> admin route" })
|
||||||
createTicketAsAdmin(@Param('id') orderItemId: string, @Body() createDto: CreateTicketDto, @AdminId() adminId: string) {
|
createTicketAsAdmin(@Param('id') itemId: string, @Body() createDto: CreateTicketDto, @AdminId() adminId: string) {
|
||||||
return this.ticketsService.createTicketAsAdmin(orderItemId, createDto, adminId);
|
return this.ticketsService.createTicketAsAdmin(+itemId, createDto, adminId);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@Get('admin/ticket/order/:orderId')
|
@Get('admin/ticket/order/item/:id')
|
||||||
@UseGuards(AdminAuthGuard)
|
@UseGuards(AdminAuthGuard)
|
||||||
@ApiOperation({ summary: "Get all order tickets ==> admin route" })
|
@ApiOperation({ summary: "Get all order item tickets ==> admin route" })
|
||||||
getTicketsAsAdmin(@Query() queryDto: FindTicketQueryDto, @Param('orderId') orderId: string) {
|
getTicketsAsAdmin(@Query() queryDto: FindTicketQueryDto, @Param('id') itemId: string) {
|
||||||
return this.ticketsService.getTickets(orderId, queryDto);
|
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)
|
@UseGuards(AdminAuthGuard)
|
||||||
@ApiOperation({ summary: "Delete Ticket ==> admin route" })
|
@ApiOperation({ summary: "Delete Ticket ==> admin route" })
|
||||||
updateTicketAsAdmin(@Param('ticketId') ticketId: string, @AdminId() adminId: string, @Body() body: UpdateTicketDto) {
|
deleteTicketAsAdmin(@Param('id') id: string, @AdminId() adminId: string) {
|
||||||
return this.ticketsService.updateTicketAsAdmin(+ticketId, adminId, body);
|
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 { AdminService } from "src/modules/admin/providers/admin.service";
|
||||||
import { UserService } from "src/modules/user/providers/user.service";
|
import { UserService } from "src/modules/user/providers/user.service";
|
||||||
|
|
||||||
|
|
||||||
@Injectable()
|
@Injectable()
|
||||||
export class TicketService {
|
export class TicketService {
|
||||||
|
|
||||||
constructor(
|
constructor(
|
||||||
private readonly ticketsRepository: TicketRepository,
|
private readonly ticketsRepository: TicketRepository,
|
||||||
private readonly orderItemRepository: OrderItemRepository,
|
private readonly orderItemRepository: OrderItemRepository,
|
||||||
private readonly userRepository: UserRepository,
|
|
||||||
private readonly adminRepository: AdminRepository,
|
|
||||||
private readonly adminService: AdminService,
|
private readonly adminService: AdminService,
|
||||||
private readonly userService: UserService,
|
private readonly userService: UserService,
|
||||||
private readonly em: EntityManager,
|
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 })
|
const orderItem = await this.findOrderItemOrFail(orderItemId)
|
||||||
if (!orderItem) {
|
|
||||||
throw new BadRequestException("orderItem not found")
|
|
||||||
}
|
|
||||||
|
|
||||||
let admin: null | Admin = null
|
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 })
|
const orderItem = await this.findOrderItemOrFail(orderItemId)
|
||||||
|
|
||||||
if (!orderItem) {
|
|
||||||
throw new BadRequestException("orderItem not found")
|
|
||||||
}
|
|
||||||
|
|
||||||
const user = await this.userService.findOrFail(userId)
|
const user = await this.userService.findOrFail(userId)
|
||||||
|
|
||||||
@@ -104,11 +94,6 @@ export class TicketService {
|
|||||||
|
|
||||||
return { message: 'success' }
|
return { message: 'success' }
|
||||||
}
|
}
|
||||||
// //******************************** */
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//******************************** */
|
|
||||||
|
|
||||||
async deleteTicketAsUSer(ticketId: number, userId: string) {
|
async deleteTicketAsUSer(ticketId: number, userId: string) {
|
||||||
const ticket = await this.findOneOrFail(ticketId)
|
const ticket = await this.findOneOrFail(ticketId)
|
||||||
@@ -122,18 +107,16 @@ export class TicketService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// ================ Core Logic ============
|
// ================ Core Logic ============
|
||||||
|
|
||||||
async getTickets(orderItemId: string, queryDto: FindTicketQueryDto, userId?: string) {
|
|
||||||
const orderItem = await this.orderItemRepository.findOne({ id: orderItemId })
|
|
||||||
|
|
||||||
if (!orderItem) {
|
async getTickets(orderItemId: number, queryDto: FindTicketQueryDto, userId?: string) {
|
||||||
throw new BadRequestException("orderItem not found!")
|
const orderItem = await this.findOrderItemOrFail(orderItemId)
|
||||||
}
|
|
||||||
if (userId) {
|
if (userId) {
|
||||||
if (orderItem.order.user.id !== userId) {
|
if (orderItem.order.user.id !== userId) {
|
||||||
throw new BadRequestException("This ticket doenst belongs to You !")
|
throw new BadRequestException("This ticket doenst belongs to You !")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const data = await this.ticketsRepository.findAllPaginated({ ...queryDto, orderItemId });
|
const data = await this.ticketsRepository.findAllPaginated({ ...queryDto, orderItemId });
|
||||||
|
|
||||||
return data
|
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';
|
import { PaginatedResult } from 'src/common/interfaces/pagination.interface';
|
||||||
|
|
||||||
class FindOrdersOpts extends FindTicketQueryDto {
|
class FindOrdersOpts extends FindTicketQueryDto {
|
||||||
orderItemId: string;
|
orderItemId: number;
|
||||||
};
|
};
|
||||||
|
|
||||||
@Injectable()
|
@Injectable()
|
||||||
|
|||||||
Reference in New Issue
Block a user