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