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