import { Famille } from "../Famille"; import { checkDataConsistency } from "./checkDataConsistency"; import { MessageDeNettoyage, msgDonneeBloquante, msgDonneeIgnoree, msgDonneeSuspecte, } from "./MessageDeNettoyage"; type DonneesNettoyees = { familles: Famille[]; messages: MessageDeNettoyage[]; }; export function nettoyerDonneesFamilles( donneesFamillesBrutes: Famille[] ): DonneesNettoyees { let familles = donneesFamillesBrutes; let messages: MessageDeNettoyage[] = []; const output = supprimerLesEntreesVide(familles); messages = [...messages, ...output.messages]; familles = output.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]; return { familles, messages, }; } /** * Supprime "Famille de résistant" qui sont souvent créé par erreur */ function supprimerLesEntreesVide(familles: Famille[]): DonneesNettoyees { const nettoyees = familles.filter((f) => f.Titre !== "Famille de résistant"); const ignorees = familles.filter((f) => f.Titre === "Famille de résistant"); if (ignorees.length > 0) { return { familles: nettoyees, messages: [ msgDonneeIgnoree( `${ nettoyees.length - familles.length } enregistrement(s) famille "vide" ignoré(s)` ), ], }; } else { return { familles: nettoyees, messages: [], }; } }