diff --git a/src/statistiques/v2/penales/StatsPenales.ts b/src/statistiques/v2/penales/StatsPenales.ts index 1b723b9..0e1e1c2 100644 --- a/src/statistiques/v2/penales/StatsPenales.ts +++ b/src/statistiques/v2/penales/StatsPenales.ts @@ -24,6 +24,25 @@ export const statsTribunalCorrectionnelDesc = { }, } as const; +const statsAmendesDesc = { + amendeMinAvecSursi: { + label: "Amende avec sursi minimale", + unit: "€", + }, + amendeMaxAvecSursi: { + label: "Amende avec sursi maximale", + unit: "€", + }, + amendeMinFerme: { + label: "Amende ferme minimale", + unit: "€", + }, + amendeMaxFerme: { + label: "Amende ferme maximale", + unit: "€", + }, +} as const; + export const statsPenalesDesc = { label: "Stats Pénales", stats: { @@ -149,6 +168,19 @@ export const statsPenalesDesc = { unit: " jours", valueMaxFractioDigits: 0, }, + amendes: { + label: "Amendes", + stats: { + tc: { + label: "Tribunal Correctionnel", + stats: statsAmendesDesc, + }, + tp: { + label: "Tribunal de Police", + stats: statsAmendesDesc, + }, + }, + }, }, } as const; diff --git a/src/statistiques/v2/penales/computeStatsPenales.ts b/src/statistiques/v2/penales/computeStatsPenales.ts index faf4ac4..4eeb703 100644 --- a/src/statistiques/v2/penales/computeStatsPenales.ts +++ b/src/statistiques/v2/penales/computeStatsPenales.ts @@ -67,6 +67,20 @@ export function computeStatsPenales(familles: Famille[]): StatsPenales { const famillesAvecInfoProceduresPenales: FamilleAvecInfoProceduresPenales[] = famillesResistantesOuEx.map(computeFamilleAvecInfosProceduresPenales); + const amendesTC = famillesResistantesOuEx + .flatMap((f) => + f.EvenementsEL.filter((e) => e.Type === "Tribunal correctionnel") + ) + .flatMap((e) => e.Amendes) + .filter((e) => !isNaN(e.Montant)); + + const amendesTP = famillesResistantesOuEx + .flatMap((f) => + f.EvenementsEL.filter((e) => e.Type === "Tribunal de police judiciaire") + ) + .flatMap((e) => e.Amendes) + .filter((e) => !isNaN(e.Montant)); + const statsPenales: StatsPenales = { nbFamillesMisesEnDemeure: nbFamillesAvecPagesLiees(famillesMisesEnDemeure), nbFamillesAvecProcedurePenale: nbFamillesAvecPagesLiees( @@ -154,6 +168,44 @@ export function computeStatsPenales(familles: Famille[]): StatsPenales { computeIntervalProcureurTribunalCorrectionnel( famillesAvecInfoProceduresPenales ), + amendes: { + tc: { + amendeMinAvecSursi: Math.min( + ...amendesTC + .filter((a) => a.Type === "avec sursis") + .map((a) => a.Montant) + ), + amendeMaxAvecSursi: Math.max( + ...amendesTC + .filter((a) => a.Type === "avec sursis") + .map((a) => a.Montant) + ), + amendeMinFerme: Math.min( + ...amendesTC.filter((a) => a.Type === "ferme").map((a) => a.Montant) + ), + amendeMaxFerme: Math.max( + ...amendesTC.filter((a) => a.Type === "ferme").map((a) => a.Montant) + ), + }, + tp: { + amendeMinAvecSursi: Math.min( + ...amendesTP + .filter((a) => a.Type === "avec sursis") + .map((a) => a.Montant) + ), + amendeMaxAvecSursi: Math.max( + ...amendesTP + .filter((a) => a.Type === "avec sursis") + .map((a) => a.Montant) + ), + amendeMinFerme: Math.min( + ...amendesTP.filter((a) => a.Type === "ferme").map((a) => a.Montant) + ), + amendeMaxFerme: Math.max( + ...amendesTP.filter((a) => a.Type === "ferme").map((a) => a.Montant) + ), + }, + }, }; return statsPenales; }