diff --git a/src/context/SellerContext.tsx b/src/context/SellerContext.tsx index 8eecb13..481cb1c 100644 --- a/src/context/SellerContext.tsx +++ b/src/context/SellerContext.tsx @@ -243,18 +243,26 @@ export const SellerProvider: React.FC<{ children: React.ReactNode }> = ({ childr // Map Orders setOrders(ordersArr.map((o: any) => { - let dynamicSlot = 'Afternoon Slot (2 PM - 5 PM)'; - if (o.pickup_payload?.pickup_time) { - const t = String(o.pickup_payload.pickup_time); - if (t.startsWith('10')) dynamicSlot = 'Morning Slot (10 AM - 1 PM)'; - else if (t.startsWith('14')) dynamicSlot = 'Afternoon Slot (2 PM - 5 PM)'; - else if (t.startsWith('17')) dynamicSlot = 'Evening Slot (5 PM - 7 PM)'; - else dynamicSlot = t; - } else if (o.eta && o.eta.includes('(')) { - const m = o.eta.match(/\(([^)]+)\)/); - if (m) dynamicSlot = m[1]; + let pickupDateVal = o.pickup_payload?.pickup_date || ''; + let pickupTimeVal = o.pickup_payload?.pickup_time || ''; + + if (!pickupDateVal && o.eta && String(o.eta).includes('Pickup:')) { + const mDate = String(o.eta).match(/Pickup:\s*([\d-]+)/); + if (mDate) pickupDateVal = mDate[1]; } + if (!pickupTimeVal && o.eta && String(o.eta).includes('(')) { + const mTime = String(o.eta).match(/\(([^)]+)\)/); + if (mTime) pickupTimeVal = mTime[1]; + } + + let dynamicSlot = '02:00 PM – 06:00 PM'; + const t = String(pickupTimeVal || ''); + if (t.startsWith('10')) dynamicSlot = '10:00 AM – 01:00 PM'; + else if (t.startsWith('14')) dynamicSlot = '02:00 PM – 06:00 PM'; + else if (t.startsWith('17')) dynamicSlot = '05:00 PM – 08:00 PM'; + else if (t) dynamicSlot = t; + return { id: String(o.id), orderNumber: o.order_id || `ORD-${o.id}`, @@ -270,6 +278,8 @@ export const SellerProvider: React.FC<{ children: React.ReactNode }> = ({ childr awbNumber: o.tracking || 'N/A', pickupId: o.pickup_id || undefined, pickupPayload: o.pickup_payload || undefined, + pickupDate: pickupDateVal || undefined, + pickupTime: pickupTimeVal || undefined, pickupSlot: dynamicSlot, deliveryDate: o.eta || '2-3 Days' }; diff --git a/src/pages/dashboard/OrdersPage.tsx b/src/pages/dashboard/OrdersPage.tsx index d966fd0..2327c18 100644 --- a/src/pages/dashboard/OrdersPage.tsx +++ b/src/pages/dashboard/OrdersPage.tsx @@ -22,6 +22,33 @@ import { Clock } from 'lucide-react'; +const formatPickupDate = (dateStr?: string, fallbackEta?: string) => { + if (dateStr && dateStr.includes('-')) { + try { + const parts = dateStr.split('-'); + if (parts.length === 3) { + const d = new Date(parseInt(parts[0], 10), parseInt(parts[1], 10) - 1, parseInt(parts[2], 10)); + return d.toLocaleDateString('en-GB', { day: 'numeric', month: 'short', year: 'numeric' }); + } + } catch {} + return dateStr; + } + if (fallbackEta && fallbackEta.includes('Pickup:')) { + const m = fallbackEta.match(/Pickup:\s*([\d-]+)/); + if (m) { + try { + const parts = m[1].split('-'); + if (parts.length === 3) { + const d = new Date(parseInt(parts[0], 10), parseInt(parts[1], 10) - 1, parseInt(parts[2], 10)); + return d.toLocaleDateString('en-GB', { day: 'numeric', month: 'short', year: 'numeric' }); + } + } catch {} + return m[1]; + } + } + return dateStr || ''; +}; + export const OrdersPage: React.FC = () => { const navigate = useNavigate(); const { orders, acceptOrder, readyToShipOrder, shipOrder, rejectOrder, trackOrder, getOrderLabel, cancelOrderPickup, reschedulePickup, fetchData } = useSeller(); @@ -583,8 +610,38 @@ export const OrdersPage: React.FC = () => { ord.status.replace('_', ' ').toUpperCase()} {ord.pickupId && ( -