// import React, { useState } from "react";
// import { useGetOrdersQuery } from "../../features/orders/ordersApi";
// const statusColor = {
// PENDING: "bg-yellow-100 text-yellow-800",
// PAID: "bg-blue-100 text-blue-800",
// SHIPPED: "bg-purple-100 text-purple-800",
// DELIVERED: "bg-green-100 text-green-800",
// CANCELLED: "bg-red-100 text-red-800",
// RETURNED: "bg-gray-100 text-gray-800",
// };
// // LEFT FILTERS
// const OrderFilters = ({ filters, setFilters }) => {
// const toggleStatus = (status) => {
// if (filters.status.includes(status)) {
// setFilters({
// ...filters,
// status: filters.status.filter((s) => s !== status),
// });
// } else {
// setFilters({ ...filters, status: [...filters.status, status] });
// }
// };
// return (
//
//
Filter Orders
//
//
Status
//
// {["PENDING", "ON_THE_WAY", "DELIVERED", "CANCELLED", "RETURNED"].map(
// (status) => (
//
// )
// )}
//
//
//
//
Order Time
//
//
//
// );
// };
// // ORDER CARD
// const OrderCard = ({ order }) => {
// return (
//
// {/* Header */}
//
//
//
Order ID
//
{order.orderNumber}
//
// {new Date(order.createdAt).toLocaleString()}
//
//
//
//
// {order.status.replace("_", " ")}
//
//
// ₹{Number(order.totalAmount).toFixed(2)}
//
//
//
// {/* Items */}
//
// {order.items.map((item) => (
//
//
//
{item.productName}
//
Qty: {item.quantity}
//
//
// ₹{Number(item.price).toFixed(2)}
//
//
// ))}
//
// {/* Footer */}
//
//
//
Shipping Address
//
// {order.address.firstName} {order.address.lastName},{" "}
// {order.address.addressLine1}, {order.address.city},{" "}
// {order.address.state} - {order.address.postalCode}
//
//
//
//
// Payment:{" "}
// {order.paymentMethod}
//
//
// Payment Status:{" "}
// {order.paymentStatus}
//
//
//
//
// );
// };
// // MAIN COMPONENT
// const MyOrders = () => {
// const { data, isLoading, isError } = useGetOrdersQuery({
// page: 1,
// limit: 50,
// });
// const [filters, setFilters] = useState({
// status: [],
// time: "30_DAYS",
// });
// const orders = data?.orders || [];
// const filteredOrders = orders.filter((order) => {
// if (filters.status.length && !filters.status.includes(order.status)) return false;
// const orderDate = new Date(order.createdAt);
// const now = new Date();
// if (filters.time === "30_DAYS" && (now - orderDate) / (1000 * 60 * 60 * 24) > 30)
// return false;
// if (filters.time === "2024" && orderDate.getFullYear() !== 2024) return false;
// if (filters.time === "2023" && orderDate.getFullYear() !== 2023) return false;
// return true;
// });
// if (isLoading)
// return (
//
// Loading orders...
//
// );
// if (isError || !orders.length)
// return (
//
// No orders found
//
// );
// return (
//
//
My Orders
//
// {/* Filters */}
//
// {/* Orders */}
//
// {filteredOrders.length === 0 ? (
//
// No orders match your filters
//
// ) : (
// filteredOrders.map((order) =>
)
// )}
//
//
//
// );
// };
// export default MyOrders;
import React, { useState } from "react";
import { useGetOrdersQuery } from "../../features/orders/ordersApi";
import { useNavigate } from "react-router-dom";
import { statusColor } from "../../constants/statusColor";
// const statusColor = {
// PENDING: "bg-yellow-100 text-yellow-800",
// PAID: "bg-blue-100 text-blue-800",
// SHIPPED: "bg-purple-100 text-purple-800",
// DELIVERED: "bg-green-100 text-green-800",
// CANCELLED: "bg-red-100 text-red-800",
// RETURNED: "bg-gray-100 text-gray-800",
// };
// LEFT FILTERS
const OrderFilters = ({ filters, setFilters }) => {
const toggleStatus = (status) => {
if (filters.status.includes(status)) {
setFilters({
...filters,
status: filters.status.filter((s) => s !== status),
});
} else {
setFilters({ ...filters, status: [...filters.status, status] });
}
};
return (
Filter Orders
Order Time
);
};
// ORDER CARD
const OrderCard = ({ order }) => {
const navigate = useNavigate();
return (
navigate(`/my-orders/${order.id}`)}
>
{/* Header */}
Order ID
{order.orderNumber}
{new Date(order.createdAt).toLocaleString()}
{order.status.replace("_", " ")}
₹{Number(order.totalAmount).toFixed(2)}
{/* Items */}
{order.items.map((item) => (
{item.productName}
Qty: {item.quantity}
₹{Number(item.price).toFixed(2)}
))}
{/* Footer */}
Shipping Address
{order.address.firstName} {order.address.lastName},{" "}
{order.address.addressLine1}, {order.address.city},{" "}
{order.address.state} - {order.address.postalCode}
Payment: {order.paymentMethod}
Payment Status:{" "}
{order.paymentStatus}
);
};
// MAIN COMPONENT
const MyOrders = () => {
const { data, isLoading, isError } = useGetOrdersQuery({
page: 1,
limit: 50,
});
const [filters, setFilters] = useState({
status: [],
time: "30_DAYS",
});
const [searchQuery, setSearchQuery] = useState("");
const orders = data?.orders || [];
const filteredOrders = orders
.filter((order) => {
if (filters.status.length && !filters.status.includes(order.status))
return false;
const orderDate = new Date(order.createdAt);
const now = new Date();
if (
filters.time === "30_DAYS" &&
(now - orderDate) / (1000 * 60 * 60 * 24) > 30
)
return false;
if (filters.time === "2024" && orderDate.getFullYear() !== 2024)
return false;
if (filters.time === "2023" && orderDate.getFullYear() !== 2023)
return false;
return true;
})
.filter((order) => {
// SEARCH FILTER
if (!searchQuery) return true;
const q = searchQuery.toLowerCase();
const inOrderId = order.orderNumber.toLowerCase().includes(q);
const inCustomer = `${order.address.firstName} ${order.address.lastName}`
.toLowerCase()
.includes(q);
const inProduct = order.items.some((item) =>
item.productName.toLowerCase().includes(q)
);
return inOrderId || inCustomer || inProduct;
});
if (isLoading)
return (
Loading orders...
);
if (isError || !orders.length)
return (
No orders found
);
return (
My Orders
{/* SEARCH BAR */}
{/* SEARCH BAR */}
{/* Filters */}
{/* Orders */}
{filteredOrders.length === 0 ? (
No orders match your filters
) : (
filteredOrders.map((order) => (
))
)}
);
};
export default MyOrders;