statistiques/src/data/nettoyage/nettoyerDonneesFamilles.ts
2024-10-14 13:24:30 +02:00

57 lines
1.8 KiB
TypeScript

import { Famille } from "../Famille";
import { checkDataConsistency } from "./checkDataConsistency";
import {
MessageDeNettoyage,
msgDonneeBloquante,
msgDonneeSuspecte,
} from "./MessageDeNettoyage";
import { supprimerLesEntreesVide } from "./supprimerLesEntreesVide";
import { supprimerLesEvenementsHorsResisstance } from "./supprimerLesEvenementsHorsResisstance";
import { supprimerLesEvenementsSansDate } from "./supprimerLesEvenementsSansDate";
export type DonneesNettoyees = {
familles: Famille[];
messages: MessageDeNettoyage[];
};
export function nettoyerDonneesFamilles(
donneesFamillesBrutes: Famille[]
): DonneesNettoyees {
let familles = donneesFamillesBrutes;
let messages: MessageDeNettoyage[] = [];
const output1 = supprimerLesEntreesVide(familles);
messages = [...messages, ...output1.messages];
familles = output1.familles;
// TODO convert checkDataConsistency to filters
const consistencyReport = checkDataConsistency(familles);
// Adapte les message
const errorMessages: MessageDeNettoyage[] = consistencyReport.errors.map(
(e) => msgDonneeBloquante(`${e.familyId} - ${e.issueType}`)
);
const warnings: MessageDeNettoyage[] = consistencyReport.warnings.map((e) =>
msgDonneeSuspecte(`${e.familyId} - ${e.issueType}`)
);
messages = [...messages, ...errorMessages, ...warnings];
type FonctionNettoyage = (familles: Famille[]) => DonneesNettoyees;
const fonctionsDeNettoyage: FonctionNettoyage[] = [
supprimerLesEvenementsSansDate,
supprimerLesEvenementsHorsResisstance,
];
for (const fn of fonctionsDeNettoyage) {
const donneesNettoyees: DonneesNettoyees = fn.apply(null, [familles]);
messages = [...messages, ...donneesNettoyees.messages];
familles = donneesNettoyees.familles;
}
return {
familles,
messages,
};
}