Checkpoint: Correction du bug d'émargement formateur bloqué sur la saisie d'email
- Ajout de la détection automatique formateur/apprenant dans EmargementScan.tsx - Nouvelle procédure tRPC getSequenceByToken pour récupérer les infos de séquence - Interface adaptée selon le type d'utilisateur (apprenant ou formateur) - Déploiement réussi sur le VPS de production Le système détecte maintenant automatiquement si l'email correspond à un apprenant ou un formateur, et affiche l'interface appropriée pour chaque cas.
This commit is contained in:
@@ -2517,6 +2517,36 @@ export const appRouter = router({
|
||||
};
|
||||
}),
|
||||
|
||||
// Récupérer les informations de la séquence par token (pour formateurs)
|
||||
getSequenceByToken: publicProcedure
|
||||
.input(z.object({
|
||||
token: z.string(),
|
||||
}))
|
||||
.query(async ({ input }) => {
|
||||
const { getDb, getDatesBySequence } = await import("./db");
|
||||
const { sequences } = await import("../drizzle/schema");
|
||||
const { eq } = await import("drizzle-orm");
|
||||
|
||||
const db = await getDb();
|
||||
if (!db) throw new Error("Database not available");
|
||||
|
||||
// Récupérer la séquence par token
|
||||
const sequence = await db.select().from(sequences).where(eq(sequences.qrCodeToken, input.token)).limit(1);
|
||||
if (sequence.length === 0) {
|
||||
throw new Error("QR code invalide");
|
||||
}
|
||||
|
||||
// Récupérer les dates de la séquence
|
||||
const dates = await getDatesBySequence(sequence[0].id);
|
||||
|
||||
return {
|
||||
id: sequence[0].id,
|
||||
nom: sequence[0].nom,
|
||||
lieu: sequence[0].lieu,
|
||||
dates,
|
||||
};
|
||||
}),
|
||||
|
||||
// Valider une présence (scan QR code ou manuel)
|
||||
valider: publicProcedure
|
||||
.input(z.object({
|
||||
|
||||
Reference in New Issue
Block a user