import { useState } from "react"; import { trpc } from "@/lib/trpc"; import DashboardLayout from "@/components/DashboardLayout"; import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "@/components/ui/card"; import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from "@/components/ui/table"; import { Badge } from "@/components/ui/badge"; import { Button } from "@/components/ui/button"; import { Loader2, FileText, CheckCircle2, XCircle, ExternalLink } from "lucide-react"; import { format } from "date-fns"; import { fr } from "date-fns/locale"; export default function HistoriqueAttestations() { const { data: historique, isLoading } = trpc.attestations.historique.useQuery(); if (isLoading) { return (
); } return (

Historique des attestations

Suivi de tous les envois d'attestations de formation

Envois d'attestations Liste complète des attestations envoyées avec leur statut {!historique || historique.length === 0 ? (

Aucun envoi d'attestation enregistré

) : (
Date d'envoi Formation Séquence Apprenant Email Statut Actions {historique.map((item) => ( {format(new Date(item.dateEnvoi), "dd/MM/yyyy HH:mm", { locale: fr })} {item.formation.nom} {item.sequence.nom} {item.apprenant.prenom} {item.apprenant.nom} {item.apprenant.email} {item.statut === "envoye" ? ( Envoyé ) : ( Erreur )} {item.urlAttestation && ( )} ))}
)}
{/* Statistiques */} {historique && historique.length > 0 && (
Total envoyé
{historique.length}
Envois réussis
{historique.filter((h) => h.statut === "envoye").length}
Erreurs
{historique.filter((h) => h.statut === "erreur").length}
)}
); }