import React, { useState, useEffect } from 'react'; import { useNavigate } from 'react-router-dom'; import { useCart } from '../contexts/CartContext'; import './ChangeCalculatorPage.css'; interface MoneyItem { value: number; label: string; count: number; } const ChangeCalculatorPage: React.FC = () => { const navigate = useNavigate(); const { getTotalPrice, clearCart } = useCart(); const cartTotal = getTotalPrice(); const initialDenominations: MoneyItem[] = [ { value: 0.5, label: '0,50 €', count: 0 }, { value: 1, label: '1 €', count: 0 }, { value: 2, label: '2 €', count: 0 }, { value: 5, label: '5 €', count: 0 }, { value: 10, label: '10 €', count: 0 }, { value: 20, label: '20 €', count: 0 }, { value: 50, label: '50 €', count: 0 }, { value: 100, label: '100 €', count: 0 }, { value: 200, label: '200 €', count: 0 }, ]; const [moneyItems, setMoneyItems] = useState(initialDenominations); const [customerTotal, setCustomerTotal] = useState(0); const [changeAmount, setChangeAmount] = useState(0); // Calculate totals whenever money items change useEffect(() => { const total = moneyItems.reduce((sum, item) => sum + item.value * item.count, 0); setCustomerTotal(total); setChangeAmount(Math.max(0, total - cartTotal)); }, [moneyItems, cartTotal]); const handleDenominationClick = (index: number) => { const updatedItems = [...moneyItems]; updatedItems[index].count += 1; setMoneyItems(updatedItems); }; const resetDenomination = (index: number) => { const updatedItems = [...moneyItems]; updatedItems[index].count = 0; setMoneyItems(updatedItems); }; const decreaseDenomination = (index: number) => { if (moneyItems[index].count > 0) { const updatedItems = [...moneyItems]; updatedItems[index].count -= 1; setMoneyItems(updatedItems); } }; const resetAllDenominations = () => { setMoneyItems(initialDenominations.map(item => ({ ...item, count: 0 }))); }; const handleDoneClick = () => { clearCart(); navigate('/'); }; return (

Restgeld

Warenkorb: {cartTotal.toFixed(2)} €
Erhalten: {customerTotal.toFixed(2)} €
Restgeld: {changeAmount.toFixed(2)} €
{moneyItems.map((item, index) => ( ))}

Ausgewählte Münzen/Scheine

{moneyItems.some(item => item.count > 0) ? (
    {moneyItems .filter(item => item.count > 0) .map((item, index) => (
  • {item.count}x {item.label}
  • ))}
) : (

Keine Auswahl

)} {moneyItems.some(item => item.count > 0) && ( )}
); }; export default ChangeCalculatorPage;