feat(order): add order detail
This commit is contained in:
@@ -322,6 +322,29 @@ class OrderService {
|
||||
}
|
||||
//#######################################################
|
||||
//#######################################################
|
||||
|
||||
async getAdminUserOrderDetail(orderId: number) {
|
||||
const { order } = await this.validateAdminUserOrder(orderId);
|
||||
|
||||
const doc = await this.orderRepo.getUserOrderDetail(orderId, order.user._id.toString());
|
||||
const cleanedOrder = SellerOrdersDTO.transformOrder(doc[0]);
|
||||
|
||||
return { order: cleanedOrder };
|
||||
}
|
||||
//#######################################################
|
||||
//#######################################################
|
||||
|
||||
async getAdminSellerOrderDetail(orderId: number) {
|
||||
const { shopIds } = await this.validateAdminSellerOrder(orderId);
|
||||
|
||||
const doc = await this.orderItemRepo.getSellerOrderDetailForAdminPanel(orderId, shopIds);
|
||||
|
||||
const cleanedOrder = SellerOrdersDTO.transformOrder(doc[0]);
|
||||
|
||||
return { order: cleanedOrder };
|
||||
}
|
||||
//#######################################################
|
||||
//#######################################################
|
||||
async getSellerSalesStats(sellerId: string, queries: { start: string; end: string }) {
|
||||
const shop = await this.shopRepo.model.findOne({ owner: sellerId });
|
||||
if (!shop) throw new BadRequestError(ShopMessage.ShopNotFound);
|
||||
@@ -365,6 +388,30 @@ class OrderService {
|
||||
|
||||
return { order, orderItems };
|
||||
}
|
||||
//#######################################################
|
||||
//#######################################################
|
||||
private async validateAdminUserOrder(orderId: number) {
|
||||
const order = await this.orderRepo.model.findOne({ _id: orderId });
|
||||
if (!order) throw new BadRequestError(OrderMessage.NotFound);
|
||||
|
||||
const orderItems = await this.orderItemRepo.model.find({ order: order._id });
|
||||
if (!orderItems || orderItems.length === 0) throw new BadRequestError(OrderMessage.OrderItemsNotFound);
|
||||
|
||||
return { order, orderItems };
|
||||
}
|
||||
//#######################################################
|
||||
//#######################################################
|
||||
private async validateAdminSellerOrder(orderId: number) {
|
||||
const order = await this.orderRepo.model.findOne({ _id: orderId }).lean();
|
||||
if (!order) throw new BadRequestError(OrderMessage.NotFound);
|
||||
|
||||
const orderItems = await this.orderItemRepo.model.find({ order: orderId }).lean();
|
||||
const shopIds = orderItems.map((item) => item.shop._id);
|
||||
|
||||
const orderItem = await this.orderItemRepo.model.findOne({ shop: { in: shopIds }, order: order._id });
|
||||
if (!orderItem) throw new BadRequestError(OrderMessage.OrderItemsNotFound);
|
||||
return { order, orderItem, shopIds };
|
||||
}
|
||||
|
||||
//#######################################
|
||||
//#######################################
|
||||
|
||||
Reference in New Issue
Block a user