From d51302dc639292e9c6e32e3c43207faa4bdda275 Mon Sep 17 00:00:00 2001
From: DewanaGustavus <76590469+DewanaGustavus@users.noreply.github.com>
Date: Thu, 16 Nov 2023 23:36:24 +0700
Subject: [PATCH] feat: fetching order detail

---
 src/handler/order/order.router.ts  | 19 ++++++++++++++++++-
 src/handler/order/order.service.ts | 27 ++++++++++++++++-----------
 src/interfaces/OrderDetail.ts      |  2 +-
 3 files changed, 35 insertions(+), 13 deletions(-)

diff --git a/src/handler/order/order.router.ts b/src/handler/order/order.router.ts
index 41e41b0..05cdfc0 100644
--- a/src/handler/order/order.router.ts
+++ b/src/handler/order/order.router.ts
@@ -12,4 +12,21 @@ OrderRouter.get('/available-order', async (request: Request, response: Response)
     } catch (error: any) {
         return response.status(500).json(error.message);
     }
-})
\ No newline at end of file
+})
+OrderRouter.get('/order/:id', async (request: Request, response: Response) => {
+    try {
+        const order = await OrderServices.getOrderById(parseInt(request.params.id));
+        return response.status(200).json(order);
+    } catch (error: any) {
+        return response.status(500).json(error.message);
+    }
+})
+
+OrderRouter.get('/order-details/:id', async (request: Request, response: Response) => {
+    try {
+        const orderDetails = await OrderServices.getOrderDetails(parseInt(request.params.id));
+        return response.status(200).json(orderDetails);
+    } catch (error: any) {
+        return response.status(500).json(error.message);
+    }
+})
diff --git a/src/handler/order/order.service.ts b/src/handler/order/order.service.ts
index 9140dac..883b9a4 100644
--- a/src/handler/order/order.service.ts
+++ b/src/handler/order/order.service.ts
@@ -1,18 +1,23 @@
-import { getPesananNoKurir } from "../soap-caller/PesananSoapCaller";
+import { getPesananByIdPesanan, getPesananNoKurir } from "../soap-caller/PesananSoapCaller";
 import OrderInterface from "../../interfaces/OrderInterface";
+import { getDetailPesanan } from "../soap-caller/DetailPesananSoapCaller";
+import OrderDetail from "../../interfaces/OrderDetail";
+import { ConvertArray, ConvertSingle } from "../../utils/JSONConverter";
 
 export async function getAvailableOrder() {
     const response = await getPesananNoKurir();
-    console.log(response);
-    if(response === null) {
-        return [];
-    }
-
-    const JSONArray = Array.isArray(response) ? response : [response];
+    const availableOrder = ConvertArray<OrderInterface>(response);
+    return availableOrder;
+}
 
-    const availableOrder = JSONArray.map((item: any) => {
-        return JSON.parse(JSON.stringify(item)) as OrderInterface;
-    });
+export async function getOrderById(orderId : number) {
+    const response = await getPesananByIdPesanan(orderId);
+    const order = ConvertSingle(response);
+    return order;
+}
 
-    return availableOrder;
+export async function getOrderDetails(orderId : number) {
+    const response = await getDetailPesanan(orderId);
+    const orderDetails = ConvertArray<OrderDetail>(response);
+    return orderDetails;
 }
\ No newline at end of file
diff --git a/src/interfaces/OrderDetail.ts b/src/interfaces/OrderDetail.ts
index 46cf530..b6e98d5 100644
--- a/src/interfaces/OrderDetail.ts
+++ b/src/interfaces/OrderDetail.ts
@@ -1,7 +1,7 @@
 
 export default interface OrderDetail {    
     id_pesanan : number
-    nama_produk : string
+    nama_product : string
     quantity : number
     harga : number
 }
\ No newline at end of file
-- 
GitLab