import { useState } from "react"; import { useParams } from "wouter"; import { trpc } from "@/lib/trpc"; import SignaturePadComponent from "@/components/SignaturePad"; import { Button } from "@/components/ui/button"; import { Card } from "@/components/ui/card"; import { FileText, Loader2, CheckCircle2, PenTool } from "lucide-react"; export default function SignerAttestation() { const params = useParams(); const attestationId = params.id ? parseInt(params.id) : null; const [showSignaturePad, setShowSignaturePad] = useState(false); const [isSigned, setIsSigned] = useState(false); const { data: attestation, isLoading } = trpc.attestations.get.useQuery( { apprenantId: 0, // TODO: récupérer depuis le token sequenceId: 0, }, { enabled: !!attestationId, } ); const uploadSignatureMutation = trpc.attestations.uploadSignature.useMutation({ onSuccess: () => { setIsSigned(true); setShowSignaturePad(false); }, }); const handleSaveSignature = async (dataUrl: string) => { if (!attestationId) return; await uploadSignatureMutation.mutateAsync({ attestationId, signatureDataUrl: dataUrl, }); }; if (isLoading) { return (

Chargement de votre attestation...

); } if (!attestation) { return (

Attestation introuvable

Le lien que vous avez suivi n'est pas valide ou a expiré.

); } if (isSigned) { return (

Attestation signée !

Votre signature a été enregistrée avec succès. Vous recevrez votre attestation signée par email.

Date de signature :{" "} {new Date().toLocaleDateString("fr-FR", { day: "numeric", month: "long", year: "numeric", hour: "2-digit", minute: "2-digit", })}

); } return (

Signature de votre attestation

Signez électroniquement votre attestation de formation

Informations de l'attestation

Formation : {/* TODO: afficher le nom de la formation */} Formation Manager Itinova
Séquence : {/* TODO: afficher le nom de la séquence */} Groupe A
Date de génération : {attestation.dateGeneration ? new Date(attestation.dateGeneration).toLocaleDateString( "fr-FR" ) : "N/A"}
{attestation.urlPdf && (
)}

En signant, vous certifiez avoir suivi cette formation et acceptez que votre signature soit intégrée à l'attestation.

{showSignaturePad && ( setShowSignaturePad(false)} /> )}
); }