From c2c9b8f9db9c5ce06b6f03d68f46391af5e3956b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Arod?= Date: Sat, 12 Oct 2024 22:41:30 +0200 Subject: [PATCH] =?UTF-8?q?feat:=20les=20evenements=20hors=20p=C3=A9riode?= =?UTF-8?q?=20de=20r=C3=A9sistance=20son=20ignor=C3=A9s?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/data/nettoyage/nettoyerDonneesFamilles.ts | 62 ++++++++++++++++++- src/index.ts | 5 +- 2 files changed, 62 insertions(+), 5 deletions(-) diff --git a/src/data/nettoyage/nettoyerDonneesFamilles.ts b/src/data/nettoyage/nettoyerDonneesFamilles.ts index 37f639e..70963c9 100644 --- a/src/data/nettoyage/nettoyerDonneesFamilles.ts +++ b/src/data/nettoyage/nettoyerDonneesFamilles.ts @@ -1,3 +1,4 @@ +import { EvenementFamille } from "../EvenementFamille"; import { Famille } from "../Famille"; import { checkDataConsistency } from "./checkDataConsistency"; import { @@ -19,9 +20,9 @@ export function nettoyerDonneesFamilles( let messages: MessageDeNettoyage[] = []; - const output = supprimerLesEntreesVide(familles); - messages = [...messages, ...output.messages]; - familles = output.familles; + const output1 = supprimerLesEntreesVide(familles); + messages = [...messages, ...output1.messages]; + familles = output1.familles; // TODO convert checkDataConsistency to filters const consistencyReport = checkDataConsistency(familles); @@ -36,6 +37,14 @@ export function nettoyerDonneesFamilles( messages = [...messages, ...errorMessages, ...warnings]; + const output2 = supprimerLesEvenementsSansDate(familles); + messages = [...messages, ...output2.messages]; + familles = output2.familles; + + const output3 = supprimerLesEvenementsHorsResisstance(familles); + messages = [...messages, ...output3.messages]; + familles = output3.familles; + return { familles, messages, @@ -66,3 +75,50 @@ function supprimerLesEntreesVide(familles: Famille[]): DonneesNettoyees { }; } } + +function supprimerLesEvenementsSansDate(familles: Famille[]): DonneesNettoyees { + return ignorerEvenements( + familles, + (e: EvenementFamille) => e.Date === null, + (e, f) => + `Evenement "${f.Titre} - ${e.Évènement}" [${e.notionId}] n'as pas de Date il sera ignoré` + ); +} + +function supprimerLesEvenementsHorsResisstance( + familles: Famille[] +): DonneesNettoyees { + return ignorerEvenements( + familles, + (e: EvenementFamille, f: Famille) => { + return ( + e.Date !== null && + ((f.Integration !== null && e.Date < f.Integration) || + (f.Sortie !== null && e.Date > f.Sortie)) + ); + }, + (e, f) => + `Evenement "${f.Titre} - ${e.Évènement}" [${e.notionId}] hors période de résistance il sera ignoré` + ); +} + +function ignorerEvenements( + familles: Famille[], + conditionAIgnoree: (evt: EvenementFamille, f: Famille) => boolean, + messageIgnoreeFn: (evt: EvenementFamille, f: Famille) => string +): DonneesNettoyees { + let messages: MessageDeNettoyage[] = []; + const nettoyees = familles.map((f) => { + const nettoyees = f.Evenements.filter((e) => !conditionAIgnoree(e, f)); + const evtIgnorees = f.Evenements.filter((e) => conditionAIgnoree(e, f)); + messages = [ + ...messages, + ...evtIgnorees.map((e) => msgDonneeIgnoree(messageIgnoreeFn(e, f))), + ]; + return { ...f, Evenements: nettoyees }; + }); + return { + familles: nettoyees, + messages, + }; +} diff --git a/src/index.ts b/src/index.ts index e83bfff..619336e 100644 --- a/src/index.ts +++ b/src/index.ts @@ -134,8 +134,9 @@ function buildProcessOptions(): ProcessOptions { await publishStatisticsToNotion(elStats, currentDate, notionClient); const header = ` - Note: Sauf mention contraire les statistiques sont basées sur les familles résistantes & ex-résistantes. - Dernière mise à jour le ${formatDate(currentDate, "dd/MM/yyyy à HH:mm")} +Note: + - Sauf mention contraire les statistiques sont basées sur les familles résistantes & ex-résistantes (en ignorant les évènements hors de la période d'appartenance à EL') +Dernière mise à jour le ${formatDate(currentDate, "dd/MM/yyyy à HH:mm")} `; await publishStatsGenerales(