feat: ajoute stat Tribunal Correctionnel 2
parent
defaac856f
commit
4dba306763
|
@ -16,6 +16,10 @@ export const typesEvenementsPenal = [
|
|||
"Administrateur AD'HOC",
|
||||
"Appel du 1er jugement",
|
||||
|
||||
// placeholder
|
||||
"Appel du 2eme jugement",
|
||||
|
||||
|
||||
"Tribunal de police judiciaire",
|
||||
|
||||
"Classement pénal sans suite",
|
||||
|
|
|
@ -60,24 +60,32 @@ export const statsPenalesDesc = {
|
|||
},
|
||||
},
|
||||
|
||||
tribunalCorrectionnel: {
|
||||
label: "Tribunal Correctionnel",
|
||||
tribunalCorrectionnel1: {
|
||||
label: "Tribunal Correctionnel 1er passage",
|
||||
stats: {
|
||||
|
||||
nbFamillesConvoquees: {
|
||||
label: "Nb familles convoquées mais pas encore passées",
|
||||
},
|
||||
nbFamillesPassees: {
|
||||
label: "Nb familles passées",
|
||||
},
|
||||
nbFamillesProgrammees: {
|
||||
label: "Nb familles programmées",
|
||||
},
|
||||
nbFamillesRecidive: {
|
||||
label: "Nb familles récidive",
|
||||
label: "Nb familles passées au tribunal",
|
||||
},
|
||||
nbFamilleAppelDuJugement: {
|
||||
label: "Nb familles appel du jugement",
|
||||
label: "Nb familles ayant fait appel du jugement",
|
||||
},
|
||||
|
||||
nbFamillesAdministrateurAdhoc: {
|
||||
label: "Nb familles avec Administrateur AD'HOC",
|
||||
},
|
||||
},
|
||||
tribunalCorrectionnel2: {
|
||||
label: "Tribunal Correctionnel 2eme passage",
|
||||
stats: {
|
||||
nbFamillesConvoquees: {
|
||||
label: "Nb familles convoquées mais pas encore passées",
|
||||
},
|
||||
nbFamillesPassees: {
|
||||
label: "Nb familles passées au tribunal",
|
||||
},
|
||||
nbFamilleAppelDuJugement: {
|
||||
label: "Nb familles ayant fait appel du jugement",
|
||||
},
|
||||
},
|
||||
},
|
||||
|
|
|
@ -6,6 +6,7 @@ import {
|
|||
isProcureur,
|
||||
isGendarmerie,
|
||||
isProcedurePenale,
|
||||
EvenementFamille,
|
||||
} from "../../../data/EvenementFamille";
|
||||
import { Famille, isExResistant, isResistant } from "../../../data/Famille";
|
||||
import { average } from "../../../utils/math/average";
|
||||
|
@ -13,6 +14,12 @@ import { filterFamillesWithOneOfEvenements } from "../filterFamillesWithOneOfEve
|
|||
import { filterFamillesWithOneOfEvenementsOfType } from "../filterFamillesWithOneOfEvenementsOfType";
|
||||
import { StatsPenales } from "./StatsPenales";
|
||||
|
||||
|
||||
type FamilleAvecInfoTribunaux = Famille & {
|
||||
evtTribunal1?: EvenementFamille
|
||||
evtTribunal2?: EvenementFamille
|
||||
}
|
||||
|
||||
export function computeStatsPenales(familles: Famille[]): StatsPenales {
|
||||
const famillesResistantesOuEx = familles.filter(
|
||||
(f) => isResistant(f) || isExResistant(f)
|
||||
|
@ -25,6 +32,17 @@ export function computeStatsPenales(familles: Famille[]): StatsPenales {
|
|||
famillesResistantesOuEx,
|
||||
isGendarmerie
|
||||
);
|
||||
|
||||
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
|
||||
};
|
||||
}
|
||||
);
|
||||
const statsPenales: StatsPenales = {
|
||||
nbFamillesMisesEnDemeure: famillesMisesEnDemeure.length,
|
||||
nbFamillesAvecGendarmerie: famillesAvecGendarmerie.length,
|
||||
|
@ -48,7 +66,8 @@ export function computeStatsPenales(familles: Famille[]): StatsPenales {
|
|||
"Acceptation avertissement pénal probatoire"
|
||||
).length,
|
||||
},
|
||||
tribunalCorrectionnel: computeTribunalCorrectionnel(familles),
|
||||
tribunalCorrectionnel1: computeTribunalCorrectionnel1(famillesAvecInfoTribunaux),
|
||||
tribunalCorrectionnel2: computeTribunalCorrectionnel2(famillesAvecInfoTribunaux),
|
||||
|
||||
nbFamillesTribunalDePolice: filterFamillesWithOneOfEvenementsOfType(
|
||||
famillesResistantesOuEx,
|
||||
|
@ -108,33 +127,22 @@ function computeCompositionPenales(
|
|||
};
|
||||
}
|
||||
|
||||
function computeTribunalCorrectionnel(
|
||||
famillesResistantesOuEx: Famille[]
|
||||
): StatsPenales["tribunalCorrectionnel"] {
|
||||
const now = new Date();
|
||||
const famillesPassees = filterFamillesWithOneOfEvenements(
|
||||
famillesResistantesOuEx,
|
||||
(e) => e.Type === "Tribunal correctionnel" && isEvenementBefore(e, now)
|
||||
);
|
||||
const famillesProgrammees = filterFamillesWithOneOfEvenements(
|
||||
famillesResistantesOuEx,
|
||||
(e) => e.Type === "Tribunal correctionnel" && !isEvenementBefore(e, now)
|
||||
);
|
||||
|
||||
const famillesRecidiveTribunal = famillesResistantesOuEx.filter((f) => {
|
||||
return (
|
||||
f.Evenements.filter((e) => e.Type === "Tribunal correctionnel").length > 1
|
||||
);
|
||||
});
|
||||
|
||||
function computeTribunalCorrectionnel1(
|
||||
famillesResistantesOuEx: FamilleAvecInfoTribunaux[]
|
||||
): StatsPenales["tribunalCorrectionnel1"] {
|
||||
const now = new Date();
|
||||
const famillesPassees = famillesResistantesOuEx.filter(f => f.evtTribunal1
|
||||
&& isEvenementBefore(f.evtTribunal1, now));
|
||||
|
||||
const famillesProgrammees = famillesResistantesOuEx.filter(f => f.evtTribunal1
|
||||
&& !isEvenementBefore(f.evtTribunal1, now));
|
||||
|
||||
return {
|
||||
nbFamillesPassees: famillesPassees.length,
|
||||
nbFamillesProgrammees: famillesProgrammees.length,
|
||||
nbFamillesRecidive: famillesRecidiveTribunal.length,
|
||||
nbFamillesAdministrateurAdhoc: filterFamillesWithOneOfEvenementsOfType(
|
||||
famillesResistantesOuEx,
|
||||
"Administrateur AD'HOC"
|
||||
).length,
|
||||
nbFamillesConvoquees: famillesProgrammees.length,
|
||||
|
||||
nbFamilleAppelDuJugement: filterFamillesWithOneOfEvenementsOfType(
|
||||
famillesResistantesOuEx,
|
||||
"Appel du 1er jugement"
|
||||
|
@ -142,6 +150,27 @@ function computeTribunalCorrectionnel(
|
|||
};
|
||||
}
|
||||
|
||||
function computeTribunalCorrectionnel2(
|
||||
famillesResistantesOuEx: FamilleAvecInfoTribunaux[]
|
||||
): StatsPenales["tribunalCorrectionnel2"] {
|
||||
const now = new Date();
|
||||
const famillesPassees = famillesResistantesOuEx.filter(f => f.evtTribunal2
|
||||
&& isEvenementBefore(f.evtTribunal2, now));
|
||||
|
||||
const famillesProgrammees = famillesResistantesOuEx.filter(f => f.evtTribunal2
|
||||
&& !isEvenementBefore(f.evtTribunal2, now));
|
||||
|
||||
return {
|
||||
nbFamillesPassees: famillesPassees.length,
|
||||
nbFamillesConvoquees: famillesProgrammees.length,
|
||||
|
||||
nbFamilleAppelDuJugement: filterFamillesWithOneOfEvenementsOfType(
|
||||
famillesResistantesOuEx,
|
||||
"Appel du 2eme jugement"
|
||||
).length,
|
||||
};
|
||||
}
|
||||
|
||||
function computeIntervalGendarmerieProcureur(familles: Famille[]): number {
|
||||
const intervals = familles.flatMap((f) => {
|
||||
const evtGendarmerie = f.Evenements.find((e) => isGendarmerie(e));
|
||||
|
@ -197,3 +226,8 @@ function computeIntervalProcureurTribunalCorrectionnel(
|
|||
});
|
||||
return average(intervals);
|
||||
}
|
||||
|
||||
|
||||
function isTribunalCorrectionnel(e: EvenementFamille): boolean {
|
||||
return e.Type === "Tribunal correctionnel"
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue