feat(order): add order detail

This commit is contained in:
morteza-mortezai
2025-09-27 23:32:27 +03:30
parent 79f597cc90
commit 7e344fd695
3 changed files with 265 additions and 0 deletions
+47
View File
@@ -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 };
}
//#######################################
//#######################################