feat: les evenements hors période de résistance son ignorés

wip-related-pages
Sébastien Arod 2024-10-12 22:41:30 +02:00
parent 5c0aebbcc3
commit c2c9b8f9db
2 changed files with 62 additions and 5 deletions

View File

@ -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,
};
}

View File

@ -134,7 +134,8 @@ 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.
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")}
`;