From 3480e18c764162f9e19a8f151620fb8163f39f0f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Arod?= Date: Mon, 14 Oct 2024 13:10:12 +0200 Subject: [PATCH] feat: ajout de nbFamillesAvecGendarmerieSansSuiteACeJour --- src/data/EvenementFamille.ts | 9 +++++++++ src/statistiques/v2/penales/StatsPenales.ts | 4 ++++ .../v2/penales/computeStatsPenales.ts | 18 ++++++++++++++++-- 3 files changed, 29 insertions(+), 2 deletions(-) diff --git a/src/data/EvenementFamille.ts b/src/data/EvenementFamille.ts index f4cbbd5..a095746 100644 --- a/src/data/EvenementFamille.ts +++ b/src/data/EvenementFamille.ts @@ -22,6 +22,15 @@ export function isProcedurePenale(evenement: EvenementFamille): boolean { ); } +export function isProcedurePenaleHorsGendarmerie( + evenement: EvenementFamille +): boolean { + return ( + isProcedurePenale(evenement) && + evenement.Type !== "Gendarmerie/Forces de l'ordre" + ); +} + export function isCompositionPenale(evenement: EvenementFamille): boolean { return ( evenement.Type === "Composition pénale acceptée" || diff --git a/src/statistiques/v2/penales/StatsPenales.ts b/src/statistiques/v2/penales/StatsPenales.ts index 8d7f9e4..8f0e76e 100644 --- a/src/statistiques/v2/penales/StatsPenales.ts +++ b/src/statistiques/v2/penales/StatsPenales.ts @@ -15,6 +15,10 @@ export const statsPenalesDesc = { label: "Nb familles avec un évènement Gendarmerie ou autre Force de l'ordre", }, + nbFamillesAvecGendarmerieSansSuiteACeJour: { + label: + "Nb familles avec un évènement Gendarmerie mais sans suite à ce sjour (pas de procureur, procès...)", + }, procureur: { label: "Procureur", stats: { diff --git a/src/statistiques/v2/penales/computeStatsPenales.ts b/src/statistiques/v2/penales/computeStatsPenales.ts index 71f3674..bae9861 100644 --- a/src/statistiques/v2/penales/computeStatsPenales.ts +++ b/src/statistiques/v2/penales/computeStatsPenales.ts @@ -7,6 +7,7 @@ import { isGendarmerie, isProcedurePenale, EvenementFamille, + isProcedurePenaleHorsGendarmerie, } from "../../../data/EvenementFamille"; import { Famille, isExResistant, isResistant } from "../../../data/Famille"; import { average } from "../../../utils/math/average"; @@ -27,11 +28,21 @@ export function computeStatsPenales(familles: Famille[]): StatsPenales { famillesResistantesOuEx, "Mise en demeure de scolarisation" ); - const famillesAvecGendarmerie = filterFamillesWithOneOfEvenements( + + const famillesGendarmerie = filterFamillesWithOneOfEvenements( famillesResistantesOuEx, isGendarmerie ); + const famillesAvecGendarmerieSansSuiteACeJour = famillesGendarmerie.filter( + (f) => { + const evtsProcPenaleHorsGendarmerie = f.Evenements.filter( + isProcedurePenaleHorsGendarmerie + ); + return evtsProcPenaleHorsGendarmerie.length === 0; + } + ); + const famillesAvecInfoTribunaux: FamilleAvecInfoTribunaux[] = famillesResistantesOuEx.map((f) => { const evtTribunaux = f.Evenements.filter(isTribunalCorrectionnel); @@ -41,13 +52,16 @@ export function computeStatsPenales(familles: Famille[]): StatsPenales { evtTribunal2: evtTribunaux.length > 1 ? evtTribunaux[1] : undefined, }; }); + const statsPenales: StatsPenales = { nbFamillesMisesEnDemeure: famillesMisesEnDemeure.length, - nbFamillesAvecGendarmerie: famillesAvecGendarmerie.length, nbFamillesAvecProcedurePenale: filterFamillesWithOneOfEvenements( famillesResistantesOuEx, isProcedurePenale ).length, + nbFamillesAvecGendarmerie: famillesGendarmerie.length, + nbFamillesAvecGendarmerieSansSuiteACeJour: + famillesAvecGendarmerieSansSuiteACeJour.length, procureur: { nbFamillesAuditionProcureur: filterFamillesWithOneOfEvenementsOfType( famillesResistantesOuEx,