import React from "react"; import { Package, Clock, CheckCircle } from "lucide-react"; import "./Items.css"; interface OrderItem { id: number; command_id: number; product_id: number; produit: string; // ✅ API utilise "produit" pas "product_name" quantite: number; // ✅ API utilise "quantite" pas "quantity" prix: number; // ✅ API utilise "prix" pas "price" status: string; created_at: string; // Champs additionnels de l'API client_nom?: string; client_prenom?: string; client_telephone?: string; client_username?: string; command_address?: string; delivery_address?: string; livreur_assign?: string; total_prix?: number; } interface ItemsModalProps { isOpen: boolean; onClose: () => void; items: OrderItem[]; commandNumber?: string; } const ItemsModal: React.FC = ({ isOpen, onClose, items, commandNumber, }) => { if (!isOpen) return null; // Debug: Afficher les items reçus console.log("🔍 [ITEMS_MODAL] Items reçus:", items); console.log("🔍 [ITEMS_MODAL] Nombre items:", items.length); if (items.length > 0) { console.log("🔍 [ITEMS_MODAL] Premier item:", items[0]); } const getItemStatusLabel = (status: string): string => { switch (status.toLowerCase()) { case "pending": return "En attente"; case "prepared": return "Préparé"; case "packed": return "Emballé"; case "delivered": return "Livré"; default: return status; } }; const getItemStatusIcon = (status: string) => { switch (status.toLowerCase()) { case "pending": return ; case "prepared": case "packed": return ; case "delivered": return ; default: return null; } }; const calculateTotal = (): number => { return items.reduce((sum, item) => { const price = item.prix || 0; // ✅ Utiliser "prix" return sum + price; }, 0); }; const handleOverlayClick = (e: React.MouseEvent) => { if (e.target === e.currentTarget) { onClose(); } }; return (
e.stopPropagation()} > {/* Header */}

Articles de la commande {commandNumber && ( {commandNumber} )}

{/* Body */}
{items.length === 0 ? (

Aucun article trouvé

) : ( <> {/* Items List */}
{items.map((item, index) => { // Valeurs sécurisées - utiliser les vrais noms de champs de l'API const itemPrice = item.prix || 0; const itemQuantity = item.quantite || 0; const itemName = item.produit || "Produit inconnu"; const itemTotal = itemPrice; return (
#{index + 1}

{itemName}

{getItemStatusIcon( item.status || "pending", )} {getItemStatusLabel( item.status || "pending", )}
Quantité {itemQuantity}g
Prix unitaire {itemPrice.toFixed( 2, )} €
Total {itemTotal.toFixed( 2, )} €
); })}
{/* Total */}
Total de la commande {calculateTotal().toFixed(2)}€
)}
); }; export default ItemsModal;