From a785f74e8835314491654f73bdf6e6fd93499c45 Mon Sep 17 00:00:00 2001
From: DewanaGustavus <76590469+DewanaGustavus@users.noreply.github.com>
Date: Thu, 16 Nov 2023 21:59:32 +0700
Subject: [PATCH] feat: fetch available order from SOAP

---
 src/handler/order/order.router.ts  | 15 +++++++++++++++
 src/handler/order/order.service.ts | 18 ++++++++++++++++++
 src/interfaces/OrderDetail.ts      |  7 +++++++
 src/interfaces/OrderInterface.ts   | 13 +++++++++++++
 src/interfaces/OrderStatus.ts      |  4 ++++
 5 files changed, 57 insertions(+)
 create mode 100644 src/handler/order/order.router.ts
 create mode 100644 src/handler/order/order.service.ts
 create mode 100644 src/interfaces/OrderDetail.ts
 create mode 100644 src/interfaces/OrderInterface.ts
 create mode 100644 src/interfaces/OrderStatus.ts

diff --git a/src/handler/order/order.router.ts b/src/handler/order/order.router.ts
new file mode 100644
index 0000000..41e41b0
--- /dev/null
+++ b/src/handler/order/order.router.ts
@@ -0,0 +1,15 @@
+import express from "express";
+import type { Request, Response } from "express";
+
+import * as OrderServices from './order.service'
+
+export const OrderRouter = express.Router()
+
+OrderRouter.get('/available-order', async (request: Request, response: Response) => {
+    try {
+        const availableOrder = await OrderServices.getAvailableOrder();
+        return response.status(200).json(availableOrder);
+    } catch (error: any) {
+        return response.status(500).json(error.message);
+    }
+})
\ No newline at end of file
diff --git a/src/handler/order/order.service.ts b/src/handler/order/order.service.ts
new file mode 100644
index 0000000..9140dac
--- /dev/null
+++ b/src/handler/order/order.service.ts
@@ -0,0 +1,18 @@
+import { getPesananNoKurir } from "../soap-caller/PesananSoapCaller";
+import OrderInterface from "../../interfaces/OrderInterface";
+
+export async function getAvailableOrder() {
+    const response = await getPesananNoKurir();
+    console.log(response);
+    if(response === null) {
+        return [];
+    }
+
+    const JSONArray = Array.isArray(response) ? response : [response];
+
+    const availableOrder = JSONArray.map((item: any) => {
+        return JSON.parse(JSON.stringify(item)) as OrderInterface;
+    });
+
+    return availableOrder;
+}
\ No newline at end of file
diff --git a/src/interfaces/OrderDetail.ts b/src/interfaces/OrderDetail.ts
new file mode 100644
index 0000000..46cf530
--- /dev/null
+++ b/src/interfaces/OrderDetail.ts
@@ -0,0 +1,7 @@
+
+export default interface OrderDetail {    
+    id_pesanan : number
+    nama_produk : string
+    quantity : number
+    harga : number
+}
\ No newline at end of file
diff --git a/src/interfaces/OrderInterface.ts b/src/interfaces/OrderInterface.ts
new file mode 100644
index 0000000..39b914d
--- /dev/null
+++ b/src/interfaces/OrderInterface.ts
@@ -0,0 +1,13 @@
+import OrderStatus from "./OrderStatus"
+
+export default interface OrderInterface {
+    alamat : string
+    biaya_pengiriman : number
+    harga : number
+    id : number
+    id_kurir : number
+    id_pemesan : number
+    keterangan : string
+    nama_penerima : string
+    status : OrderStatus
+}
\ No newline at end of file
diff --git a/src/interfaces/OrderStatus.ts b/src/interfaces/OrderStatus.ts
new file mode 100644
index 0000000..a49f958
--- /dev/null
+++ b/src/interfaces/OrderStatus.ts
@@ -0,0 +1,4 @@
+
+type OrderStatus = 'searching_courier' | 'pickup' | 'transit' | 'delivered';
+
+export default OrderStatus;
\ No newline at end of file
-- 
GitLab