/* eslint-disable @typescript-eslint/no-explicit-any */ import React, { useCallback } from "react"; import { // eslint-disable-next-line @typescript-eslint/no-unused-vars createReturnOrder, deleteDraft, getBulkOrders, } from "../../../../Api/OrderApi"; import BottomSheetModal from "../../../Modal/BottomSheetModal"; import CustomizeOrderModal from "../../../Modal/CustomizeOrderModal"; import HourGlassLoader from "../../../Loader/Loader"; import { amountFormatWithCurrency, cryptoHandler, formatDate, getFormattedAddress, getOrderStatusInfo, handleFuturePickup, truncateWithTooltip, } from "../../../../lib/Helper"; import NoData from "../../../NoDataContainer/NoData"; import { BulkOrderStatus, OrderStatus } from "@/Constant/enums"; import { useRouter } from "next/navigation"; import { toast } from "react-toastify"; import AccordionOrder from "./AccordionOrder"; import Image from "next/image"; interface PropsType { tab?: any; edit?: boolean; page?: string; filters?: any; orderCardDetails?: any; setDashboard?: any; dashboard?: any; refreshList?: boolean; handleEdit: any; orders: any; setOrders: any; setRefreshList: any; } const OrderCard = ({ orders, setOrders, tab = "draft", edit = true, page = "", filters, orderCardDetails, refreshList = false, setRefreshList, handleEdit }: PropsType) => { const storedUser = localStorage.getItem("ALL_DATA"); const allData = storedUser ? JSON.parse(storedUser)?.data : null; const [accordionView] = React.useState(false); const [selectedOrders, setSelectedOrders] = React.useState({}); const [isLoading, setIsLoading] = React.useState(true); const [customizeOrderModal, setCustomizeOrderModal] = React.useState(false); const [showDropdown, setShowDropdown] = React.useState(null); const dropdownContainerRefs = React.useRef< Record >({}); const router = useRouter(); React.useEffect(() => { const handleClickOutside = (event: MouseEvent) => { const isClickInside = Object.values(dropdownContainerRefs.current).some( (ref) => ref && ref.contains(event.target as Node) ); if (!isClickInside) { setShowDropdown(null); } }; document.addEventListener("mousedown", handleClickOutside); return () => { document.removeEventListener("mousedown", handleClickOutside); }; }, []); const fetchOrders = useCallback(async () => { try { setIsLoading(true); const appliedFilters: any = { ...filters }; if (page === "dashboard-today_orders") { appliedFilters.limit = 4; } const orderList: any = await getBulkOrders(tab, appliedFilters); setOrders(orderList?.data?.data); setRefreshList(false) setIsLoading(false); } catch (error) { setIsLoading(false); console.error("Failed to fetch orders:", error); } finally { setIsLoading(false); } }, [filters, page, tab, setOrders, setRefreshList]); // eslint-disable-next-line @typescript-eslint/no-unused-vars const handleReturnOrder = async (orderDetail: any) => { try { toast.warning("Api not found"); // const response = await createReturnOrder({ id: orderDetail.id }); // if (response?.status) { // toast.success("Return order created successfully"); // const newOrderId = response?.data?.id; // console.log(response, "asdf"); // if (newOrderId) { // router.push(`/order-view?id=${cryptoHandler(newOrderId, "encrypt")}`); // } else { // toast.error("Could not get new return order ID"); // } // } else { // toast.error(response?.message || "Failed to create return order"); // } } catch (error: any) { toast.error( error?.response?.data?.message || error?.message || "Failed to create return order. Please try again." ); } }; const handleExchangeOrder = (orderDetail: any) => { console.log(orderDetail); toast.warning("Api not found"); }; const handleCancelOrder = (orderDetail: any) => { console.log(orderDetail); toast.warning("Api not found"); }; const handleTrackNow = (orderDetail: any) => { const url = `/order-tracking?id=${encodeURIComponent( orderDetail?.id || "" )}`; router.push(url); }; // const handleDraftList= () => { // const url = `/create-order?_=draft`; // window.location.href = url; // }; const handleDelete = async (orderDetail: any) => { try { await deleteDraft(orderDetail?.id); setShowDropdown(null); fetchOrders(); } catch (error) { console.error("Error deleting draft:", error); } }; const toggleDropdown = (orderId: string) => { setShowDropdown(showDropdown === orderId ? null : orderId); }; React.useEffect(() => { fetchOrders(); }, [fetchOrders, refreshList]); if (isLoading) { return (
); } const handleEditOrder = (item: any) => { setSelectedOrders(item); }; // eslint-disable-next-line @typescript-eslint/no-unused-vars const handleFuturePickupFlag = async (orderId = 0, orderData: any) => { setIsLoading(true); try { const isMarked = await handleFuturePickup(orderId, orderData); if (isMarked) { await fetchOrders(); } } catch (error) { console.error("Error in future pickup:", error); } finally { setIsLoading(false); } }; return ( <> {isLoading && } {page ? ( <> {page === "dashboard-draft_orders" ? ( <> {orders?.length > 0 && (
Draft Orders ({orders?.length || 0})
{/* View all */}
)} ) : page === "dashboard-today_orders" ? ( <> {orders?.length > 0 && (
Order Placed Today ( {orderCardDetails?.orders_placed_today || 0})
{/* View all */}
)} ) : page === "dashboard-live_orders" ? ( <> {orders?.length > 0 && (
Live Orders ({orderCardDetails?.live_orders || 0})
{/* View all */}
)} ) : ( "" )} ) : ( <> )}
{orders?.length > 0 ? ( orders?.map((order: any, index: number) => (
{accordionView ? ( ) : (
{ dropdownContainerRefs.current[order.id] = el; }} > {(allData?.companyName || order?.pickupCustomerName) ? (
{/* */} {truncateWithTooltip(allData?.companyName || order?.pickupCustomerName).text}{" "} {/* */}
) : ( "" )}
{ getOrderStatusInfo(order?.status?.id, order) ?.text }
{ e.preventDefault(); toggleDropdown(order.id); }} className="ms-auto" > {showDropdown === order.id && (
e.stopPropagation()} > {(order?.status?.id === BulkOrderStatus.Created || order?.status?.id === BulkOrderStatus?.FileUploaded) ? ( <> ) : order?.status?.id === OrderStatus.Delivered ? ( <> ) : ( "" )}
)}
{order?.pickupMobileNumber ? ( <> {" "} {order?.pickupMobileNumber ? order?.pickupMobileNumber : ''} ) : ''}
{" "} {allData?.addressFormatType?.name === "Standard" ? getFormattedAddress() : ""} {/* {order?.pickupFlatOrOfficeNumber ? ( <> {" "} {order?.pickupFlatOrOfficeNumber ? truncateWithTooltip(order?.pickupFlatOrOfficeNumber).text : ''} ) : ''} */}

{formatDate(order?.pickupDate || "")} {" "}
Weight Icon
{parseFloat(order?.totalWeight || 0).toFixed(3)} KG {" "} {/* Using optional chaining */}
Wallet Icon
{amountFormatWithCurrency( order?.totalCodAmount || 0 )}
)}
)) ) : ( <> {page === "dashboard-today_orders" || page === "dashboard-draft_orders" || page === "dashboard-live_orders" ? ( "" ) : ( )} )} {orders?.length > 0 && (page === "dashboard-today_orders" || page === "dashboard-draft_orders") ? ( View all ) : null}
{customizeOrderModal && ( { setCustomizeOrderModal(false); setSelectedOrders({}); }} header={false} > )} ); }; export default OrderCard;