"use client"; import { useState, useEffect } from "react"; import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card"; import { Badge } from "@/components/ui/badge"; import { Button } from "@/components/ui/button"; import { GraduationCap, Users, ChevronRight } from "lucide-react"; import Link from "next/link"; // Couleurs prédéfinies pour les référents const REFERENT_COLORS: Record = { "Emmanuel WATHELE": "#3B82F6", // Bleu "IHECS": "#10B981", // Vert }; interface ReferentData { nom: string; couleur: string; cours: string[]; nombreEtudiants: number; } export default function ReferentsPage() { const [referents, setReferents] = useState([]); const [loading, setLoading] = useState(true); useEffect(() => { const fetchReferents = async () => { try { // Récupérer tous les users pour compter par référent const response = await fetch( "/api/collections/users?page=1&limit=1000&filter={}" ); const result = await response.json(); if (result.data) { // Grouper par référent const referentsMap = new Map(); result.data.forEach((user: any) => { if (user.referent) { if (!referentsMap.has(user.referent)) { referentsMap.set(user.referent, { nom: user.referent, couleur: REFERENT_COLORS[user.referent] || "#6B7280", // Gris par défaut cours: [], nombreEtudiants: 0, }); } const ref = referentsMap.get(user.referent)!; ref.nombreEtudiants++; // Ajouter le cours s'il n'existe pas déjà if (user.cours && !ref.cours.includes(user.cours)) { ref.cours.push(user.cours); } } }); setReferents(Array.from(referentsMap.values())); } } catch (error) { console.error("Erreur lors du chargement des référents:", error); } finally { setLoading(false); } }; fetchReferents(); }, []); if (loading) { return (

Référents

Gestion des référents et leurs cours

{Array.from({ length: 3 }).map((_, i) => (
))}
); } if (referents.length === 0) { return (

Référents

Gestion des référents et leurs cours

Aucun référent

Importez des utilisateurs avec référents pour commencer.

); } return (

Référents

Gestion des référents et leurs cours

{referents.map((referent) => (
{/* Point coloré */}
{referent.nom}
{referent.nombreEtudiants} étudiant {referent.nombreEtudiants > 1 ? "s" : ""}

Cours :

{referent.cours.map((cours) => (
{cours}
))}
))}
); }