2024-06-05 10:27:27 +02:00
|
|
|
import { Period } from "../period/Period";
|
|
|
|
|
import { isPeriodContaining } from "../period/isPeriodContaining";
|
|
|
|
|
import { TypeEvenement } from "./TypeEvenement";
|
2024-09-07 22:11:20 +02:00
|
|
|
import { typesEvenementsPenal } from "./TypeEvenementsPenal";
|
|
|
|
|
import { TypeEvenementsPenal } from "./TypeEvenementsPenal";
|
|
|
|
|
import { typesEvenementsSocial as typesEvenementsCivil } from "./TypeEvenementsSocial";
|
|
|
|
|
import { TypesEvenementsSocial as TypesEvenementsCivil } from "./TypeEvenementsSocial";
|
2024-06-05 10:27:27 +02:00
|
|
|
|
2024-09-06 13:33:16 +02:00
|
|
|
export type EvenementFamille = Readonly<{
|
2024-06-05 10:27:27 +02:00
|
|
|
notionId: string;
|
|
|
|
|
notionIdFamille: string;
|
|
|
|
|
Évènement: string;
|
|
|
|
|
Date: Date | null;
|
|
|
|
|
Type: TypeEvenement;
|
|
|
|
|
"Enfants concernés": string;
|
2024-09-06 13:33:16 +02:00
|
|
|
}>;
|
2024-06-05 10:27:27 +02:00
|
|
|
|
|
|
|
|
export function isProcedurePenale(evenement: EvenementFamille): boolean {
|
2024-09-07 22:11:20 +02:00
|
|
|
return (
|
|
|
|
|
typesEvenementsPenal.includes(evenement.Type as TypeEvenementsPenal) &&
|
|
|
|
|
evenement.Type !== "Mise en demeure de scolarisation"
|
|
|
|
|
);
|
2024-06-05 10:27:27 +02:00
|
|
|
}
|
|
|
|
|
|
2024-06-05 20:54:27 +02:00
|
|
|
export function isCompositionPenale(evenement: EvenementFamille): boolean {
|
|
|
|
|
return (
|
|
|
|
|
evenement.Type === "Composition pénale acceptée" ||
|
|
|
|
|
evenement.Type === "Composition pénale refusée"
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
|
2024-06-05 22:06:57 +02:00
|
|
|
export function isCRPC(evenement: EvenementFamille): boolean {
|
|
|
|
|
return (
|
2024-09-17 16:08:41 +02:00
|
|
|
evenement.Type === "Refus CRPC" || evenement.Type === "Acceptation CRPC"
|
2024-06-05 22:06:57 +02:00
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
|
2024-06-05 10:27:27 +02:00
|
|
|
export function isProcedureCivile(evenement: EvenementFamille): boolean {
|
2024-09-07 22:11:20 +02:00
|
|
|
return typesEvenementsCivil.includes(evenement.Type as TypesEvenementsCivil);
|
2024-06-05 10:27:27 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export function isEvenementInPeriod(
|
|
|
|
|
evt: EvenementFamille,
|
|
|
|
|
period: Period
|
2024-06-06 21:48:10 +02:00
|
|
|
): boolean {
|
|
|
|
|
return evt.Date !== null && isPeriodContaining(period, evt.Date);
|
2024-06-05 10:27:27 +02:00
|
|
|
}
|
|
|
|
|
|
2024-06-05 21:35:55 +02:00
|
|
|
export function isEvenementBefore(evt: EvenementFamille, date: Date): boolean {
|
2024-06-06 21:48:10 +02:00
|
|
|
if (evt.Date === null) {
|
2024-09-05 09:23:27 +02:00
|
|
|
// Assume lack of date are oldest events
|
2024-06-06 21:48:10 +02:00
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
return evt.Date < date;
|
2024-06-05 10:27:27 +02:00
|
|
|
}
|
2024-06-05 21:35:55 +02:00
|
|
|
|
2024-09-05 09:23:27 +02:00
|
|
|
export function isGendarmerie(e: EvenementFamille): boolean {
|
2024-09-17 16:08:41 +02:00
|
|
|
return e.Type === "Gendarmerie/Forces de l'ordre";
|
2024-09-05 09:23:27 +02:00
|
|
|
}
|
2024-09-16 20:50:30 +02:00
|
|
|
export function isProcureur(e: EvenementFamille): boolean {
|
|
|
|
|
return e.Type === "Audition procureur" || isCRPC(e) || isCompositionPenale(e);
|
2024-09-07 22:11:20 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export function isInformationPreoccupante(e: EvenementFamille): boolean {
|
2024-09-05 09:23:27 +02:00
|
|
|
return (
|
2024-09-07 22:11:20 +02:00
|
|
|
e.Type === "Information préoccupante 1" ||
|
|
|
|
|
e.Type === "Information préoccupante 2" ||
|
2024-09-16 18:25:48 +02:00
|
|
|
e.Type === "Information préoccupante 3" ||
|
|
|
|
|
e.Type === "Information préoccupante 4"
|
2024-09-05 09:23:27 +02:00
|
|
|
);
|
|
|
|
|
}
|