Checkpoint: Ajout d'une colonne "Rappels configurés" dans le tableau de gestion des séquences permettant de visualiser instantanément les rappels automatiques associés à chaque date de formation. Modification backend : création de la fonction getRappelsByDateFormation() dans db.ts qui récupère les rappels spécifiques à une date ainsi que les rappels globaux (sans dates spécifiques). Modification du router sequences.list pour inclure les rappels dans les données des séquences via Promise.all. Interface frontend : ajout de la colonne entre "Dates" et "Lieu" avec badges violets (bg-purple-50, text-purple-700, border-purple-300) et icône Bell pour chaque rappel, organisés par date avec labels "Date 1:", "Date 2:", etc. Affichage "Aucun rappel" en italique gris pour les dates sans rappels. Cette fonctionnalité améliore considérablement la visibilité de la configuration des rappels et facilite la gestion globale des communications automatiques.
This commit is contained in:
35
server/db.ts
35
server/db.ts
@@ -1113,6 +1113,41 @@ export async function updateRappelExecution(id: number) {
|
||||
}).where(eq(rappels.id, id));
|
||||
}
|
||||
|
||||
export async function getRappelsByDateFormation(dateFormationId: number) {
|
||||
const db = await getDb();
|
||||
if (!db) return [];
|
||||
|
||||
// Récupérer les IDs des rappels associés à cette date
|
||||
const rappelDatesResults = await db.select().from(rappelDates).where(eq(rappelDates.dateFormationId, dateFormationId));
|
||||
const rappelIds = rappelDatesResults.map(rd => rd.rappelId);
|
||||
|
||||
if (rappelIds.length === 0) {
|
||||
// Retourner tous les rappels actifs qui n'ont pas de dates spécifiques (rappels globaux)
|
||||
const allRappels = await db.select().from(rappels).where(eq(rappels.actif, true));
|
||||
const globalRappels = [];
|
||||
|
||||
for (const rappel of allRappels) {
|
||||
const dates = await getRappelDates(rappel.id);
|
||||
if (dates.length === 0) {
|
||||
globalRappels.push(rappel);
|
||||
}
|
||||
}
|
||||
|
||||
return globalRappels;
|
||||
}
|
||||
|
||||
// Récupérer les détails des rappels
|
||||
const rappelsResults = await Promise.all(
|
||||
rappelIds.map(async (id) => {
|
||||
const rappelResult = await db.select().from(rappels).where(eq(rappels.id, id)).limit(1);
|
||||
return rappelResult.length > 0 ? rappelResult[0] : null;
|
||||
})
|
||||
);
|
||||
|
||||
// Filtrer les null et retourner
|
||||
return rappelsResults.filter((r): r is Rappel => r !== null);
|
||||
}
|
||||
|
||||
|
||||
// ==================== UTILISATEURS ADMIN ====================
|
||||
|
||||
|
||||
Reference in New Issue
Block a user