"use client"; import { useState } from "react"; import { useRouter } from "next/navigation"; import Link from "next/link"; import Header from "@/components/Header"; export default function CertificateUpload({ certificates }: { certificates: any[] }) { const router = useRouter(); const [file, setFile] = useState(null); const [uploading, setUploading] = useState(false); const [error, setError] = useState(""); const [success, setSuccess] = useState(""); const latest = certificates[0]; async function handleSubmit(e: React.FormEvent) { e.preventDefault(); if (!file) { setError("Choisis un fichier d'abord"); return; } setUploading(true); setError(""); setSuccess(""); try { const formData = new FormData(); formData.append("file", file); formData.append("subdir", "certificates"); const up = await fetch("/api/upload", { method: "POST", body: formData }); if (!up.ok) throw new Error("Upload échoué"); const { url } = await up.json(); const res = await fetch("/api/certificates", { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ fileUrl: url }), }); if (!res.ok) throw new Error("Enregistrement échoué"); setSuccess("Certificat envoyé ! Juanito va le vérifier."); setFile(null); router.refresh(); } catch (err: any) { setError(err.message || "Une erreur est survenue"); } finally { setUploading(false); } } return (
← Retour à mon espace

📄 Certificat médical

⚠️ Le certificat médical est obligatoire pour pratiquer le Muay Thai. Envoie une photo ou un scan de ton certificat, Juanito le validera rapidement.

{latest && (

Statut actuel

Envoyé le{" "} {new Date(latest.createdAt).toLocaleDateString("fr-FR", { day: "numeric", month: "long", year: "numeric", })}

)}

{latest?.status === "VALIDATED" ? "Renvoyer un certificat (si le tien expire)" : "Envoyer votre certificat"}

📎 {file ? (

{file.name}

) : (

Photo ou PDF du certificat

)}
{error &&

{error}

} {success && (

✅ {success}

)}
); } function StatusBadge({ status }: { status: string }) { switch (status) { case "VALIDATED": return ( ✓ Validé ); case "REJECTED": return ( ✗ Rejeté ); default: return ( ⏳ En attente de validation ); } }