fix: stats sociales

wip-related-pages
Sébastien Arod 2024-09-08 16:31:15 +02:00
parent 8dda887349
commit e718874a3a
3 changed files with 55 additions and 43 deletions

View File

@ -34,7 +34,7 @@ export const statsGeneralesDesc = {
}, },
apresPoursuiteProcureur: { apresPoursuiteProcureur: {
label: "Nb Familles Après poursuite procureur", label: "Après poursuite procureur",
}, },
}, },
}, },

View File

@ -7,51 +7,54 @@ import {
isGendarmerie, isGendarmerie,
isProcedurePenale, isProcedurePenale,
} from "../../../data/EvenementFamille"; } from "../../../data/EvenementFamille";
import { Famille } from "../../../data/Famille"; import { Famille, isExResistant, isResistant } from "../../../data/Famille";
import { average } from "../../../utils/math/average"; import { average } from "../../../utils/math/average";
import { filterFamillesWithOneOfEvenements } from "../filterFamillesWithOneOfEvenements"; import { filterFamillesWithOneOfEvenements } from "../filterFamillesWithOneOfEvenements";
import { filterFamillesWithOneOfEvenementsOfType } from "../filterFamillesWithOneOfEvenementsOfType"; import { filterFamillesWithOneOfEvenementsOfType } from "../filterFamillesWithOneOfEvenementsOfType";
import { StatsPenales } from "./StatsPenales"; import { StatsPenales } from "./StatsPenales";
export function computeStatsPenales(familles: Famille[]): StatsPenales { export function computeStatsPenales(familles: Famille[]): StatsPenales {
const famillesResistantesOuEx = familles.filter(
(f) => isResistant(f) || isExResistant(f)
);
const famillesMisesEnDemeure = filterFamillesWithOneOfEvenementsOfType( const famillesMisesEnDemeure = filterFamillesWithOneOfEvenementsOfType(
familles, famillesResistantesOuEx,
"Mise en demeure de scolarisation" "Mise en demeure de scolarisation"
); );
const famillesAvecGendarmerie = filterFamillesWithOneOfEvenements( const famillesAvecGendarmerie = filterFamillesWithOneOfEvenements(
familles, famillesResistantesOuEx,
isGendarmerie isGendarmerie
); );
const statsPenales: StatsPenales = { const statsPenales: StatsPenales = {
nbFamillesMisesEnDemeure: famillesMisesEnDemeure.length, nbFamillesMisesEnDemeure: famillesMisesEnDemeure.length,
nbFamillesAvecGendarmerie: famillesAvecGendarmerie.length, nbFamillesAvecGendarmerie: famillesAvecGendarmerie.length,
nbFamillesAvecProcedurePenale: filterFamillesWithOneOfEvenements( nbFamillesAvecProcedurePenale: filterFamillesWithOneOfEvenements(
familles, famillesResistantesOuEx,
isProcedurePenale isProcedurePenale
).length, ).length,
procureur: { procureur: {
nbFamillesAuditionProcureur: filterFamillesWithOneOfEvenements( nbFamillesAuditionProcureur: filterFamillesWithOneOfEvenements(
familles, famillesResistantesOuEx,
isAuditionProcureurOuCRPC isAuditionProcureurOuCRPC
).length, ).length,
compositionPenales: computeCompositionPenales(familles), compositionPenales: computeCompositionPenales(familles),
crpc: computeCrpc(familles), crpc: computeCrpc(familles),
nbFamillesClassementSansSuite: filterFamillesWithOneOfEvenementsOfType( nbFamillesClassementSansSuite: filterFamillesWithOneOfEvenementsOfType(
familles, famillesResistantesOuEx,
"Classement pénal sans suite" "Classement pénal sans suite"
).length, ).length,
nbFamillesRappelALaLoi: filterFamillesWithOneOfEvenementsOfType( nbFamillesRappelALaLoi: filterFamillesWithOneOfEvenementsOfType(
familles, famillesResistantesOuEx,
"Rappel à la loi" "Rappel à la loi"
).length, ).length,
}, },
tribunalCorrectionnel: computeTribunalCorrectionnel(familles), tribunalCorrectionnel: computeTribunalCorrectionnel(familles),
nbFamillesAdministrateurAdhoc: filterFamillesWithOneOfEvenementsOfType( nbFamillesAdministrateurAdhoc: filterFamillesWithOneOfEvenementsOfType(
familles, famillesResistantesOuEx,
"Administrateur AD'HOC" "Administrateur AD'HOC"
).length, ).length,
nbFamillesTribunalDePolice: filterFamillesWithOneOfEvenementsOfType( nbFamillesTribunalDePolice: filterFamillesWithOneOfEvenementsOfType(
familles, famillesResistantesOuEx,
"Tribunal de police judiciaire" "Tribunal de police judiciaire"
).length, ).length,
intervalGendarmerieProcureur: computeIntervalGendarmerieProcureur(familles), intervalGendarmerieProcureur: computeIntervalGendarmerieProcureur(familles),
@ -61,16 +64,19 @@ export function computeStatsPenales(familles: Famille[]): StatsPenales {
return statsPenales; return statsPenales;
} }
function computeCrpc(familles: Famille[]): StatsPenales["procureur"]["crpc"] { function computeCrpc(
const famillesConcernees = filterFamillesWithOneOfEvenements(familles, (e) => famillesResistantesOuEx: Famille[]
isCRPC(e) ): StatsPenales["procureur"]["crpc"] {
const famillesConcernees = filterFamillesWithOneOfEvenements(
famillesResistantesOuEx,
(e) => isCRPC(e)
); );
const acceptees = filterFamillesWithOneOfEvenementsOfType( const acceptees = filterFamillesWithOneOfEvenementsOfType(
familles, famillesResistantesOuEx,
"Acceptation CRPC" "Acceptation CRPC"
); );
const refusees = filterFamillesWithOneOfEvenementsOfType( const refusees = filterFamillesWithOneOfEvenementsOfType(
familles, famillesResistantesOuEx,
"Refus CRPC" "Refus CRPC"
); );
@ -82,17 +88,18 @@ function computeCrpc(familles: Famille[]): StatsPenales["procureur"]["crpc"] {
} }
function computeCompositionPenales( function computeCompositionPenales(
familles: Famille[] famillesResistantesOuEx: Famille[]
): StatsPenales["procureur"]["compositionPenales"] { ): StatsPenales["procureur"]["compositionPenales"] {
const famillesConcernees = filterFamillesWithOneOfEvenements(familles, (e) => const famillesConcernees = filterFamillesWithOneOfEvenements(
isCompositionPenale(e) famillesResistantesOuEx,
(e) => isCompositionPenale(e)
); );
const acceptees = filterFamillesWithOneOfEvenementsOfType( const acceptees = filterFamillesWithOneOfEvenementsOfType(
familles, famillesResistantesOuEx,
"Composition pénale acceptée" "Composition pénale acceptée"
); );
const refusees = filterFamillesWithOneOfEvenementsOfType( const refusees = filterFamillesWithOneOfEvenementsOfType(
familles, famillesResistantesOuEx,
"Composition pénale refusée" "Composition pénale refusée"
); );
@ -104,19 +111,19 @@ function computeCompositionPenales(
} }
function computeTribunalCorrectionnel( function computeTribunalCorrectionnel(
familles: Famille[] famillesResistantesOuEx: Famille[]
): StatsPenales["tribunalCorrectionnel"] { ): StatsPenales["tribunalCorrectionnel"] {
const now = new Date(); const now = new Date();
const famillesPassees = filterFamillesWithOneOfEvenements( const famillesPassees = filterFamillesWithOneOfEvenements(
familles, famillesResistantesOuEx,
(e) => e.Type === "Tribunal correctionnel" && isEvenementBefore(e, now) (e) => e.Type === "Tribunal correctionnel" && isEvenementBefore(e, now)
); );
const famillesProgrammees = filterFamillesWithOneOfEvenements( const famillesProgrammees = filterFamillesWithOneOfEvenements(
familles, famillesResistantesOuEx,
(e) => e.Type === "Tribunal correctionnel" && !isEvenementBefore(e, now) (e) => e.Type === "Tribunal correctionnel" && !isEvenementBefore(e, now)
); );
const famillesRecidiveTribunal = familles.filter((f) => { const famillesRecidiveTribunal = famillesResistantesOuEx.filter((f) => {
return ( return (
f.Evenements.filter((e) => e.Type === "Tribunal correctionnel").length > 1 f.Evenements.filter((e) => e.Type === "Tribunal correctionnel").length > 1
); );
@ -127,7 +134,7 @@ function computeTribunalCorrectionnel(
nbFamillesProgrammees: famillesProgrammees.length, nbFamillesProgrammees: famillesProgrammees.length,
nbFamillesRecidive: famillesRecidiveTribunal.length, nbFamillesRecidive: famillesRecidiveTribunal.length,
nbFamilleAppelDuJugement: filterFamillesWithOneOfEvenementsOfType( nbFamilleAppelDuJugement: filterFamillesWithOneOfEvenementsOfType(
familles, famillesResistantesOuEx,
"Appel du jugement" "Appel du jugement"
).length, ).length,
}; };

View File

@ -3,64 +3,69 @@ import {
isInformationPreoccupante, isInformationPreoccupante,
isProcedureCivile, isProcedureCivile,
} from "../../../data/EvenementFamille"; } from "../../../data/EvenementFamille";
import { Famille } from "../../../data/Famille"; import { Famille, isExResistant, isResistant } from "../../../data/Famille";
import { filterFamillesWithOneOfEvenements } from "../filterFamillesWithOneOfEvenements"; import { filterFamillesWithOneOfEvenements } from "../filterFamillesWithOneOfEvenements";
import { filterFamillesWithOneOfEvenementsOfType } from "../filterFamillesWithOneOfEvenementsOfType"; import { filterFamillesWithOneOfEvenementsOfType } from "../filterFamillesWithOneOfEvenementsOfType";
import { StatsSociales } from "./StatsSociales"; import { StatsSociales } from "./StatsSociales";
export function computeStatsSociales(familles: Famille[]): StatsSociales { export function computeStatsSociales(familles: Famille[]): StatsSociales {
const famillesResistantesOuEx = familles.filter(
(f) => isResistant(f) || isExResistant(f)
);
const now = new Date(); const now = new Date();
const statsCiviles: StatsSociales = { const statsCiviles: StatsSociales = {
nbFamillesProcedureCivile: filterFamillesWithOneOfEvenements( nbFamillesProcedureCivile: filterFamillesWithOneOfEvenements(
familles, famillesResistantesOuEx,
(e) => isProcedureCivile(e) (e) => isProcedureCivile(e)
).length, ).length,
nbFamilleAvecIP: filterFamillesWithOneOfEvenements( nbFamilleAvecIP: filterFamillesWithOneOfEvenements(
familles, famillesResistantesOuEx,
isInformationPreoccupante isInformationPreoccupante
).length, ).length,
nbFamilleAvecAssistanceEducative: filterFamillesWithOneOfEvenementsOfType( nbFamilleAvecAssistanceEducative: filterFamillesWithOneOfEvenementsOfType(
familles, famillesResistantesOuEx,
"Assistance éducative" "Assistance éducative"
).length, ).length,
nbFamilleAvecAuditionDesEnfants: filterFamillesWithOneOfEvenementsOfType( nbFamilleAvecAuditionDesEnfants: filterFamillesWithOneOfEvenementsOfType(
familles, famillesResistantesOuEx,
"Audition des enfants" "Audition des enfants"
).length, ).length,
jugePourEnfant: { jugePourEnfant: {
nbFamillesPassees: filterFamillesWithOneOfEvenements( nbFamillesPassees: filterFamillesWithOneOfEvenements(
familles, famillesResistantesOuEx,
(e) => e.Type === "Juge pour enfants" && isEvenementBefore(e, now) (e) => e.Type === "Juge pour enfants" && isEvenementBefore(e, now)
).length, ).length,
nbFamillesConvoquées: filterFamillesWithOneOfEvenements( nbFamillesConvoquées: filterFamillesWithOneOfEvenements(
familles, famillesResistantesOuEx,
(e) => e.Type === "Juge pour enfants" && !isEvenementBefore(e, now) (e) => e.Type === "Juge pour enfants" && !isEvenementBefore(e, now)
).length, ).length,
}, },
nbFamilleAvecClassementSuiteIP: filterFamillesWithOneOfEvenementsOfType( nbFamilleAvecClassementSuiteIP: filterFamillesWithOneOfEvenementsOfType(
familles, famillesResistantesOuEx,
"Classement suite IP" "Classement suite IP"
).length, ).length,
propFamilleSocial: { propFamilleSocial: {
classementApresIP: familles.filter( classementApresIP: famillesResistantesOuEx.filter(
(f) => f.Social === "Classement après IP" (f) => f.Social === "Classement après IP"
).length, ).length,
classementApresMijeOuAemo: familles.filter( classementApresMijeOuAemo: famillesResistantesOuEx.filter(
(f) => f.Social === "Classement après MIJE ou AEMO ou" (f) => f.Social === "Classement après MIJE ou AEMO ou"
).length, ).length,
convocationJugePourEnfants: familles.filter( convocationJugePourEnfants: famillesResistantesOuEx.filter(
(f) => f.Social === "Convocation Juge pour Enfants" (f) => f.Social === "Convocation Juge pour Enfants"
).length, ).length,
convoqueeServiceSociaux: familles.filter( convoqueeServiceSociaux: famillesResistantesOuEx.filter(
(f) => f.Social === "Convoquée par les services sociaux" (f) => f.Social === "Convoquée par les services sociaux"
).length, ).length,
enqueteEnCours: familles.filter((f) => f.Social === "Enquête en cours") enqueteEnCours: famillesResistantesOuEx.filter(
.length, (f) => f.Social === "Enquête en cours"
mije: familles.filter((f) => f.Social === "MJIE").length, ).length,
pasDenquete: familles.filter((f) => f.Social === "Pas denquête sociale") mije: famillesResistantesOuEx.filter((f) => f.Social === "MJIE").length,
.length, pasDenquete: famillesResistantesOuEx.filter(
(f) => f.Social === "Pas denquête sociale"
).length,
}, },
}; };
return statsCiviles; return statsCiviles;