import React, { useState, useEffect } from 'react';
import { api } from '../stores/api';
import PageHeader from '../components/PageHeader';
const MOIS_FR = [
'', 'Janvier', 'Février', 'Mars', 'Avril', 'Mai', 'Juin',
'Juillet', 'Août', 'Septembre', 'Octobre', 'Novembre', 'Décembre',
];
export default function Rapports() {
const [disponibles, setDisponibles] = useState([]);
const [anneesResolutions, setAnneesResolutions] = useState([]);
const [loading, setLoading] = useState(true);
const [generating, setGenerating] = useState(null);
useEffect(() => {
Promise.all([
api.get('/rapports/disponibles'),
api.get('/rapports/resolutions/annees'),
]).then(([dispo, annees]) => {
setDisponibles(dispo);
setAnneesResolutions(annees);
setLoading(false);
}).catch(() => setLoading(false));
}, []);
const telecharger = async (path, key, filename) => {
setGenerating(key);
try {
const token = localStorage.getItem('gm_token');
const res = await fetch(`/api/rapports/${path}`, {
headers: { Authorization: `Bearer ${token}` },
});
if (!res.ok) throw new Error('Erreur de génération');
const blob = await res.blob();
const a = document.createElement('a');
a.href = URL.createObjectURL(blob);
a.download = filename;
a.click();
URL.revokeObjectURL(a.href);
} catch (e) {
alert(`Erreur: ${e.message}`);
}
setGenerating(null);
};
const vide = disponibles.length === 0 && anneesResolutions.length === 0;
return (
{loading ? (
Chargement...
) : vide ? (
📄
Aucun rapport disponible
Les rapports apparaîtront après les premières saisies
) : (
<>
{/* Rapports mensuels */}
{disponibles.map((m) => (
{MOIS_FR[m.mois]} {m.annee}
{m.finances && (
)}
{m.reunions && (
)}
))}
{/* Registre des résolutions */}
{anneesResolutions.length > 0 && (
📜 Registre des résolutions
{anneesResolutions.map((a) => (
))}
)}
>
)}
);
}