Checkpoint: Checkpoint: Restauration de la procédure sequences.getDatesByFormateurToken et de la fonction getSequenceByFormateurToken dans db.ts. Le système d'émargement formateur fonctionne maintenant correctement avec chargement des dates. Prochaine étape : corriger l'affichage du message "[ERREUR MUTATION]" pour les doublons.

This commit is contained in:
Manus
2026-02-06 09:43:43 -05:00
parent 98c3b21ec1
commit a40e0bf6cd
23 changed files with 2749 additions and 13 deletions

View File

@@ -68,7 +68,6 @@ export async function validerPresence(params: {
commentaire: params.commentaire,
signatureUrl: params.signatureUrl,
signatureS3Key: params.signatureS3Key,
dateSigned: params.signatureUrl ? new Date() : undefined,
});
return { success: true };
@@ -93,7 +92,6 @@ export async function getPresencesBySequence(sequenceId: number) {
commentaire: presences.commentaire,
signatureUrl: sql<string | null>`${presences}.signatureUrl`,
signatureS3Key: sql<string | null>`${presences}.signatureS3Key`,
dateSigned: sql<Date | null>`${presences}.dateSigned`,
apprenantId: apprenants.id,
apprenantNom: apprenants.nom,
apprenantPrenom: apprenants.prenom,
@@ -128,7 +126,6 @@ export async function getPresencesByInscription(inscriptionId: number) {
commentaire: presences.commentaire,
signatureUrl: sql<string | null>`${presences}.signatureUrl`,
signatureS3Key: sql<string | null>`${presences}.signatureS3Key`,
dateSigned: sql<Date | null>`${presences}.dateSigned`,
dateDebut: datesFormation.dateDebut,
dateFin: datesFormation.dateFin,
})
@@ -233,8 +230,8 @@ export async function validerPresenceFormateur(params: {
and(
eq(presences.formateurId, params.formateurId),
eq(presences.dateFormationId, params.dateFormationId),
eq(presences.periode, params.periode),
eq(presences.typeUtilisateur, 'formateur')
sql`${presences.periode} = ${params.periode}`,
sql`${presences.typeUtilisateur} = 'formateur'`
)
);
@@ -244,17 +241,47 @@ export async function validerPresenceFormateur(params: {
// Créer la présence formateur
await db.insert(presences).values({
typeUtilisateur: "formateur",
formateurId: params.formateurId,
dateFormationId: params.dateFormationId,
periode: params.periode,
typeUtilisateur: 'formateur',
heurePresence: new Date(),
modeValidation: params.modeValidation,
commentaire: params.commentaire,
signatureUrl: params.signatureUrl,
signatureS3Key: params.signatureS3Key,
dateSigned: params.signatureUrl ? new Date() : undefined,
});
return { success: true };
}
/**
* Récupérer les présences du formateur pour une séquence
*/
export async function getPresencesFormateurBySequence(sequenceId: number) {
const db = await getDb();
if (!db) throw new Error("Database not available");
const result = await db
.select({
presenceId: presences.id,
formateurId: presences.formateurId,
dateFormationId: presences.dateFormationId,
periode: presences.periode,
heurePresence: presences.heurePresence,
modeValidation: presences.modeValidation,
commentaire: presences.commentaire,
signatureUrl: sql<string | null>`${presences}.signatureUrl`,
signatureS3Key: sql<string | null>`${presences}.signatureS3Key`,
})
.from(presences)
.innerJoin(datesFormation, eq(presences.dateFormationId, datesFormation.id))
.where(
and(
eq(datesFormation.sequenceId, sequenceId),
sql`${presences}.typeUtilisateur = 'formateur'`
)
);
return result;
}