diff --git a/src/api/Order.ts b/src/api/Order.ts index 97b8729ce9b504c25d885e23e06f039557d84517..da2a8db2c4e200367ac6cff4519e8cb5e279c543 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 dc72fa8e7b40c0ae8a73258a4239515b07817071..60d1a2d6c57a46792cd65c68278a4f685aa6efe3 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 f7d151377ab0a034de9f38f6f423daa939ffa592..ca6132cbb009d7cd34997c547f9d0cd08550e9a1 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 17e235c632c7ef1003cf1683b447521ddcc6c432..ad71991fbc07b6119b60612d508dcb5dde0f0a2b 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; +}