order
This commit is contained in:
@@ -43,40 +43,33 @@ export class OrdersController {
|
||||
return this.ordersService.findOne(orderId, shopId);
|
||||
}
|
||||
|
||||
@UseGuards(AuthGuard)
|
||||
@Patch('public/orders/:id/:status')
|
||||
@ApiParam({
|
||||
name: 'status',
|
||||
description: 'Order status',
|
||||
enum: OrderStatus,
|
||||
})
|
||||
@UseGuards(AuthGuard)
|
||||
@ApiHeader(API_HEADER_SLUG)
|
||||
@ApiBody({ type: UpdateOrderStatusDto })
|
||||
@ApiParam({ name: 'status', description: 'Order status', enum: [OrderStatus.CANCELED, OrderStatus.COMPLETED] })
|
||||
@ApiOperation({ summary: 'Update status of an order By User' })
|
||||
@ApiParam({ name: 'id', description: 'Order ID' })
|
||||
cancelOrder(
|
||||
changeOrderStatus(
|
||||
@Body() dto: UpdateOrderStatusDto,
|
||||
@Param('id') orderId: string,
|
||||
@Param('status') status: OrderStatus,
|
||||
@Param('status') status: OrderStatus.CANCELED | OrderStatus.COMPLETED,
|
||||
@ShopId() shopId: string,
|
||||
) {
|
||||
return this.ordersService.changeOrderStatus(orderId, shopId, status, 'user', dto?.desc);
|
||||
}
|
||||
|
||||
/******************** Admin Routes **********************/
|
||||
@Get('admin/orders')
|
||||
@UseGuards(AdminAuthGuard)
|
||||
@Permissions(Permission.MANAGE_ORDERS)
|
||||
@Get('admin/orders')
|
||||
@ApiOperation({ summary: 'Get all orders with pagination and filters' })
|
||||
findAllAdmin(@ShopId() shopId: string, @Query() dto: FindOrdersDto) {
|
||||
return this.ordersService.findAllForAdmin(shopId, dto);
|
||||
}
|
||||
|
||||
@Get('admin/orders/:orderId')
|
||||
@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, @ShopId() shopId: string) {
|
||||
return this.ordersService.findOne(orderId, shopId);
|
||||
}
|
||||
|
||||
@@ -127,7 +127,7 @@ export class OrdersService {
|
||||
const { paymentUrl } = await this.paymentsService.payOrder(order.id);
|
||||
this.eventEmitter.emit(
|
||||
OrderCreatedEvent.name,
|
||||
new OrderCreatedEvent(order.id, shopId, String(order?.orderNumber) || '', order.total),
|
||||
new OrderCreatedEvent(order.id, shopId, String(order.orderNumber), order.total),
|
||||
);
|
||||
|
||||
return { paymentUrl, order };
|
||||
@@ -269,6 +269,11 @@ export class OrdersService {
|
||||
private canTransition(from: OrderStatus, to: OrderStatus, paymentMethod: PaymentMethodEnum, ref: 'user' | 'admin', deliveryMethod: DeliveryMethodEnum) {
|
||||
if (!OrdersService.STATUS_TRANSITIONS[from]?.includes(to)) return false;
|
||||
|
||||
// user only can change sttaus to complete/canceled
|
||||
if (ref == 'user' && ![OrderStatus.CANCELED, OrderStatus.COMPLETED].includes(to)) {
|
||||
return false
|
||||
}
|
||||
|
||||
if (to === OrderStatus.CANCELED) {
|
||||
// only allow orders with status of PENDING_PAYMENT and PAID are allowed to be canceled by user
|
||||
if (ref === 'user' && ![OrderStatus.PENDING_PAYMENT, OrderStatus.PAID].includes(from)) {
|
||||
|
||||
Reference in New Issue
Block a user