import { useAuth } from "@/_core/hooks/useAuth"; import DashboardLayout from "@/components/DashboardLayout"; import { Button } from "@/components/ui/button"; import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "@/components/ui/card"; import { trpc } from "@/lib/trpc"; import { Calendar, Clock, MapPin, Users } from "lucide-react"; import { useState } from "react"; import { Link } from "wouter"; export default function FormateurDashboard() { const { user } = useAuth(); const [dateDebut] = useState(new Date()); const [dateFin] = useState(() => { const date = new Date(); date.setMonth(date.getMonth() + 3); // 3 mois à l'avance return date; }); // Récupérer l'ID du formateur associé à l'utilisateur // Pour l'instant, on utilise un ID fixe, mais il faudrait le lier à l'utilisateur const formateurId = 1; // TODO: Récupérer depuis la base de données const { data: interventions, isLoading } = trpc.formateur.calendrier.useQuery({ formateurId, dateDebut, dateFin, }); const formatDate = (date: Date) => { return new Date(date).toLocaleDateString("fr-FR", { weekday: "long", year: "numeric", month: "long", day: "numeric", }); }; const formatTime = (date: Date) => { return new Date(date).toLocaleTimeString("fr-FR", { hour: "2-digit", minute: "2-digit", }); }; // Grouper les interventions par date const interventionsParDate = interventions?.reduce((acc, intervention) => { const dateKey = new Date(intervention.dateDebut).toDateString(); if (!acc[dateKey]) { acc[dateKey] = []; } acc[dateKey].push(intervention); return acc; }, {} as Record); return (

Mon Calendrier

Vos interventions à venir

{isLoading ? (
) : !interventions || interventions.length === 0 ? (

Aucune intervention prévue pour les 3 prochains mois

) : (
{Object.entries(interventionsParDate || {}).map(([dateKey, dayInterventions]) => (

{formatDate(new Date(dateKey))}

{dayInterventions.map((intervention) => ( {intervention.formationNom} {intervention.sequenceNom}
{formatTime(intervention.dateDebut)} - {formatTime(intervention.dateFin)}
{intervention.lieu && (
{intervention.lieu}
)}
{intervention.nbInscrits} apprenant(s) inscrit(s)
))}
))}
)}
); }