'use client';
import { useState, useEffect } from 'react';
import { motion } from 'framer-motion';
import { useRouter } from 'next/navigation';
import {
DollarSign,
TrendingUp,
Calendar,
Users,
Building,
Download,
Loader2,
ArrowLeft,
} from 'lucide-react';
import toast, { Toaster } from 'react-hot-toast';
import AuthService from '@/app/services/AuthService';
import { getOwnerStatistics } from '@/app/utils/api';
const StatCard = ({ title, value, icon: Icon, color, subtitle }) => (
{title}
{value}
{subtitle && {subtitle}
}
);
export default function OwnerAccountBookPage() {
const router = useRouter();
const [user, setUser] = useState(null);
const [isLoading, setIsLoading] = useState(true);
const [stats, setStats] = useState({
totalRevenue: 0,
totalReservations: 0,
activeProperties: 0,
});
const [transactions, setTransactions] = useState([]);
useEffect(() => {
if (AuthService.isGuest()) {
router.push('/auth/choose-role');
return;
}
if (!AuthService.isOwner()) {
router.push('/');
return;
}
const authUser = AuthService.getUser();
if (authUser) {
setUser({
name: authUser.name || authUser.email,
email: authUser.email,
});
}
async function fetchData() {
try {
const data = await getOwnerStatistics();
if (data) {
setStats({
totalRevenue: data.totalRevenue ?? 0,
totalReservations: data.totalReservations ?? 0,
activeProperties: data.activeProperties ?? 0,
});
if (data.transactions) {
setTransactions(data.transactions);
}
}
} catch {
toast.error('تعذر تحميل إحصائيات الحساب');
} finally {
setIsLoading(false);
}
}
fetchData();
}, [router]);
const formatCurrency = (amount) => {
const num = Number(amount) || 0;
return num.toLocaleString() + ' ل.س';
};
const handleExport = () => {
toast.success('جاري تصدير البيانات...');
};
if (isLoading) {
return (
جاري تحميل بيانات الحساب...
);
}
return (
دفتر الحسابات
مرحباً {user?.name}، نظرة عامة على حساباتك
المعاملات المالية
{transactions.length > 0 ? (
|
التاريخ
|
البيان
|
المبلغ
|
الحالة
|
{transactions.map((tx, idx) => (
|
{tx.date}
|
{tx.description}
|
{formatCurrency(tx.amount)}
|
{tx.status === 'completed'
? 'مكتمل'
: tx.status === 'pending'
? 'قيد الانتظار'
: 'ملغي'}
|
))}
) : (
لا توجد معاملات مالية بعد
)}
);
}