"use client"; import { useState, useEffect } from "react"; import { motion } from "framer-motion"; import { useTranslation } from "react-i18next"; import { DollarSign, TrendingUp, Calendar, Loader2, 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 { t, i18n } = useTranslation(); 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()) { return; } if (!AuthService.isOwner()) { 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(t("accountBook.loadError")); } finally { setIsLoading(false); } } fetchData(); }, []); const formatCurrency = (amount) => { const num = Number(amount); if (isNaN(num)) return "N/A"; return num.toLocaleString() + " " + t("currency-syp-suffix"); }; 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 (

{t("accountBook.loading")}

); } return (

{t("accountBook")}

{t("financialRecords")}

{t("accountBook.ownerFinancialOverview")}

{t("accountBook.directPropertyStats")}

); }