confirm order item
This commit is contained in:
@@ -28,24 +28,15 @@ export class OrdersController {
|
||||
|
||||
@Get('public/orders')
|
||||
@UseGuards(AuthGuard)
|
||||
@ApiQuery({ name: 'page', required: false, type: Number })
|
||||
@ApiQuery({ name: 'limit', required: false, type: Number })
|
||||
@ApiQuery({ name: 'search', required: false, type: String })
|
||||
@ApiQuery({ name: 'orderBy', required: false, type: String })
|
||||
@ApiQuery({ name: 'order', required: false, enum: ['asc', 'desc'] })
|
||||
@ApiQuery({ name: 'statuses', required: false, enum: OrderStatusEnum })
|
||||
@ApiQuery({ name: 'from', required: false, type: Date })
|
||||
@ApiQuery({ name: 'to', required: false, type: Date })
|
||||
@ApiOperation({ summary: 'Get all orders with pagination and filters' })
|
||||
async findAll(@Query() dto: FindOrdersDto, @UserId() userId: string) {
|
||||
const orders = await this.ordersService.findAllForUser(userId, dto);
|
||||
return orders
|
||||
}
|
||||
|
||||
@Post('admin/orders/:orderId/create-invoice')
|
||||
@UseGuards(AuthGuard)
|
||||
@ApiOperation({ summary: 'Create invoice for new order' })
|
||||
@ApiParam({ name: 'orderId', description: 'Order ID' })
|
||||
@Post('admin/orders/:orderId/create-invoice')
|
||||
createInvoice(@Param('orderId') orderId: string, @Body() body: CreateInvoiceDto) {
|
||||
return this.ordersService.createInvoice(orderId, body);
|
||||
}
|
||||
@@ -58,17 +49,16 @@ export class OrdersController {
|
||||
// enum: OrderStatus,
|
||||
// })
|
||||
|
||||
// @ApiBody({ type: UpdateOrderStatusDto })
|
||||
// @ApiOperation({ summary: 'Update status of an order By User' })
|
||||
// @ApiParam({ name: 'id', description: 'Order ID' })
|
||||
// cancelOrder(
|
||||
// @Body() dto: UpdateOrderStatusDto,
|
||||
// @Param('id') orderId: string,
|
||||
// @Param('status') status: OrderStatus,
|
||||
// ,
|
||||
// ) {
|
||||
// return this.ordersService.changeOrderStatus(orderId, , status, 'user', dto?.desc);
|
||||
// }
|
||||
@Post('admin/orders/:orderId/items/:orderItemId')
|
||||
@UseGuards(AuthGuard)
|
||||
@ApiOperation({ summary: 'Confirm Invoice Item By User' })
|
||||
confirmOrderItem(
|
||||
@Param('orderId') orderId: string,
|
||||
@Param('orderItemId') orderItemId: string,
|
||||
@UserId() userId: string
|
||||
) {
|
||||
return this.ordersService.confirmOrderItem(userId, orderId, +orderItemId);
|
||||
}
|
||||
|
||||
// /******************** Admin Routes **********************/
|
||||
// @UseGuards(AdminAuthGuard)
|
||||
|
||||
@@ -165,4 +165,24 @@ export class OrdersService {
|
||||
|
||||
return order
|
||||
}
|
||||
|
||||
async confirmOrderItem(userId: string, orderId: string, orderItemId: number) {
|
||||
|
||||
const orderItem = await this.orderItemRepository.findOne({ id: orderItemId, order: { id: orderId } },
|
||||
{ populate: ['order', 'order.user'] })
|
||||
|
||||
if (!orderItem) {
|
||||
throw new BadRequestException("Order Item not found")
|
||||
}
|
||||
|
||||
if (orderItem.order.user.id !== userId) {
|
||||
throw new BadRequestException("Order Item does not belong to you")
|
||||
}
|
||||
|
||||
orderItem.status=OrderItemStatus.CONFIRMED
|
||||
|
||||
this.em.persistAndFlush(OrderItem)
|
||||
|
||||
return orderItem
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user