order item

This commit is contained in:
2026-01-26 10:27:34 +03:30
parent b45bc93799
commit 5031e34064
4 changed files with 101 additions and 85 deletions
@@ -4,11 +4,11 @@ import { OrderService } from '../providers/order.service';
import { AuthGuard } from '../../auth/guards/auth.guard';
import { UserId } from '../../../common/decorators/user-id.decorator';
import { FindOrdersDto } from '../dto/find-orders.dto';
import { CreateOrderDto, CreateOrderItemAsUserDto } from '../dto/create-order.dto';
import { CreateOrderDto, CreateOrderItemAsUserDto, CreateOrderItemDtoAsAdmin } from '../dto/create-order.dto';
import { AdminId } from 'src/common/decorators/admin-id.decorator';
import { CreateOrderAsAdminDto } from '../dto/create-order-as-admin.dto';
import { AssignDesignerDto } from '../dto/assign-designer.dto';
import { UpdateOrderItemDto } from '../dto/update-order-item.dto';
import { UpdateOrderItemDtoAsAdmin, UpdateOrderItemDtoAsUser } from '../dto/update-order-item.dto';
@ApiTags('orders')
@ApiBearerAuth()
@@ -26,8 +26,8 @@ export class OrderController {
@Patch('public/order/:id/item/:itemId')
@UseGuards(AuthGuard)
@ApiOperation({ summary: 'Update order item as user' })
updateOrder(@Param('id') orderId: string, @Param(':itemId') itemId: string, @Body() body: UpdateOrderItemDto) {
return this.orderService.updateOrderItemAsUser(orderId, itemId, body);
updateOrder(@Param('id') orderId: string, @UserId() userId: string, @Param(':itemId') itemId: string, @Body() body: UpdateOrderItemDtoAsUser) {
return this.orderService.updateOrderItemAsUser(userId, orderId, itemId, body);
}
@Delete('public/order/:id')
@@ -40,8 +40,8 @@ export class OrderController {
@Patch('public/order/:id/item')
@UseGuards(AuthGuard)
@ApiOperation({ summary: 'add item to order as user' })
addOrderItem(@Param('id') orderId: string, @Body() body: CreateOrderItemAsUserDto) {
return this.orderService.addOrderItemAsUser(orderId, body);
addOrderItem(@Param('id') orderId: string, @UserId() userId: string, @Body() body: CreateOrderItemAsUserDto) {
return this.orderService.addOrderItemAsUser(userId, orderId, body);
}
@@ -64,6 +64,16 @@ export class OrderController {
return this.orderService.confirmOrderItem(userId, orderId, +orderItemId);
}
@Delete('public/orders/:orderId/items/:orderItemId')
@UseGuards(AuthGuard)
@ApiOperation({ summary: 'Remove order Item By User' })
removeOrderItem(
@Param('orderId') orderId: string,
@Param('orderItemId') orderItemId: string,
@UserId() userId: string
) {
return this.orderService.removeOrderItemAsUser(userId, orderId, orderItemId);
}
/*========================== Admin Routes =====================*/
@@ -81,79 +91,38 @@ export class OrderController {
return this.orderService.hardDeleteOrder(orderId);
}
// @Post('admin/orders/:orderId/add-item')
// @UseGuards(AuthGuard)
// @ApiOperation({ summary: 'add item to Order ' })
// addItem(@Param('orderId') orderId: string, @Body() body: AddOrderItemDto) {
// return this.orderService.addOrderItem(orderId, body);
// }
// @Post('admin/orders/:orderId/create-invoice')
// @UseGuards(AuthGuard)
// @ApiOperation({ summary: 'Create invoice for new order' })
// createInvoice(@Param('orderId') orderId: string, @Body() body: CreateInvoiceDto) {
// return this.orderService.calculateOrder(orderId, body);
// }
@Post('admin/orders/:orderId/assign-designer')
@Post('admin/orders/:orderId/designer')
@UseGuards(AuthGuard)
@ApiOperation({ summary: 'Assign Order Designer ' })
assignDesigner(@Param('orderId') orderId: string, @Body() body: AssignDesignerDto) {
return this.orderService.assignDesigner(orderId, body.designerId);
}
@Patch('admin/order/:id/item')
@UseGuards(AuthGuard)
@ApiOperation({ summary: 'add item to order By Admin' })
addOrderItemAsAdmin(@Param('id') orderId: string, @Body() body: CreateOrderItemDtoAsAdmin) {
return this.orderService.addOrderItemAsAdmin(orderId, body);
}
// @UseGuards(AdminAuthGuard)
// @Permissions(Permission.MANAGE_ORDERS)
// @Get('admin/orders')
// @ApiOperation({ summary: 'Get all orders with pagination and filters' })
// findAllAdmin(, @Query() dto: FindOrdersDto) {
// return this.ordersService.findAllForAdmin(, dto);
// }
// @UseGuards(AdminAuthGuard)
// @Permissions(Permission.MANAGE_ORDERS)
// @ApiOperation({ summary: 'Get an order By id for User' })
// @ApiParam({ name: 'orderId', description: 'Order ID' })
// @Get('admin/orders/:orderId')
// findOneAsAdmin(@Param('orderId') orderId: string,) {
// return this.ordersService.findOne(orderId,);
// }
@Delete('admin/orders/:orderId/items/:orderItemId')
@UseGuards(AuthGuard)
@ApiOperation({ summary: 'Remove order Item By Admin' })
removeOrderItemAdAdmin(
@Param('orderId') orderId: string,
@Param('orderItemId') orderItemId: string,
) {
return this.orderService.removeOrderItemAsAdmin(orderId, orderItemId);
}
// @UseGuards(AdminAuthGuard)
// @Permissions(Permission.MANAGE_ORDERS)
// @Patch('admin/orders/:orderId/:status')
// @ApiOperation({ summary: 'Update an order status' })
// @ApiParam({ name: 'orderId', description: 'Order ID' })
// @ApiBody({ type: UpdateOrderStatusDto })
// @ApiParam({
// name: 'status',
// description: 'Order status',
// enum: OrderStatus,
// })
// updateStatus(
// @Param('orderId') orderId: string,
// @Body() dto: UpdateOrderStatusDto,
// @Param('status') status: OrderStatus,
// ,
// ) {
// return this.ordersService.changeOrderStatus(orderId, , status, 'admin', dto?.desc);
// }
@Patch('admin/order/:id/item/:itemId')
@UseGuards(AuthGuard)
@ApiOperation({ summary: 'Update order item' })
updateOrderAsAdmin(@Param('id') orderId: string, @Param(':itemId') itemId: string,
@Body() body: UpdateOrderItemDtoAsAdmin) {
return this.orderService.updateOrderItemAsAdmin(orderId, itemId, body);
}
// @UseGuards(AdminAuthGuard)
// @Permissions(Permission.VIEW_REPORTS)
// @ApiOperation({ summary: 'Get Stats for report page' })
// @Get('admin/orders/stats')
// findStats() {
// return this.ordersService.getStats();
// }
// @UseGuards(AdminAuthGuard)
// @Permissions(Permission.VIEW_REPORTS)
// @ApiOperation({ summary: 'Get product sales pie chart data for last month' })
// @Get('admin/orders/product-sales-pie-chart')
// getproductSalesPieChart() {
// return this.ordersService.getproductSalesPieChart();
// }
}