diff --git a/backend/src/controller/OrderProductController.ts b/backend/src/controller/OrderProductController.ts index 9507dca19abc7f80aa90ec5b57d78a0483a6f76c..0f6a21e96696f28d177ed2c7675af1121282c731 100644 --- a/backend/src/controller/OrderProductController.ts +++ b/backend/src/controller/OrderProductController.ts @@ -69,6 +69,25 @@ class OrderProductController { } } + async getOrderProductByOrderId(req: Request, res: Response) { + try { + const id_order = parseInt(req.params["orderId"]); + const orderProducts = + await new OrderProductRepo().getOrderProductByOrderId(id_order); + + res.status(200).json({ + status: "Ok!", + message: "Successfully fetched order products by order id!", + data: orderProducts, + }); + } catch (error) { + res.status(500).json({ + status: "Internal Server Error!", + message: "Internal Server Error!", + }); + } + } + async getAllOrderProduct(req: Request, res: Response) { try { const orderProducts = diff --git a/backend/src/repository/OrderProductRepo.ts b/backend/src/repository/OrderProductRepo.ts index e03d26477c4b98597db1ab2b98c55142bd910d5d..c83e977eea63a39406d3af0e71289c01b8c5187f 100644 --- a/backend/src/repository/OrderProductRepo.ts +++ b/backend/src/repository/OrderProductRepo.ts @@ -44,6 +44,24 @@ export default class OrderProductRepo implements IOrderProductRepo { } } + async getOrderProductByOrderId(orderId: number): Promise<OrderProduct[]> { + try { + const orderProducts = await OrderProduct.findAll({ + where: { id_order: orderId }, + }); + if (!orderProducts) { + throw new Error( + `OrderProduct with orderId ${orderId} not found`, + ); + } + return orderProducts; + } catch (error: any) { + throw new Error( + `Error while fetching order product: ${error.message}`, + ); + } + } + async createOrderProduct(orderProduct: OrderProduct): Promise<void> { try { await OrderProduct.create({ diff --git a/backend/src/router/OrderProductRouter.ts b/backend/src/router/OrderProductRouter.ts index 6603ba48bcdeeefc8a0f6b501698a9810ffaeb5c..77a217ec35f860bb4fc2e4b2f7b0db3d669cfae9 100644 --- a/backend/src/router/OrderProductRouter.ts +++ b/backend/src/router/OrderProductRouter.ts @@ -28,6 +28,10 @@ class OrderProductRoutes extends BaseRoutes { "/:orderId/:productId", OrderProductController.getOrderProductById, ); + this.router.get( + "/:orderId", + OrderProductController.getOrderProductByOrderId, + ); } }