feat: ajoute Requisition Judiciaire et deplace Stage Par dans pénal

wip-related-pages
Sébastien Arod 2024-09-25 21:20:20 +02:00
parent b0272d3733
commit 999fd8f4b5
6 changed files with 46 additions and 35 deletions

View File

@ -4,6 +4,7 @@ export const typesEvenementsPenal = [
"Gendarmerie/Forces de l'ordre",
"Réquisition judiciaire",
"Audition procureur",
"Composition pénale refusée",
@ -15,10 +16,10 @@ export const typesEvenementsPenal = [
"Tribunal correctionnel",
"Administrateur AD'HOC",
"Appel du 1er jugement",
"Stage parentalité",
// placeholder
"Appel du 2eme jugement",
"Réquisition judiciaire",
"Appel du 2eme jugement", // placeholder
"Tribunal de police judiciaire",

View File

@ -7,7 +7,6 @@ export const typesEvenementsSocial = [
"Classement suite IP",
"Classement suite AEMO MIJE ou...",
"Juge pour enfants",
"Stage parentalité",
"Audition des enfants",
"Assistance éducative",
"Signalement",

View File

@ -63,7 +63,6 @@ export const statsPenalesDesc = {
tribunalCorrectionnel1: {
label: "Tribunal Correctionnel 1er passage",
stats: {
nbFamillesConvoquees: {
label: "Nb familles convoquées mais pas encore passées",
},
@ -89,6 +88,13 @@ export const statsPenalesDesc = {
},
},
},
nbFamilleAvecStageParentalité: {
label: "Nb Familles avec un Stage de parentalité",
},
nbFamilleAvecRequisitionJudiciaire: {
label: "Nb Familles avec Réquisition Judiciaire",
},
nbFamillesTribunalDePolice: {
label: "Nb familles avec Tribunal de police",
},

View File

@ -14,11 +14,10 @@ import { filterFamillesWithOneOfEvenements } from "../filterFamillesWithOneOfEve
import { filterFamillesWithOneOfEvenementsOfType } from "../filterFamillesWithOneOfEvenementsOfType";
import { StatsPenales } from "./StatsPenales";
type FamilleAvecInfoTribunaux = Famille & {
evtTribunal1?: EvenementFamille
evtTribunal2?: EvenementFamille
}
evtTribunal1?: EvenementFamille;
evtTribunal2?: EvenementFamille;
};
export function computeStatsPenales(familles: Famille[]): StatsPenales {
const famillesResistantesOuEx = familles.filter(
@ -33,16 +32,15 @@ export function computeStatsPenales(familles: Famille[]): StatsPenales {
isGendarmerie
);
const famillesAvecInfoTribunaux: FamilleAvecInfoTribunaux[] = famillesResistantesOuEx.map(
f => {
const famillesAvecInfoTribunaux: FamilleAvecInfoTribunaux[] =
famillesResistantesOuEx.map((f) => {
const evtTribunaux = f.Evenements.filter(isTribunalCorrectionnel);
return {
...f,
evtTribunal1: evtTribunaux.length > 0 ? evtTribunaux[0] : undefined,
evtTribunal2: evtTribunaux.length > 1 ? evtTribunaux[1] : undefined
evtTribunal2: evtTribunaux.length > 1 ? evtTribunaux[1] : undefined,
};
}
);
});
const statsPenales: StatsPenales = {
nbFamillesMisesEnDemeure: famillesMisesEnDemeure.length,
nbFamillesAvecGendarmerie: famillesAvecGendarmerie.length,
@ -66,8 +64,21 @@ export function computeStatsPenales(familles: Famille[]): StatsPenales {
"Acceptation avertissement pénal probatoire"
).length,
},
tribunalCorrectionnel1: computeTribunalCorrectionnel1(famillesAvecInfoTribunaux),
tribunalCorrectionnel2: computeTribunalCorrectionnel2(famillesAvecInfoTribunaux),
tribunalCorrectionnel1: computeTribunalCorrectionnel1(
famillesAvecInfoTribunaux
),
tribunalCorrectionnel2: computeTribunalCorrectionnel2(
famillesAvecInfoTribunaux
),
nbFamilleAvecRequisitionJudiciaire: filterFamillesWithOneOfEvenementsOfType(
famillesResistantesOuEx,
"Réquisition judiciaire"
).length,
nbFamilleAvecStageParentalité: filterFamillesWithOneOfEvenementsOfType(
famillesResistantesOuEx,
"Stage parentalité"
).length,
nbFamillesTribunalDePolice: filterFamillesWithOneOfEvenementsOfType(
famillesResistantesOuEx,
@ -127,17 +138,17 @@ function computeCompositionPenales(
};
}
function computeTribunalCorrectionnel1(
famillesResistantesOuEx: FamilleAvecInfoTribunaux[]
): StatsPenales["tribunalCorrectionnel1"] {
const now = new Date();
const famillesPassees = famillesResistantesOuEx.filter(f => f.evtTribunal1
&& isEvenementBefore(f.evtTribunal1, now));
const famillesPassees = famillesResistantesOuEx.filter(
(f) => f.evtTribunal1 && isEvenementBefore(f.evtTribunal1, now)
);
const famillesProgrammees = famillesResistantesOuEx.filter(f => f.evtTribunal1
&& !isEvenementBefore(f.evtTribunal1, now));
const famillesProgrammees = famillesResistantesOuEx.filter(
(f) => f.evtTribunal1 && !isEvenementBefore(f.evtTribunal1, now)
);
return {
nbFamillesPassees: famillesPassees.length,
@ -154,11 +165,13 @@ function computeTribunalCorrectionnel2(
famillesResistantesOuEx: FamilleAvecInfoTribunaux[]
): StatsPenales["tribunalCorrectionnel2"] {
const now = new Date();
const famillesPassees = famillesResistantesOuEx.filter(f => f.evtTribunal2
&& isEvenementBefore(f.evtTribunal2, now));
const famillesPassees = famillesResistantesOuEx.filter(
(f) => f.evtTribunal2 && isEvenementBefore(f.evtTribunal2, now)
);
const famillesProgrammees = famillesResistantesOuEx.filter(f => f.evtTribunal2
&& !isEvenementBefore(f.evtTribunal2, now));
const famillesProgrammees = famillesResistantesOuEx.filter(
(f) => f.evtTribunal2 && !isEvenementBefore(f.evtTribunal2, now)
);
return {
nbFamillesPassees: famillesPassees.length,
@ -227,7 +240,6 @@ function computeIntervalProcureurTribunalCorrectionnel(
return average(intervals);
}
function isTribunalCorrectionnel(e: EvenementFamille): boolean {
return e.Type === "Tribunal correctionnel"
return e.Type === "Tribunal correctionnel";
}

View File

@ -17,9 +17,6 @@ export const statsSocialesDesc = {
nbFamilleAvecAssistanceEducative: {
label: "Nb Familles avec une Assistance educative",
},
nbFamilleAvecStageParentalité: {
label: "Nb Familles avec un Stage de parentalité",
},
nbFamilleAvecAuditionDesEnfants: {
label: "Nb Familles avec audition des enfants",
},

View File

@ -28,10 +28,6 @@ export function computeStatsSociales(familles: Famille[]): StatsSociales {
famillesResistantesOuEx,
"Classement suite IP"
).length,
nbFamilleAvecStageParentalité: filterFamillesWithOneOfEvenementsOfType(
famillesResistantesOuEx,
"Stage parentalité"
).length,
nbFamilleAvecAssistanceEducative: filterFamillesWithOneOfEvenementsOfType(
famillesResistantesOuEx,
"Assistance éducative"