'use client'; import { useState } from 'react'; import { Collection } from '@/lib/types'; import { cn, formatDate, formatCurrency, parseCoordinates } from '@/lib/utils'; import { Check, AlertTriangle, Navigation, ChevronDown, ChevronUp, Package, Wrench, Hammer, ShoppingCart, AlertCircle, } from 'lucide-react'; interface CollectionItemProps { collection: Collection; onCollect: (collection: Collection) => void; onProblem: (collection: Collection) => void; onNavigate: (lat: number, lng: number, name: string) => void; } function getItemType(collection: Collection): { type: string; icon: React.ReactNode; color: string; label: string; } { if (collection.status === 'problem') { return { type: 'problem', icon: , color: 'text-red-500', label: 'Problem', }; } const orderNumber = collection.expand?.orders_orderitem?.expand?.orders_order?.order_number || ''; const desc = collection.description || collection.expand?.orders_orderitem?.description || ''; if (orderNumber.toLowerCase().includes('breakdown')) { return { type: 'breakdown', icon: , color: 'text-orange-600', label: 'Breakdown', }; } if (orderNumber.toLowerCase().includes('repair')) { return { type: 'repair', icon: , color: 'text-amber-500', label: 'Repair', }; } if (collection.is_manual) { return { type: 'manual', icon: , color: 'text-purple-500', label: 'Manual', }; } return { type: 'normal', icon: , color: 'text-orange-500', label: 'Order', }; } export default function CollectionItemCard({ collection, onCollect, onProblem, onNavigate, }: CollectionItemProps) { const [expanded, setExpanded] = useState(false); const supplier = collection.expand?.wfdash_suppliers; const orderItem = collection.expand?.orders_orderitem; const itemType = getItemType(collection); // Parse coordinates from text field const coords = parseCoordinates(supplier?.coordinates); const hasCoords = coords !== null; const description = collection.is_manual ? collection.description : orderItem?.description || 'Unknown item'; const quantity = collection.quantity || orderItem?.quantity || 0; const unit = collection.unit || orderItem?.unit || 'units'; const orderNumber = orderItem?.expand?.orders_order?.order_number || ''; const poNumber = orderItem?.expand?.orders_purchaseorder?.po_number || ''; return (
{/* Header */}
setExpanded(!expanded)} >
{itemType.icon}

{description}

{itemType.label}

{supplier?.suppliername || 'Unknown Supplier'}

Expected: {quantity} {unit}

{orderNumber &&

Order: {orderNumber}

} {poNumber &&

PO: {poNumber}

} {collection.planned_date && (

Planned: {formatDate(collection.planned_date)}

)} {orderItem?.selling_price && (

{formatCurrency(orderItem.selling_price * quantity)}

)}
{expanded ? ( ) : ( )}
{/* Expanded Details */} {expanded && (
{collection.notes && (

{collection.notes}

)} {supplier?.supplieraddress && (

Address: {supplier.supplieraddress}

)} {/* Action Buttons */}
{hasCoords && coords && supplier && ( )}
)}
); }