import React, { useState, useEffect } from 'react'; import { api } from '../stores/api'; import PageHeader from '../components/PageHeader'; import SuccessCheck from '../components/SuccessCheck'; export default function RapportRSG() { const [rapports, setRapports] = useState([]); const [form, setForm] = useState({ reunion_dist: new Date().toISOString().slice(0, 10), decisions_text: '', infos_region: '', sujets_groupe: '', }); const [loading, setLoading] = useState(true); const [success, setSuccess] = useState(false); const [viewRapport, setViewRapport] = useState(null); const [error, setError] = useState(''); useEffect(() => { api.get('/rapports-rsg/').then((data) => { setRapports(data); setLoading(false); }).catch(() => setLoading(false)); }, []); const handleSubmit = async () => { if (!form.decisions_text.trim() && !form.infos_region.trim() && !form.sujets_groupe.trim()) { setError('Au moins une section doit être remplie'); return; } setError(''); try { const decisionsList = form.decisions_text .split('\n') .map((d) => d.trim()) .filter((d) => d.length > 0); await api.post('/rapports-rsg/', { reunion_dist: form.reunion_dist, decisions: decisionsList.length > 0 ? decisionsList : null, infos_region: form.infos_region.trim() || null, sujets_groupe: form.sujets_groupe.trim() || null, }); setSuccess(true); } catch (e) { setError(e.message); } }; if (success) return ; // Vue lecture if (viewRapport) { return (

Rapport RSG

Réunion du {viewRapport.reunion_dist}

Rédigé par {viewRapport.redacteur_prenom}

{viewRapport.decisions && viewRapport.decisions.length > 0 && (

Décisions du district

{viewRapport.decisions.map((d, i) => (

• {d}

))}
)} {viewRapport.infos_region && (

Informations de la région

{viewRapport.infos_region}

)} {viewRapport.sujets_groupe && (

Sujets pour le groupe

{viewRapport.sujets_groupe}

)}
); } return (
{/* Rapports existants */} {rapports.length > 0 && (

Rapports récents

{rapports.slice(0, 5).map((r) => ( ))}
)} {/* Nouveau rapport */}
setForm({ ...form, reunion_dist: e.target.value })} className="w-full p-3 bg-gray-50 rounded-xl border-0 focus:ring-2 focus:ring-aa-blue" />