From d4ef1880b24ca8a978159d0a33a95e33d5e2aa3e Mon Sep 17 00:00:00 2001 From: DewanaGustavus <76590469+DewanaGustavus@users.noreply.github.com> Date: Fri, 17 Nov 2023 13:36:07 +0700 Subject: [PATCH] feat : picked order finish order --- src/api/Order.ts | 13 +++++++++++++ src/pages/PickedOrder.tsx | 2 +- src/pages/PickedOrderDetail.tsx | 31 +++++++++++++++++++++---------- src/utils/Order.ts | 7 ++++++- 4 files changed, 41 insertions(+), 12 deletions(-) diff --git a/src/api/Order.ts b/src/api/Order.ts index 97b8729..da2a8db 100644 --- a/src/api/Order.ts +++ b/src/api/Order.ts @@ -72,3 +72,16 @@ export async function updateOrderAPI(orderId : number, username : string, status throw err; } } + +export async function finishOrderAPI(orderId : number, username : string) { + try { + const API_URL = REST_URL + "/order/finish-order"; + const data = {orderId : orderId, username : username}; + console.log("GOLGOLOG", data); + const response = await axios.put(API_URL, data); + return response; + } catch(err) { + alert(err); + throw err; + } +} diff --git a/src/pages/PickedOrder.tsx b/src/pages/PickedOrder.tsx index dc72fa8..60d1a2d 100644 --- a/src/pages/PickedOrder.tsx +++ b/src/pages/PickedOrder.tsx @@ -18,7 +18,7 @@ export default function PickedOrder() { useEffect(() => { getUserDetail(user.username ? user.username : "").then( (userDetail) => { - const response = getOrderByCourier(userDetail.data.id); + const response = getOrderByCourier(userDetail.data.id ? userDetail.data.id : 0); response.then((order) => { console.log(order.data); setOrders(order.data); diff --git a/src/pages/PickedOrderDetail.tsx b/src/pages/PickedOrderDetail.tsx index f7d1513..ca6132c 100644 --- a/src/pages/PickedOrderDetail.tsx +++ b/src/pages/PickedOrderDetail.tsx @@ -19,41 +19,52 @@ import { import { useEffect, useState } from 'react' import OrderDetail from '../interfaces/OrderDetail'; import OrderInterface from '../interfaces/OrderInterface'; -import { getOrderById, getOrderDetails, updateOrder } from '../utils/Order'; -import { useParams } from 'react-router-dom'; +import { finishOrder, getOrderById, getOrderDetails, updateOrder } from '../utils/Order'; +import { useNavigate, useParams } from 'react-router-dom'; import { getUser } from '../utils/LocalStorage'; export default function PickedOrderDetail() { - const username = getUser(); + const user = getUser(); const { id } = useParams(); const orderId = parseInt(id ? id : "0"); const [order, setOrder] = useState<OrderInterface>(); const [orderDetails, setOrderDetails] = useState<OrderDetail[]>([]); const [pickupStatus, setPickupStatus] = useState(false); const [newDescription, setNewDescription] = useState(""); + const navigate = useNavigate(); function changeDescription() { - if(!username) { + if(!user.username) { alert("Perlu log in"); return; } - updateOrder(orderId, username, order?.status ? order.status : "pickup", newDescription); - setOrder({...order, keterangan : newDescription}) + updateOrder(orderId, user.username, order?.status ? order.status : "pickup", newDescription); + setOrder({...order, keterangan : newDescription}); } function changeTransit() { - if(!username) { + if(!user.username) { alert("Perlu log in"); return; } - updateOrder(orderId, username, "transit", order?.keterangan ? order.keterangan : ""); - setOrder({...order, status : "transit"}) + updateOrder(orderId, user.username, "transit", order?.keterangan ? order.keterangan : ""); + setOrder({...order, status : "transit"}); setPickupStatus(false); } + function finishingOrder() { + if(!user.username) { + alert("Perlu log in"); + return; + } + + finishOrder(orderId, user.username); + navigate("/History"); + } + useEffect(() => { const orderResponse = getOrderById(orderId); const detailResponse = getOrderDetails(orderId); @@ -176,7 +187,6 @@ export default function PickedOrderDetail() { : <> </>} - {/* TODO : make button functionality */} <Button display={{ base: 'none', md: 'inline-flex' }} fontSize={'sm'} @@ -186,6 +196,7 @@ export default function PickedOrderDetail() { _hover={{ bg: 'blue.300', }} + onClick={finishingOrder} > Selesaikan Pengantaran </Button> diff --git a/src/utils/Order.ts b/src/utils/Order.ts index 17e235c..ad71991 100644 --- a/src/utils/Order.ts +++ b/src/utils/Order.ts @@ -1,4 +1,4 @@ -import { fetchAvailableOrder, fetchOrderByCourier, fetchOrderById, fetchOrderDetails, pickOrderAPI, updateOrderAPI } from "../api/Order"; +import { fetchAvailableOrder, fetchOrderByCourier, fetchOrderById, fetchOrderDetails, finishOrderAPI, pickOrderAPI, updateOrderAPI } from "../api/Order"; export async function getAvailableOrder() { const availableOrders = await fetchAvailableOrder(); @@ -29,3 +29,8 @@ export async function updateOrder(orderId : number, username : string, status : const response = await updateOrderAPI(orderId, username, status, description); return response; } + +export async function finishOrder(orderId : number, username : string) { + const response = await finishOrderAPI(orderId, username); + return response; +} -- GitLab