'use client'; import { useState, useEffect } from 'react'; import { motion } from 'framer-motion'; import { DollarSign, Calendar, User, Home, Download, Filter, Search, TrendingUp, TrendingDown, Wallet, Shield } from 'lucide-react'; import { formatCurrency } from '@/app/utils/calculations'; export default function LedgerBook({ userType = 'admin' }) { const [transactions, setTransactions] = useState([]); const [filteredTransactions, setFilteredTransactions] = useState([]); const [dateRange, setDateRange] = useState({ start: '', end: '' }); const [searchTerm, setSearchTerm] = useState(''); const [summary, setSummary] = useState({ totalRevenue: 0, pendingPayments: 0, securityDeposits: 0, commissionEarned: 0 }); useEffect(() => { loadTransactions(); }, []); useEffect(() => { filterTransactions(); calculateSummary(); }, [transactions, dateRange, searchTerm]); const loadTransactions = async () => { const mockTransactions = [ { id: 'T001', date: '2024-02-20', type: 'rent_payment', description: 'دفعة إيجار - فيلا في دمشق', amount: 500000, commission: 25000, fromUser: 'أحمد محمد', toUser: 'مالك العقار', propertyId: 1, propertyName: 'luxuryVillaDamascus', status: 'completed', paymentMethod: 'cash' }, { id: 'T002', date: '2024-02-19', type: 'security_deposit', description: 'سلفة ضمان - شقة في حلب', amount: 250000, commission: 0, fromUser: 'سارة أحمد', toUser: 'مالك العقار', propertyId: 2, propertyName: 'modernApartmentAleppo', status: 'pending_refund', paymentMethod: 'cash' }, { id: 'T003', date: '2024-02-18', type: 'commission', description: 'عمولة منصة - فيلا في درعا', amount: 30000, commission: 30000, fromUser: 'محمد الحلبي', toUser: 'المنصة', propertyId: 5, propertyName: 'villaDaraa', status: 'completed', paymentMethod: 'cash' } ]; setTransactions(mockTransactions); }; const filterTransactions = () => { let filtered = [...transactions]; if (dateRange.start && dateRange.end) { filtered = filtered.filter(t => t.date >= dateRange.start && t.date <= dateRange.end ); } if (searchTerm) { filtered = filtered.filter(t => t.description.includes(searchTerm) || t.fromUser.includes(searchTerm) || t.toUser.includes(searchTerm) ); } setFilteredTransactions(filtered); }; const calculateSummary = () => { const summary = filteredTransactions.reduce((acc, t) => { if (t.type === 'rent_payment' || t.type === 'commission') { acc.totalRevenue += t.amount; } if (t.type === 'security_deposit' && t.status === 'pending_refund') { acc.securityDeposits += t.amount; } if (t.commission) { acc.commissionEarned += t.commission; } if (t.status === 'pending') { acc.pendingPayments += t.amount; } return acc; }, { totalRevenue: 0, pendingPayments: 0, securityDeposits: 0, commissionEarned: 0 }); setSummary(summary); }; const getTransactionIcon = (type) => { switch(type) { case 'rent_payment': return ; case 'security_deposit': return ; case 'commission': return ; default: return ; } }; const exportToExcel = () => { const csvContent = [ ['التاريخ', 'الوصف', 'من', 'إلى', 'المبلغ', 'العمولة', 'الحالة'], ...filteredTransactions.map(t => [ t.date, t.description, t.fromUser, t.toUser, t.amount, t.commission, t.status ]) ].map(row => row.join(',')).join('\n'); const blob = new Blob([csvContent], { type: 'text/csv' }); const url = window.URL.createObjectURL(blob); const a = document.createElement('a'); a.href = url; a.download = `ledger_${new Date().toISOString()}.csv`; a.click(); }; return (
إجمالي الإيرادات
{formatCurrency(summary.totalRevenue)}
أرباح المنصة
{formatCurrency(summary.commissionEarned)}
سلف الضمان
{formatCurrency(summary.securityDeposits)}
المدفوعات المعلقة
{formatCurrency(summary.pendingPayments)}
setSearchTerm(e.target.value)} className="w-full pl-10 pr-4 py-2 border rounded-lg focus:ring-2 focus:ring-blue-500" />
setDateRange({...dateRange, start: e.target.value})} className="px-3 py-2 border rounded-lg" /> إلى setDateRange({...dateRange, end: e.target.value})} className="px-3 py-2 border rounded-lg" />
{filteredTransactions.map((transaction, index) => ( ))}
التاريخ الوصف من إلى المبلغ العمولة الحالة
{transaction.date}
{getTransactionIcon(transaction.type)} {transaction.description}
{transaction.fromUser}
{transaction.toUser}
{formatCurrency(transaction.amount)} {transaction.commission ? formatCurrency(transaction.commission) : '-'} {transaction.status === 'completed' ? 'مكتمل' : transaction.status === 'pending' ? 'معلق' : 'بإنتظار الرد'}
{filteredTransactions.length === 0 && (

لا توجد معاملات في هذه الفترة

)}
{userType === 'owner' && (

أرصدة المستأجرين

)}
); }