import { useEffect, useState } from "react"; import { getCategorie, getDipendenti, getStatistiche } from "../api/client"; import FiltriRimborsi from "../components/FiltriRimborsi"; import type { CategoriaSpesa, StatisticaRimborso, Utente } from "../types"; function formatEuro(n: number) { return n.toLocaleString("it-IT", { style: "currency", currency: "EUR" }); } export default function Statistiche() { const [stats, setStats] = useState([]); const [categorie, setCategorie] = useState([]); const [dipendenti, setDipendenti] = useState[]>([]); const [filtri, setFiltri] = useState({ stato: "", categoriaId: "", mese: "", dipendenteId: "" }); const [error, setError] = useState(null); const [loading, setLoading] = useState(true); useEffect(() => { Promise.all([getCategorie(), getDipendenti()]) .then(([cats, dips]) => { setCategorie(cats); setDipendenti(dips); }); }, []); useEffect(() => { setLoading(true); setError(null); getStatistiche({ mese: filtri.mese || undefined, categoriaId: filtri.categoriaId ? Number(filtri.categoriaId) : undefined, dipendenteId: filtri.dipendenteId ? Number(filtri.dipendenteId) : undefined, }) .then(setStats) .catch((err) => setError(err.message)) .finally(() => setLoading(false)); }, [filtri.categoriaId, filtri.mese, filtri.dipendenteId]); return (

Statistiche rimborsi

Dati aggregati per mese e categoria

{error &&

{error}

} {loading ? (

Caricamento...

) : stats.length === 0 ? (

Nessun dato disponibile.

) : ( {stats.map((s) => ( ))}
Mese Categoria N. richieste Totale richiesto Totale approvato Totale liquidato
{s.mese} {s.categoria} {s.numeroRichieste} {formatEuro(s.totaleRichiesto)} {formatEuro(s.totaleApprovato)} {formatEuro(s.totaleLiquidato)}
)}
); }