diff --git a/src/data/Famille.ts b/src/data/Famille.ts index ccad687..8921d60 100644 --- a/src/data/Famille.ts +++ b/src/data/Famille.ts @@ -5,6 +5,7 @@ import { isPeriodContaining } from "../period/isPeriodContaining"; import { ContexteEntreeDC } from "./ContexteEntreeDC"; import { EvenementFamille } from "./EvenementFamille"; import { + statutAllie, statutExResistant, StatutFamille, statutResistant, @@ -50,6 +51,7 @@ export function periodOfResistance( ): Period | null { if ( family.Statut !== statutResistant && + family.Statut !== statutAllie && family.Statut !== statutExResistant ) { return null; @@ -72,7 +74,7 @@ export function isResistant( return por !== null && isPeriodContaining(por, date); } -export function isExResistant( +export function isExResistantOrAllie( family: Famille, date: Date = new Date(Date.now()) ): boolean { diff --git a/src/data/StatutFamille.ts b/src/data/StatutFamille.ts index a7cb51a..13e86e7 100644 --- a/src/data/StatutFamille.ts +++ b/src/data/StatutFamille.ts @@ -11,10 +11,12 @@ export const statutsPreIntegration = ["en réflexion"] as const; export const statutsIntegrationEnEchec = ["Abandon", "Incompatible"] as const; export const statutResistant = "Résistant·e"; export const statutExResistant = "Ex résistant·e"; +export const statutAllie = "Allié·e"; export const statutsFamille = [ ...statutsPreIntegration, statutResistant, statutExResistant, + statutAllie, ...statutsIntegrationEnCours, ...statutsIntegrationEnEchec, ] as const; diff --git a/src/data/nettoyage/familles/corrigerFamilleExResistanteSansDateIntegration.ts b/src/data/nettoyage/familles/corrigerFamilleExResistanteSansDateIntegration.ts index 7c120bc..46a5481 100644 --- a/src/data/nettoyage/familles/corrigerFamilleExResistanteSansDateIntegration.ts +++ b/src/data/nettoyage/familles/corrigerFamilleExResistanteSansDateIntegration.ts @@ -1,5 +1,9 @@ import { Famille } from "../../Famille"; -import { integrationAFinaliser, statutExResistant } from "../../StatutFamille"; +import { + integrationAFinaliser, + statutAllie, + statutExResistant, +} from "../../StatutFamille"; import { DonneesNettoyees } from "../fwk/DonneesNettoyees"; import { nettoyerFamilles } from "./nettoyerFamilles"; import { msgDonneeCorrigee } from "../fwk/MessageDeNettoyage"; @@ -9,11 +13,13 @@ export function corrigerFamilleExResistanteSansDateIntegration( ): DonneesNettoyees { return nettoyerFamilles( familles, - (f) => f.Statut === statutExResistant && f.Integration === null, + (f) => + (f.Statut === statutExResistant || f.Statut === statutAllie) && + f.Integration === null, (f) => ({ ...f, Statut: integrationAFinaliser }), (f) => msgDonneeCorrigee( - `Famille ${f.Titre} - avec un statut Ex Résistant maos sans date d'intégration => Le statut est remplacé par "${integrationAFinaliser}" pour le calcul des statistics` + `Famille ${f.Titre} - avec un statut "${f.Statut}" mais sans date d'intégration => Le statut est remplacé par "${integrationAFinaliser}" pour le calcul des statistics` ) ); } diff --git a/src/data/nettoyage/familles/corrigerFamilleExResistanteSansDateSortie copy.ts b/src/data/nettoyage/familles/corrigerFamilleExResistanteSansDateSortie copy.ts index b623cf3..900c229 100644 --- a/src/data/nettoyage/familles/corrigerFamilleExResistanteSansDateSortie copy.ts +++ b/src/data/nettoyage/familles/corrigerFamilleExResistanteSansDateSortie copy.ts @@ -1,5 +1,9 @@ import { Famille } from "../../Famille"; -import { statutExResistant, statutResistant } from "../../StatutFamille"; +import { + statutAllie, + statutExResistant, + statutResistant, +} from "../../StatutFamille"; import { DonneesNettoyees } from "../fwk/DonneesNettoyees"; import { msgDonneeCorrigee } from "../fwk/MessageDeNettoyage"; import { nettoyerFamilles } from "./nettoyerFamilles"; @@ -9,11 +13,13 @@ export function corrigerFamilleExResistanteSansDateSortie( ): DonneesNettoyees { return nettoyerFamilles( familles, - (f) => f.Statut === statutExResistant && f.Sortie === null, + (f) => + (f.Statut === statutExResistant || f.Statut === statutAllie) && + f.Sortie === null, (f) => ({ ...f, Statut: statutResistant }), (f) => msgDonneeCorrigee( - `Famille ${f.Titre} - avec un statut Ex Résistant maos sans date de Sortie => Le statut est remplacé par "${statutResistant}" pour le calcul des statistics` + `Famille ${f.Titre} - avec un statut "${f.Statut}" mais sans date de Sortie => Le statut est remplacé par "${statutResistant}" pour le calcul des statistics` ) ); } diff --git a/src/statistiques/v2/autres/computeStatsAutres.ts b/src/statistiques/v2/autres/computeStatsAutres.ts index b2bcbcf..00fcc17 100644 --- a/src/statistiques/v2/autres/computeStatsAutres.ts +++ b/src/statistiques/v2/autres/computeStatsAutres.ts @@ -1,11 +1,15 @@ -import { Famille, isExResistant, isResistant } from "../../../data/Famille"; +import { + Famille, + isExResistantOrAllie, + isResistant, +} from "../../../data/Famille"; import { filterFamillesWithOneOfEvenementsOfType } from "../filterFamillesWithOneOfEvenementsOfType"; import { nbFamillesAvecPagesLiees } from "../nbFamillesAvecPagesLiees"; import { StatsAutres } from "./StatsAutres"; export function computeStatsAutres(familles: Famille[]): StatsAutres { const famillesResistantesOuEx = familles.filter( - (f) => isResistant(f) || isExResistant(f) + (f) => isResistant(f) || isExResistantOrAllie(f) ); const statsAutres: StatsAutres = { nbFamillesControleFiscal: nbFamillesAvecPagesLiees( diff --git a/src/statistiques/v2/departemental/computeStatDepartement.ts b/src/statistiques/v2/departemental/computeStatDepartement.ts index b1603d6..c6752a3 100644 --- a/src/statistiques/v2/departemental/computeStatDepartement.ts +++ b/src/statistiques/v2/departemental/computeStatDepartement.ts @@ -4,7 +4,11 @@ import { isInformationPreoccupante, isProcedureCivile, } from "../../../data/EvenementFamille"; -import { Famille, isExResistant, isResistant } from "../../../data/Famille"; +import { + Famille, + isExResistantOrAllie, + isResistant, +} from "../../../data/Famille"; import { isEvtTypeProcedurePenale, isEvtTypeProcedurePenaleHorsGendarmerie, @@ -22,7 +26,7 @@ export function computeStatsDepartementales( departements: Departement[] ): StatDepartementales { const famillesResistantesOuEx = familles.filter( - (f) => isResistant(f) || isExResistant(f) + (f) => isResistant(f) || isExResistantOrAllie(f) ); const famillesByDepartement: Record = groupBy( famillesResistantesOuEx, diff --git a/src/statistiques/v2/generales/computeStatsGenerales.ts b/src/statistiques/v2/generales/computeStatsGenerales.ts index 36db78d..7204dd6 100644 --- a/src/statistiques/v2/generales/computeStatsGenerales.ts +++ b/src/statistiques/v2/generales/computeStatsGenerales.ts @@ -1,7 +1,7 @@ import { dureeResistanceInDays, Famille, - isExResistant, + isExResistantOrAllie, isResistant, } from "../../../data/Famille"; import { average } from "../math/average"; @@ -13,7 +13,7 @@ import { nbFamillesAvecPagesLiees } from "../nbFamillesAvecPagesLiees"; export function computeStatsGenerales(familles: Famille[]): StatsGenerales { const famillesResistantesOrEx = familles.filter( - (f) => isResistant(f) || isExResistant(f) + (f) => isResistant(f) || isExResistantOrAllie(f) ); const famillesResistantes = familles.filter((f) => isResistant(f)); diff --git a/src/statistiques/v2/generales/computeStatsGeneralesMensuelles.ts b/src/statistiques/v2/generales/computeStatsGeneralesMensuelles.ts index d1504c3..10d0532 100644 --- a/src/statistiques/v2/generales/computeStatsGeneralesMensuelles.ts +++ b/src/statistiques/v2/generales/computeStatsGeneralesMensuelles.ts @@ -1,4 +1,8 @@ -import { Famille, isExResistant, isResistant } from "../../../data/Famille"; +import { + Famille, + isExResistantOrAllie, + isResistant, +} from "../../../data/Famille"; import { generateELMonths } from "../../../period/generateELMonths"; import { isPeriodContaining } from "../../../period/isPeriodContaining"; import { Period } from "../../../period/Period"; @@ -45,7 +49,7 @@ export function computeStatsGeneralesMensuelles( function nbEntreeSurPeriode(familles: Famille[], period: Period): number { return familles.filter( (f) => - (isResistant(f) || isExResistant(f)) && + (isResistant(f) || isExResistantOrAllie(f)) && f.Integration && isPeriodContaining(period, f.Integration) ).length; @@ -54,7 +58,7 @@ function nbEntreeSurPeriode(familles: Famille[], period: Period): number { function nbSortieSurPeriode(familles: Famille[], period: Period): number { return familles.filter( (f) => - (isResistant(f) || isExResistant(f)) && + (isResistant(f) || isExResistantOrAllie(f)) && f.Sortie && isPeriodContaining(period, f.Sortie) ).length; @@ -66,7 +70,7 @@ function nbFamillesResistanteAFinPeriode( ): number { return familles.filter( (f) => - (isResistant(f) || isExResistant(f)) && + (isResistant(f) || isExResistantOrAllie(f)) && f.Integration && f.Integration < period.end && (!f.Sortie || f.Sortie > period.end) @@ -79,7 +83,7 @@ function nbFamillesExResistanteAFinPeriode( ): number { return familles.filter( (f) => - (isResistant(f) || isExResistant(f)) && + (isResistant(f) || isExResistantOrAllie(f)) && f.Integration && f.Integration < period.end && f.Sortie && diff --git a/src/statistiques/v2/penales/computeStatsPenales.ts b/src/statistiques/v2/penales/computeStatsPenales.ts index 5782ecb..091ec77 100644 --- a/src/statistiques/v2/penales/computeStatsPenales.ts +++ b/src/statistiques/v2/penales/computeStatsPenales.ts @@ -6,7 +6,11 @@ import { EvenementFamille, isProcedurePenaleHorsGendarmerie, } from "../../../data/EvenementFamille"; -import { Famille, isExResistant, isResistant } from "../../../data/Famille"; +import { + Famille, + isExResistantOrAllie, + isResistant, +} from "../../../data/Famille"; import { filterFamillesWithOneOfEvenements } from "../filterFamillesWithOneOfEvenements"; import { filterFamillesWithOneOfEvenementsOfType } from "../filterFamillesWithOneOfEvenementsOfType"; import { StatsPenales } from "./StatsPenales"; @@ -30,7 +34,7 @@ export type FamilleAvecInfoTribunaux = Famille & { export function computeStatsPenales(familles: Famille[]): StatsPenales { const famillesResistantesOuEx = familles.filter( - (f) => isResistant(f) || isExResistant(f) + (f) => isResistant(f) || isExResistantOrAllie(f) ); const famillesMisesEnDemeure = filterFamillesWithOneOfEvenementsOfType( famillesResistantesOuEx, diff --git a/src/statistiques/v2/sociales/computeStatsSociales.ts b/src/statistiques/v2/sociales/computeStatsSociales.ts index fab4866..4e2d3a2 100644 --- a/src/statistiques/v2/sociales/computeStatsSociales.ts +++ b/src/statistiques/v2/sociales/computeStatsSociales.ts @@ -3,7 +3,11 @@ import { isInformationPreoccupante, isProcedureCivile, } from "../../../data/EvenementFamille"; -import { Famille, isExResistant, isResistant } from "../../../data/Famille"; +import { + Famille, + isExResistantOrAllie, + isResistant, +} from "../../../data/Famille"; import { filterFamillesWithOneOfEvenements } from "../filterFamillesWithOneOfEvenements"; import { filterFamillesWithOneOfEvenementsOfType } from "../filterFamillesWithOneOfEvenementsOfType"; import { nbFamillesAvecPagesLiees } from "../nbFamillesAvecPagesLiees"; @@ -11,7 +15,7 @@ import { StatsSociales } from "./StatsSociales"; export function computeStatsSociales(familles: Famille[]): StatsSociales { const famillesResistantesOuEx = familles.filter( - (f) => isResistant(f) || isExResistant(f) + (f) => isResistant(f) || isExResistantOrAllie(f) ); const now = new Date(); const statsCiviles: StatsSociales = {