Checkpoint: Corrections multiples :

- Renommage questionnaire.nom → questionnaire.titre dans QuestionnaireReponse.tsx, AdminQuestionnaireEdit.tsx, questionnaireScheduler.ts, questionnaireExport.ts
- Correction des requêtes SQL dans questionnaireDb.ts (suppression de la condition complete inexistante)
- Ajout des colonnes valeurMin et valeurMax dans la table questions
- Renommage de la colonne nom en titre dans la table questionnaires
This commit is contained in:
Manus
2026-01-14 03:08:54 -05:00
parent 8ecb856191
commit b53801c463
94 changed files with 29353 additions and 2042 deletions

View File

@@ -0,0 +1,85 @@
import { eq, ne, and } from "drizzle-orm";
import { inscriptions, apprenants, sequences, datesFormation } from "../drizzle/schema";
import { getDb } from "./db";
/**
* Récupérer les inscriptions d'une séquence avec les dates de formation
*/
export async function getInscriptionsWithDates(sequenceId: number) {
const db = await getDb();
if (!db) return [];
// Récupérer les inscriptions
const results = await db
.select({
inscription: inscriptions,
apprenant: apprenants,
})
.from(inscriptions)
.leftJoin(apprenants, eq(inscriptions.apprenantId, apprenants.id))
.where(
and(
eq(inscriptions.sequenceId, sequenceId),
ne(inscriptions.statut, "annulee")
)
);
// Récupérer les dates de formation pour cette séquence
const dates = await db
.select()
.from(datesFormation)
.where(eq(datesFormation.sequenceId, sequenceId))
.orderBy(datesFormation.ordre);
// Combiner les données
return results.map((r) => ({
...r,
dates,
}));
}
/**
* Récupérer les inscriptions d'un apprenant avec les détails des séquences et dates
*/
export async function getInscriptionsByApprenantWithDates(apprenantId: number) {
const db = await getDb();
if (!db) return [];
// Récupérer les inscriptions
const results = await db
.select({
inscription: inscriptions,
sequence: sequences,
})
.from(inscriptions)
.leftJoin(sequences, eq(inscriptions.sequenceId, sequences.id))
.where(
and(
eq(inscriptions.apprenantId, apprenantId),
ne(inscriptions.statut, "annulee")
)
);
// Pour chaque inscription, récupérer les dates de formation
const resultsWithDates = await Promise.all(
results.map(async (r) => {
if (!r.sequence) return { ...r, dates: [] };
const dates = await db
.select()
.from(datesFormation)
.where(eq(datesFormation.sequenceId, r.sequence.id))
.orderBy(datesFormation.ordre);
return {
...r,
sequence: {
...r.sequence,
dates,
},
};
})
);
return resultsWithDates;
}