statistiques/src/data/nettoyage/nettoyerDonneesFamilles.ts

69 lines
1.8 KiB
TypeScript
Raw Normal View History

2024-10-12 18:54:11 +02:00
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: [],
};
}
}