Checkpoint: Affichage des informations de signature dans la fenêtre d'émargement numérique :

- Ajout des champs signatureUrl, signatureS3Key et dateSigned dans getPresencesByInscription
- Affichage du nom du signataire, date/heure de validation à côté de chaque puce matin/après-midi
- Icône cliquable pour visualiser la signature en grand format
- Modale Dialog pour afficher la signature manuscrite
- Fonction getPresenceInfo pour récupérer les détails de présence
- Interface moderne avec icône de stylo SVG pour les signatures
This commit is contained in:
Manus
2026-01-27 07:38:59 -05:00
parent 5356819ceb
commit feb708bb3e
4 changed files with 119 additions and 7 deletions

View File

@@ -100,6 +100,9 @@ export async function getPresencesByInscription(inscriptionId: number) {
modeValidation: presences.modeValidation,
validateurId: presences.validateurId,
commentaire: presences.commentaire,
signatureUrl: presences.signatureUrl,
signatureS3Key: presences.signatureS3Key,
dateSigned: presences.dateSigned,
dateDebut: datesFormation.dateDebut,
dateFin: datesFormation.dateFin,
})

View File

@@ -2485,10 +2485,11 @@ export const appRouter = router({
const { sequences, inscriptions } = await import("../drizzle/schema");
const { eq } = await import("drizzle-orm");
const db = await getDb();
if (!db) throw new Error("Database not available");
// Si mode QR code, vérifier le token
if (input.modeValidation === "qrcode" && input.token) {
const db = await getDb();
if (!db) throw new Error("Database not available");
// Récupérer l'inscription pour vérifier la séquence
const inscription = await db.select().from(inscriptions).where(eq(inscriptions.id, input.inscriptionId)).limit(1);