confirm order item

This commit is contained in:
2026-01-18 00:08:13 +03:30
parent 90de3c743d
commit 27631907cf
2 changed files with 31 additions and 21 deletions
@@ -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
}
}