import { useState, useEffect } from "react"; import { trpc } from "@/lib/trpc"; import DashboardLayout from "@/components/DashboardLayout"; import { Button } from "@/components/ui/button"; import { Input } from "@/components/ui/input"; import { Textarea } from "@/components/ui/textarea"; import { Label } from "@/components/ui/label"; import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "@/components/ui/card"; import { toast } from "sonner"; import { FileText, Save } from "lucide-react"; import ImageUpload from "@/components/ImageUpload"; export default function AdminAttestations() { const { data: config, isLoading, refetch } = trpc.attestations.getConfig.useQuery(); const updateConfig = trpc.attestations.updateConfig.useMutation(); const [formData, setFormData] = useState({ nomSignataire: "", fonctionSignataire: "", texteAttestation: "", logoUrl: "", logoS3Key: "", signatureUrl: "", signatureS3Key: "", }); // Mettre à jour le formulaire quand les données sont chargées useEffect(() => { if (config) { setFormData({ nomSignataire: config.nomSignataire || "", fonctionSignataire: config.fonctionSignataire || "", texteAttestation: config.texteAttestation || "", logoUrl: config.logoUrl || "", logoS3Key: config.logoS3Key || "", signatureUrl: config.signatureUrl || "", signatureS3Key: config.signatureS3Key || "", }); } }, [config]); const handleSubmit = async (e: React.FormEvent) => { e.preventDefault(); try { await updateConfig.mutateAsync(formData); toast.success("Configuration enregistrée avec succès"); refetch(); } catch (error) { toast.error("Erreur lors de l'enregistrement"); console.error(error); } }; if (isLoading) { return ( Chargement... ); } return ( Configuration des attestations Personnalisez le contenu et la signature des attestations de formation Informations du signataire Ces informations apparaîtront en bas de l'attestation Nom du signataire setFormData({ ...formData, nomSignataire: e.target.value }) } placeholder="Ex: Jean Dupont" /> Fonction du signataire setFormData({ ...formData, fonctionSignataire: e.target.value }) } placeholder="Ex: Directeur de la formation" /> Logo et signature Ajoutez un logo et une signature pour personnaliser vos attestations setFormData({ ...formData, logoUrl: url, logoS3Key: s3Key }) } /> setFormData({ ...formData, signatureUrl: url, signatureS3Key: s3Key }) } /> Texte de l'attestation Personnalisez le texte principal de l'attestation. Utilisez les variables suivantes : {'{{nomComplet}}'} - Nom complet de l'apprenant {'{{nomFormation}}'} - Nom de la formation {'{{dateDebut}}'} - Date de début de la formation {'{{dateFin}}'} - Date de fin de la formation setFormData({ ...formData, texteAttestation: e.target.value }) } placeholder="Nous attestons que {{nomComplet}} a suivi avec assiduité la formation "{{nomFormation}}" organisée du {{dateDebut}} au {{dateFin}}." rows={6} className="font-serif" /> { if (config) { setFormData({ nomSignataire: config.nomSignataire || "", fonctionSignataire: config.fonctionSignataire || "", texteAttestation: config.texteAttestation || "", logoUrl: config.logoUrl || "", logoS3Key: config.logoS3Key || "", signatureUrl: config.signatureUrl || "", signatureS3Key: config.signatureS3Key || "", }); } }} > Annuler {updateConfig.isPending ? "Enregistrement..." : "Enregistrer"} ); }
Chargement...
Personnalisez le contenu et la signature des attestations de formation
{'{{nomComplet}}'}
{'{{nomFormation}}'}
{'{{dateDebut}}'}
{'{{dateFin}}'}