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
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-
-//
-//
-//
-//
-// Order ID |
-// Customer |
-// Order value |
-// Order At |
-// Status |
-// Actions |
-//
-//
-//
-// {!loading && showData.length === 0 && (
-//
-//
-// No Data Available
-// |
-//
-// )}
-// {loading ? (
-//
-//
-// Loading...
-// |
-//
-// ) : (
-// showData.map((order, i) => {
-// return (
-//
-// {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
- 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}
))
- ) : 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.dispatched).toDateString()}
+ , {formatAMPM(invoice.courierstatus_timeline.dispatched)}
- {order.orderItem.length}
- {order.grandTotal.toFixed(2)}
- {order.status}
+ {invoice.items.length}
+ {invoice.invoiceAmount}
+ {invoice.courierStatus}
- navigate(`/orders/${order.status}/${order._id}`)
+ navigate(`/orders/${invoice.courierStatus}/${invoice._id}`)
}
>
View
@@ -464,7 +163,7 @@ const DispatchedOrders = () => {
) : (
- Data not found
+ No data found
)}
@@ -475,7 +174,7 @@ const DispatchedOrders = () => {
component="div"
count={totalOrders}
rowsPerPage={rowsPerPage}
- page={page}
+ page={page}
onPageChange={handleChangePage}
onRowsPerPageChange={handleChangeRowsPerPage}
/>
@@ -486,14 +185,12 @@ const DispatchedOrders = () => {
// Helper function to format time as AM/PM
const formatAMPM = (date) => {
- var hours = new Date(date).getHours();
- var minutes = new Date(date).getMinutes();
- var ampm = hours >= 12 ? "PM" : "AM";
- hours = hours % 12;
- hours = hours ? hours : 12;
- minutes = minutes < 10 ? "0" + minutes : minutes;
- var strTime = hours + ":" + minutes + " " + ampm;
- return strTime;
+ const hours = new Date(date).getHours();
+ const minutes = new Date(date).getMinutes();
+ const ampm = hours >= 12 ? "PM" : "AM";
+ const formattedHours = hours % 12 || 12;
+ const formattedMinutes = minutes < 10 ? "0" + minutes : minutes;
+ return `${formattedHours}:${formattedMinutes} ${ampm}`;
};
-export default DispatchedOrders;
+export default ProcessingOrders;
diff --git a/src/views/orders/ProcessingOrders.js b/src/views/orders/ProcessingOrders.js
index f11f74f..7ab46d5 100644
--- a/src/views/orders/ProcessingOrders.js
+++ b/src/views/orders/ProcessingOrders.js
@@ -1,306 +1,4 @@
-// import React, { useState, useEffect } from "react";
-// import { Link } from "react-router-dom";
-// import axios from "axios";
-// import { isAutheticated } from "src/auth";
-// import toast from "react-hot-toast";
-
-// function ProcessingOrders() {
-// const token = isAutheticated();
-// const [loading, setLoading] = useState(true);
-// const [success, setSuccess] = useState(true);
-// const [processingOrdersData, setProcessingOrdersData] = useState([]);
-
-// const [currentPage, setCurrentPage] = useState(1);
-// const [itemPerPage, setItemPerPage] = useState(10);
-// const [showData, setShowData] = useState(processingOrdersData);
-
-// const handleShowEntries = (e) => {
-// setCurrentPage(1);
-// setItemPerPage(e.target.value);
-// };
-
-// useEffect(() => {
-// function getProcessingOrder() {
-// axios
-// .get(`/api/order/getAll/processing`, {
-// headers: {
-// "Access-Control-Allow-Origin": "*",
-// Authorization: `Bearer ${token}`,
-// },
-// })
-// .then((res) => {
-// console.log(res.data.order);
-// setProcessingOrdersData(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(
-// processingOrdersData.slice(indexOfFirstPost, indexOfLastPost)
-// );
-// };
-// loadData();
-// }, [currentPage, itemPerPage, processingOrdersData]);
-
-// return (
-//
-//
-//
-//
-//
-//
-//
-// Processing Orders
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-
-//
-//
-//
-//
-// Order ID |
-// Customer |
-// Order value |
-// Order At |
-// Status |
-// Actions |
-//
-//
-//
-// {!loading && showData.length === 0 && (
-//
-//
-// No Data Available
-// |
-//
-// )}
-// {loading ? (
-//
-//
-// Loading...
-// |
-//
-// ) : (
-// showData.map((order, i) => {
-// return (
-//
-// {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}
-//
-// |
-//
-// {/* */}
-//
-//
-// View
-//
-//
-// |
-//
-// );
-// })
-// )}
-//
-//
-//
-
-//
-//
-//
-// Showing {currentPage * itemPerPage - itemPerPage + 1} to{" "}
-// {Math.min(
-// currentPage * itemPerPage,
-// processingOrdersData.length
-// )}{" "}
-// of {processingOrdersData.length} entries
-//
-//
-
-//
-//
-//
-// -
-// setCurrentPage((prev) => prev - 1)}
-// >
-// Previous
-//
-//
-
-// {!(currentPage - 1 < 1) && (
-// -
-//
-// setCurrentPage((prev) => prev - 1)
-// }
-// >
-// {currentPage - 1}
-//
-//
-// )}
-
-// -
-//
-// {currentPage}
-//
-//
-
-// {!(
-// (currentPage + 1) * itemPerPage - itemPerPage >
-// processingOrdersData.length - 1
-// ) && (
-// -
-// {
-// setCurrentPage((prev) => prev + 1);
-// }}
-// >
-// {currentPage + 1}
-//
-//
-// )}
-
-// -
-// processingOrdersData.length - 1
-// )
-// ? "paginate_button page-item next"
-// : "paginate_button page-item next disabled"
-// }
-// >
-// setCurrentPage((prev) => prev + 1)}
-// >
-// Next
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-//
-// );
-// }
-
-// export default ProcessingOrders;
-
-import React, { useState, useEffect } from "react";
+import React, { useState, useEffect, useRef } from "react";
import {
Box,
Button,
@@ -323,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 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-processing-order-admin", {
+ const response = await axios.get("/api/get-processing-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?.processingOrders);
- setTotalOrders(response?.data?.totalOrders);
+ setOrders(response?.data?.invoices);
+ setTotalOrders(response?.data?.totalCount);
} catch (error) {
console.error("Error fetching orders:", error);
} finally {
@@ -361,11 +64,13 @@ const ProcessingOrders = () => {
};
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) => {
@@ -373,28 +78,18 @@ const ProcessingOrders = () => {
};
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 orders;
- });
-
return (
- Processing Order Placed List
+ Processing Invoice List
@@ -407,7 +102,7 @@ const ProcessingOrders = () => {
label="Search By"
>
-
+
{
Order ID
- Order Date
+ Invoice ID
+ Processing Date
Items
- Order Value
+ Invoice Value
Status
Action
@@ -439,23 +135,24 @@ const ProcessingOrders = () => {
))
- ) : 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.processing).toDateString()}
+ , {formatAMPM(invoice.courierstatus_timeline.processing)}
- {order.orderItem.length}
- {order.grandTotal.toFixed(2)}
- {order.status}
+ {invoice.items.length}
+ {invoice.invoiceAmount}
+ {invoice.courierStatus}
- navigate(`/orders/${order.status}/${order._id}`)
+ navigate(`/orders/${invoice.courierStatus}/${invoice._id}`)
}
>
View
@@ -466,7 +163,7 @@ const ProcessingOrders = () => {
) : (
- Data not found
+ No data found
)}
@@ -477,7 +174,7 @@ const ProcessingOrders = () => {
component="div"
count={totalOrders}
rowsPerPage={rowsPerPage}
- page={page}
+ page={page}
onPageChange={handleChangePage}
onRowsPerPageChange={handleChangeRowsPerPage}
/>
@@ -488,14 +185,12 @@ const ProcessingOrders = () => {
// Helper function to format time as AM/PM
const formatAMPM = (date) => {
- var hours = new Date(date).getHours();
- var minutes = new Date(date).getMinutes();
- var ampm = hours >= 12 ? "PM" : "AM";
- hours = hours % 12;
- hours = hours ? hours : 12;
- minutes = minutes < 10 ? "0" + minutes : minutes;
- var strTime = hours + ":" + minutes + " " + ampm;
- return strTime;
+ const hours = new Date(date).getHours();
+ const minutes = new Date(date).getMinutes();
+ const ampm = hours >= 12 ? "PM" : "AM";
+ const formattedHours = hours % 12 || 12;
+ const formattedMinutes = minutes < 10 ? "0" + minutes : minutes;
+ return `${formattedHours}:${formattedMinutes} ${ampm}`;
};
export default ProcessingOrders;