import { Typography, Button } from "@mui/material"; import axios from "axios"; import React, { useCallback, useEffect, useState, useRef } from "react"; import { Link, useParams, useNavigate } from "react-router-dom"; import swal from "sweetalert"; import { isAutheticated } from "src/auth"; const SinglePrincipalDistributorAllDetails = () => { const [user, setUser] = useState(null); const [userOrder, setUserOrder] = useState({ totalOrders: 0, totalValue: 0, lastPurchaseOrderDate: null, }); const [userAllAddress, setUserAllAddress] = useState([]); const token = isAutheticated(); const { _id } = useParams(); // Fetch Shipping address of the individual user const getUserAddress = useCallback(async () => { try { const response = await axios.get( `/api/shipping/address/user/address/${_id}`, { headers: { Authorization: `Bearer ${token}`, }, } ); setUserAllAddress(response.data?.UserShippingAddress || []); } catch (error) { swal({ title: "Warning", text: error.message, icon: "error", button: "Close", dangerMode: true, }); } }, [_id, token]); // Fetch Order Count and Total Value const getOrdersCount = useCallback(async () => { try { const response = await axios.get(`/api/single-pd-ordercount/${_id}`, { headers: { Authorization: `Bearer ${token}`, }, }); setUserOrder(response.data); } catch (error) { swal({ title: "Warning", text: error.message, icon: "error", button: "Close", dangerMode: true, }); } }, [_id, token]); // Fetch User Details const getUserDetails = useCallback(async () => { try { const response = await axios.get(`/api/v1/admin/user/${_id}`, { headers: { Authorization: `Bearer ${token}`, }, }); setUser(response.data.user); } catch (error) { swal({ title: "Warning", text: error.message, icon: "error", button: "Close", dangerMode: true, }); } }, [_id, token]); useEffect(() => { getOrdersCount(); getUserAddress(); getUserDetails(); }, [_id, getOrdersCount, getUserAddress, getUserDetails]); return (
Principal Distributor All Details
• Principal Distributor Profile
Principal Distributor ID: {user?.uniqueId} {/* Repeating fields with similar styling and structure */}
{[ { label: "SBU", value: user?.SBU }, { label: "Name", value: user?.name }, { label: "Email", value: user?.email }, { label: "Mobile Number", value: user?.phone }, ].map((item, index) => ( {item.label}: {item.value} ))}
{[ { label: "Date Registered", value: new Date(user?.createdAt).toLocaleString("en-IN", { weekday: "short", month: "short", day: "numeric", year: "numeric", hour: "numeric", minute: "numeric", hour12: true, }), }, { label: "Last Purchase", value: userOrder?.lastPurchaseOrderDate ? new Date(userOrder?.lastPurchaseOrderDate).toLocaleString( "en-IN", { weekday: "short", month: "short", day: "numeric", year: "numeric", hour: "numeric", minute: "numeric", hour12: true, } ) : "No Purchase", }, { label: "Total Orders", value: userOrder?.totalOrders ? userOrder?.totalOrders : 0, }, { label: "Total Spent", value: `₹ ${ userOrder?.totalValue ? userOrder?.totalValue : 0 }`, }, ].map((item, index) => ( {item.label}: {item.value} ))}
• Addresses{" "}
{" "}
• Total Addresses : {userAllAddress?.length}{" "}
{userAllAddress?.length > 0 && (
{/* */} {userAllAddress?.length === 0 && ( )} {userAllAddress?.map((address, i) => { return ( ); })}
SL No. Address Profile Image
No Data Available
{i + 1} {address?.first_Name} {address?.last_name} {address.tradeName ? `${address.tradeName},` : "No tradeName "} {address.gstNumber ? `${address.gstNumber},` : ""} {address?.street},{address?.city},{address?.state}, {address?.country},{address?.postalCode}
)}
); }; export default SinglePrincipalDistributorAllDetails;