diff --git a/src/views/orders/DeliveredOrders.js b/src/views/orders/DeliveredOrders.js index e4fce14..66c423c 100644 --- a/src/views/orders/DeliveredOrders.js +++ b/src/views/orders/DeliveredOrders.js @@ -1,302 +1,4 @@ -// import React, { useState, useEffect } from "react"; -// import { Link } from "react-router-dom"; -// import axios from "axios"; -// import { isAutheticated } from "src/auth"; - -// function DeliveredOrders() { -// const token = isAutheticated(); -// const [loading, setLoading] = useState(true); -// const [success, setSuccess] = useState(true); -// const [deliveredOrdersData, setDeliveredOrdersData] = useState([]); - -// const [currentPage, setCurrentPage] = useState(1); -// const [itemPerPage, setItemPerPage] = useState(10); -// const [showData, setShowData] = useState(deliveredOrdersData); - -// const handleShowEntries = (e) => { -// setCurrentPage(1); -// setItemPerPage(e.target.value); -// }; - -// useEffect(() => { -// function getProcessingOrder() { -// axios -// .get(`/api/order/getAll/delivered`, { -// headers: { -// "Access-Control-Allow-Origin": "*", -// Authorization: `Bearer ${token}`, -// }, -// }) -// .then((res) => { -// setDeliveredOrdersData(res.data.order); -// setLoading(false); -// }) -// .catch((err) => { -// console.log(err); -// setLoading(false); -// }); -// } -// getProcessingOrder(); -// }, []); - -// useEffect(() => { -// const loadData = () => { -// const indexOfLastPost = currentPage * itemPerPage; -// const indexOfFirstPost = indexOfLastPost - itemPerPage; -// setShowData(deliveredOrdersData.slice(indexOfFirstPost, indexOfLastPost)); -// }; -// loadData(); -// }, [currentPage, itemPerPage, deliveredOrdersData]); - -// return ( -//
-//
-//
-//
-//
-//
-//
-// Delivered Orders -//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-// -//
-//
-//
- -//
-// -// -// -// -// -// -// -// -// -// -// -// -// {!loading && showData.length === 0 && ( -// -// -// -// )} -// {loading ? ( -// -// -// -// ) : ( -// showData.map((order, i) => { -// return ( -// -// -// -// -// -// -// -// -// ); -// }) -// )} -// -//
Order IDCustomerOrder valueOrder AtStatusActions
-//
No Data Available
-//
-// Loading... -//
{order?.orderID} -// {order?.user?.name} -// -// ₹{order?.total_amount} -// -// {new Date(order?.paidAt).toLocaleString( -// "en-IN", -// { -// month: "short", -// day: "numeric", -// year: "numeric", -// hour: "2-digit", -// minute: "numeric", -// hour12: true, -// } -// )} -// -// -// {order?.orderStatus} -// -// -// {/* */} -// -// -// -//
-//
- -//
-//
-//
-// Showing {currentPage * itemPerPage - itemPerPage + 1} to{" "} -// {Math.min( -// currentPage * itemPerPage, -// deliveredOrdersData.length -// )}{" "} -// of {deliveredOrdersData.length} entries -//
-//
- -//
-//
-//
    -//
  • -// setCurrentPage((prev) => prev - 1)} -// > -// Previous -// -//
  • - -// {!(currentPage - 1 < 1) && ( -//
  • -// -// setCurrentPage((prev) => prev - 1) -// } -// > -// {currentPage - 1} -// -//
  • -// )} - -//
  • -// -// {currentPage} -// -//
  • - -// {!( -// (currentPage + 1) * itemPerPage - itemPerPage > -// deliveredOrdersData.length - 1 -// ) && ( -//
  • -// { -// setCurrentPage((prev) => prev + 1); -// }} -// > -// {currentPage + 1} -// -//
  • -// )} - -//
  • -// deliveredOrdersData.length - 1 -// ) -// ? "paginate_button page-item next" -// : "paginate_button page-item next disabled" -// } -// > -// setCurrentPage((prev) => prev + 1)} -// > -// Next -// -//
  • -//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-// ); -// } - -// export default DeliveredOrders; - -import React, { useState, useEffect } from "react"; +import React, { useState, useEffect, useRef } from "react"; import { Box, Button, @@ -319,36 +21,41 @@ import { import { useNavigate } from "react-router-dom"; import axios from "axios"; import { isAutheticated } from "src/auth"; +import { debounce } from "lodash"; // Import debounce from lodash -const DeliveredOrders = () => { +const ProcessingOrders = () => { const [orders, setOrders] = useState([]); const [loading, setLoading] = useState(true); - const [page, setPage] = useState(0); + const [page, setPage] = useState(0); // 0-based page const [rowsPerPage, setRowsPerPage] = useState(5); const [totalOrders, setTotalOrders] = useState(0); const [searchField, setSearchField] = useState("Order ID"); const [searchText, setSearchText] = useState(""); const navigate = useNavigate(); const token = isAutheticated(); + const searchRef = useRef(); + const fetchOrdersDebounced = useRef( + debounce((page, limit, searchField, searchText) => { + fetchOrders(page, limit, searchField, searchText); + }, 500) + ).current; - // Fetch orders with pagination - const fetchOrders = async (page, limit) => { + + const fetchOrders = async (page, limit, searchField = "", searchText = "") => { setLoading(true); try { - const response = await axios.get("/api/get-delivered-order-admin", { + const response = await axios.get("/api/get-delivered-invoice-admin", { headers: { Authorization: `Bearer ${token}`, }, params: { - page: page + 1, // Adjusting for zero-based index in the UI limit, - searchField, - searchText, + page: page + 1, + [searchField === "Order ID" ? "orderId" : "invoiceId"]: searchText || "", }, }); - // console.log(response); - setOrders(response?.data?.deliveredOrders); - setTotalOrders(response?.data?.totalOrders); + setOrders(response?.data?.invoices); + setTotalOrders(response?.data?.totalCount); } catch (error) { console.error("Error fetching orders:", error); } finally { @@ -357,11 +64,13 @@ const DeliveredOrders = () => { }; useEffect(() => { - fetchOrders(page, rowsPerPage); - }, [page, rowsPerPage, searchField, searchText]); + fetchOrdersDebounced(page, rowsPerPage, searchField, searchText); + }, [page, rowsPerPage, searchField, searchText]); const handleSearchChange = (event) => { - setSearchText(event.target.value); + const value = event.target.value; + setSearchText(value); + searchRef.current = value; }; const handleSearchFieldChange = (event) => { @@ -369,28 +78,18 @@ const DeliveredOrders = () => { }; const handleChangePage = (event, newPage) => { - setPage(newPage); + setPage(newPage); }; const handleChangeRowsPerPage = (event) => { setRowsPerPage(parseInt(event.target.value, 10)); - setPage(0); + setPage(0); }; - const filteredOrders = orders?.filter((order) => { - if (searchField === "Order ID") { - return order.uniqueId.toLowerCase().includes(searchText.toLowerCase()); - } - if (searchField === "Status") { - return order.status.toLowerCase().includes(searchText.toLowerCase()); - } - return true; - }); - return ( - Delivered Order Placed List + Delivered Invoice List @@ -403,7 +102,7 @@ const DeliveredOrders = () => { label="Search By" > Order ID - Status + Invoice ID { Order ID - Order Date + Invoice ID + Processing Date Items - Order Value + Invoice Value Status Action @@ -435,23 +135,24 @@ const DeliveredOrders = () => { )) - ) : filteredOrders.length > 0 ? ( - filteredOrders.map((order) => ( - - {order.uniqueId} + ) : orders.length > 0 ? ( + orders.map((invoice) => ( + + {invoice.orderId.uniqueId} + {invoice.invoiceId} - {new Date(order.createdAt).toDateString()} - , {formatAMPM(order.createdAt)} + {new Date(invoice.courierstatus_timeline.delivered).toDateString()} + , {formatAMPM(invoice.courierstatus_timeline.delivered)} - {order.orderItem.length} - {order.grandTotal.toFixed(2)} - {order.status} + {invoice.items.length} + {invoice.invoiceAmount} + {invoice.courierStatus}