'use client'; import { useState, useEffect } from 'react'; import { motion } from 'framer-motion'; import { useRouter } from 'next/navigation'; import { DollarSign, TrendingUp, Calendar, Building, Loader2, ArrowLeft, Star, } 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, isNA }) => (

{title}

{isNA ? 'N/A' : 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: null, totalReservations: null, activeProperties: null, financialRevenue: null, financialCommission: null, financialBalance: null, directRevenue: null, directCommission: null, directBalance: null, directRating: null, directPostponements: null, }); 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 ?? null, totalReservations: data.totalReservations ?? null, activeProperties: data.activeProperties ?? null, financialRevenue: data.financialRevenue ?? data.totalRevenue ?? null, financialCommission: data.financialCommission ?? null, financialBalance: data.financialBalance ?? null, directRevenue: data.directRevenue ?? null, directCommission: data.directCommission ?? null, directBalance: data.directBalance ?? null, directRating: data.directRating ?? null, directPostponements: data.directPostponements ?? null, }); } } catch { toast.error('تعذر تحميل إحصائيات الحساب'); } finally { setIsLoading(false); } } fetchData(); }, [router]); const formatCurrency = (amount) => { const num = Number(amount); if (isNaN(num)) return 'N/A'; return num.toLocaleString() + ' ل.س'; }; const formatNumber = (val) => { const num = Number(val); if (isNaN(num)) return 'N/A'; return num.toLocaleString(); }; const formatRating = (val) => { const num = Number(val); if (isNaN(num)) return 'N/A'; return num.toFixed(1); }; const isNA = (val) => val === null || val === undefined || val === ''; if (isLoading) { return (

جاري تحميل بيانات الحساب...

); } return (

دفتر الحسابات

نظرة مالية للمالك

إحصائيات العقارات المباشرة

); }