refactor: split nettoyaerDonneesFamilles
parent
3480e18c76
commit
313e5b6276
|
@ -81,14 +81,6 @@ function checkFamilyDataConsistency(family: Famille): ConsistencyReport {
|
|||
}
|
||||
}
|
||||
|
||||
consistencyWarnings.push(
|
||||
...family.Evenements.filter((e) => e.Type !== null && e.Date === null).map(
|
||||
(e) => ({
|
||||
familyId: family.Titre,
|
||||
issueType: `Evenement ${e.notionId} avec Type "${e.Type}" n'a pas de Date`,
|
||||
})
|
||||
)
|
||||
);
|
||||
return {
|
||||
errors: consistencyErrors,
|
||||
warnings: consistencyWarnings,
|
||||
|
|
|
@ -0,0 +1,25 @@
|
|||
import { EvenementFamille } from "../EvenementFamille";
|
||||
import { Famille } from "../Famille";
|
||||
import { MessageDeNettoyage, msgDonneeIgnoree } from "./MessageDeNettoyage";
|
||||
import { DonneesNettoyees } from "./nettoyerDonneesFamilles";
|
||||
|
||||
export 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,
|
||||
};
|
||||
}
|
|
@ -1,14 +1,15 @@
|
|||
import { EvenementFamille } from "../EvenementFamille";
|
||||
import { Famille } from "../Famille";
|
||||
import { checkDataConsistency } from "./checkDataConsistency";
|
||||
import {
|
||||
MessageDeNettoyage,
|
||||
msgDonneeBloquante,
|
||||
msgDonneeIgnoree,
|
||||
msgDonneeSuspecte,
|
||||
} from "./MessageDeNettoyage";
|
||||
import { supprimerLesEntreesVide } from "./supprimerLesEntreesVide";
|
||||
import { supprimerLesEvenementsHorsResisstance } from "./supprimerLesEvenementsHorsResisstance";
|
||||
import { supprimerLesEvenementsSansDate } from "./supprimerLesEvenementsSansDate";
|
||||
|
||||
type DonneesNettoyees = {
|
||||
export type DonneesNettoyees = {
|
||||
familles: Famille[];
|
||||
messages: MessageDeNettoyage[];
|
||||
};
|
||||
|
@ -37,88 +38,20 @@ 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,
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* 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: [],
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
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))),
|
||||
type FonctionNettoyage = (familles: Famille[]) => DonneesNettoyees;
|
||||
const fonctionsDeNettoyage: FonctionNettoyage[] = [
|
||||
supprimerLesEvenementsSansDate,
|
||||
supprimerLesEvenementsHorsResisstance,
|
||||
];
|
||||
return { ...f, Evenements: nettoyees };
|
||||
});
|
||||
|
||||
for (const fn of fonctionsDeNettoyage) {
|
||||
const donneesNettoyees: DonneesNettoyees = fn.apply(null, [familles]);
|
||||
messages = [...messages, ...donneesNettoyees.messages];
|
||||
familles = donneesNettoyees.familles;
|
||||
}
|
||||
|
||||
return {
|
||||
familles: nettoyees,
|
||||
familles,
|
||||
messages,
|
||||
};
|
||||
}
|
||||
|
|
|
@ -0,0 +1,28 @@
|
|||
import { Famille } from "../Famille";
|
||||
import { msgDonneeIgnoree } from "./MessageDeNettoyage";
|
||||
import { DonneesNettoyees } from "./nettoyerDonneesFamilles";
|
||||
|
||||
/**
|
||||
* Supprime "Famille de résistant" qui sont souvent créé par erreur
|
||||
*/
|
||||
export 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: [],
|
||||
};
|
||||
}
|
||||
}
|
|
@ -0,0 +1,21 @@
|
|||
import { EvenementFamille } from "../EvenementFamille";
|
||||
import { Famille } from "../Famille";
|
||||
import { DonneesNettoyees } from "./nettoyerDonneesFamilles";
|
||||
import { ignorerEvenements } from "./ignorerEvenements";
|
||||
|
||||
export 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é`
|
||||
);
|
||||
}
|
|
@ -0,0 +1,15 @@
|
|||
import { EvenementFamille } from "../EvenementFamille";
|
||||
import { Famille } from "../Famille";
|
||||
import { DonneesNettoyees } from "./nettoyerDonneesFamilles";
|
||||
import { ignorerEvenements } from "./ignorerEvenements";
|
||||
|
||||
export 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é`
|
||||
);
|
||||
}
|
Loading…
Reference in New Issue