import React, { useState } from 'react' import { Member, Payment } from '../types' interface PaymentsTableProps { members: Member[] payments: Payment[] loading: boolean } export const PaymentsTable: React.FC = ({ members, payments, loading }) => { const [filter, setFilter] = useState('') const getMemberName = (memberId: number) => { const member = members.find((m) => m.id === memberId) return member ? `${member.member_firstname} ${member.member_surname}` : 'Unknown' } const filteredPayments = payments.filter((p) => { const memberName = getMemberName(p.member_id).toLowerCase() return memberName.includes(filter.toLowerCase()) }) if (loading) { return (
Loading...
) } return (
setFilter(e.target.value)} style={{ fontSize: '0.95rem' }} />
{filteredPayments.length > 0 ? ( <>
{filteredPayments.map((payment) => ( ))}
Payment ID Member Name Member ID Payment Date Year Amount
{payment.id} {getMemberName(payment.member_id)} {payment.member_id} {new Date(payment.payment_date).toLocaleDateString()} {payment.payment_year} €{payment.payment_amount ? payment.payment_amount.toFixed(2) : '0.00'}
Showing {filteredPayments.length} of {payments.length} payments {filteredPayments.length > 0 && ( • Total: €{filteredPayments.reduce((sum, p) => sum + (p.payment_amount || 0), 0).toFixed(2)} )}
) : (

No payments found matching your search

)}
) }