import React, { useState, useEffect } from 'react'; import { api } from '../stores/api'; import { useStore } from '../stores/store'; import PageHeader from '../components/PageHeader'; const CATEGORIES = { executif: { label: 'Exécutif', bg: 'bg-blue-100', text: 'text-blue-700' }, service: { label: 'Service', bg: 'bg-purple-100', text: 'text-purple-700' }, physique: { label: 'Physique', bg: 'bg-green-100', text: 'text-green-700' }, }; export default function Calendrier() { const { groupeId } = useStore(); const [entries, setEntries] = useState([]); const [detailGroupe, setDetailGroupe] = useState(null); const [loading, setLoading] = useState(true); useEffect(() => { api.get('/calendrier/').then((data) => { setEntries(data); setLoading(false); }).catch(() => setLoading(false)); }, []); // Grouper par groupe const parGroupe = {}; entries.forEach((e) => { if (!parGroupe[e.groupe_nom]) { parGroupe[e.groupe_nom] = { nom: e.groupe_nom, id: e.groupe_id, jour: e.jour_reunion, serviteurs: [] }; } parGroupe[e.groupe_nom].serviteurs.push(e); }); const groupes = Object.values(parGroupe); const voirDetail = async (gId) => { try { const data = await api.get(`/calendrier/groupe/${gId}`); setDetailGroupe(data); } catch {} }; if (detailGroupe) { return (

{detailGroupe.groupe?.nom}

{detailGroupe.groupe?.jour_reunion ? `Réunion le ${detailGroupe.groupe.jour_reunion}` : 'Calendrier'}

{detailGroupe.groupe?.adresse && (

Adresse

{detailGroupe.groupe.adresse}

)} {detailGroupe.serviteurs?.map((s, i) => { const cat = CATEGORIES[s.categorie] || CATEGORIES.physique; return (

{s.poste}

{s.prenom}

{cat.label}
); })} {(!detailGroupe.serviteurs || detailGroupe.serviteurs.length === 0) && (

Aucun serviteur assigné

)}
); } return (
{loading ? (

Chargement...

) : groupes.length === 0 ? (

📅

Aucune donnée de calendrier

) : ( groupes.map((g) => { const isMon = g.id === groupeId; return ( ); }) )}
); }