import React, { useState, useEffect } from 'react'; import axios from 'axios'; import 'bootstrap/dist/css/bootstrap.min.css'; const MenuList = ({ restaurantId, onPreOrderChange, setPreOrderedItems, preOrderedItems }) => { const [menuItems, setMenuItems] = useState([]); const [preOrder, setPreOrder] = useState([]); const handleItemSelect = (item) => { setPreOrderedItems(prevItems => [...prevItems, item]); }; const handleItemToggle = (item) => { setPreOrderedItems(prevItems => { const exists = prevItems.find(i => i.id === item.id); if (exists) { return prevItems.filter(i => i.id !== item.id); // remove } else { return [...prevItems, item]; // add } }); }; useEffect(() => { const fetchMenu = async () => { try { const response = await axios.get(`http://localhost:8081/api/restaurant-menu/${restaurantId}`); setMenuItems(response.data); } catch (err) { console.error('Failed to fetch menu:', err); } }; if (restaurantId) { fetchMenu(); } }, [restaurantId]); const handleAddToPreOrder = (item) => { const existingItem = preOrder.find((i) => i.menuID === item.menuID); let updatedPreOrder; if (existingItem) { updatedPreOrder = preOrder.map((i) => i.menuID === item.menuID ? { ...i, quantity: i.quantity + 1 } : i ); } else { updatedPreOrder = [...preOrder, { ...item, quantity: 1 }]; } setPreOrder(updatedPreOrder); setPreOrderedItems(updatedPreOrder); }; const calculateTotal = () => { return preOrder.reduce((acc, item) => acc + item.price * item.quantity, 0).toFixed(2); }; return (

Menu

{menuItems.map((item) => (
{item.itemName}

{item.description}

${item.price.toFixed(2)}
))}
{preOrder.length > 0 && (

Pre-Order Summary

Total: ${calculateTotal()}
)}
); }; export default MenuList;