import { Period } from "../period/Period"; import { isPeriodContaining } from "../period/isPeriodContaining"; import { TypeEvenement } from "./TypeEvenement"; export type EvenementFamille = { notionId: string; notionIdFamille: string; Évènement: string; Date: Date | null; Type: TypeEvenement; "Enfants concernés": string; }; export function isProcedurePenale(evenement: EvenementFamille): boolean { return categorieEvenement[evenement.Type] === "Procédure Pénale"; } export function isCompositionPenale(evenement: EvenementFamille): boolean { return ( evenement.Type === "Composition pénale acceptée" || evenement.Type === "Composition pénale refusée" ); } export function isCRPC(evenement: EvenementFamille): boolean { return ( evenement.Type === "Convocation CRPC" || evenement.Type === "Audience CRPC" || evenement.Type === "Refus CRPC" ); } export function isProcedureCivile(evenement: EvenementFamille): boolean { return categorieEvenement[evenement.Type] === "Procédure Civile"; } const categorieEvenement: { [evt in TypeEvenement]: CategorieEvenement; } = { // Procédure civile/social ["Signalement au procureur"]: "Procédure Civile", ["Classement social sans suite"]: "Procédure Civile", ["Enquête sociale"]: "Procédure Civile", ["Information préoccupante"]: "Procédure Civile", ["Juge pour enfants"]: "Procédure Civile", ["Audition des enfants"]: "Procédure Civile", ["Assistance éducative"]: "Procédure Civile", ["Contrôle forcé"]: "Procédure Civile", // Procédure pénale ["Récidive gendarmerie"]: "Procédure Pénale", ["Appel du jugement"]: "Procédure Pénale", ["Tribunal de police judiciaire"]: "Procédure Pénale", ["Mise en demeure de scolarisation"]: "Procédure Pénale", ["Audition gendarmerie / police"]: "Procédure Pénale", ["Passage police municipale"]: "Procédure Pénale", ["Convocation procureur"]: "Procédure Pénale", ["Audition procureur"]: "Procédure Pénale", ["Composition pénale refusée"]: "Procédure Pénale", ["Composition pénale acceptée"]: "Procédure Pénale", ["Classement pénal sans suite"]: "Procédure Pénale", ["Tribunal correctionnel"]: "Procédure Pénale", ["Convocation CRPC"]: "Procédure Pénale", ["Audience CRPC"]: "Procédure Pénale", ["Refus CRPC"]: "Procédure Pénale", ["Acceptation CRPC"]: "Procédure Pénale", ["Rappel à la loi"]: "Procédure Pénale", ["Validation désobéissance"]: "Procédure Pénale", // Autre ["Plaidoirie"]: "Autre", ["Refus de contrôle"]: "Autre", ["Administrateur AD'HOC"]: "Autre", ["Signalement"]: "Autre", }; export type CategorieEvenement = | "Procédure Pénale" | "Procédure Civile" | "Autre"; export function isEvenementInPeriod( evt: EvenementFamille, period: Period ): boolean { return evt.Date !== null && isPeriodContaining(period, evt.Date); } export function isEvenementBefore(evt: EvenementFamille, date: Date): boolean { if (evt.Date === null) { return true; } return evt.Date < date; } export function isValidEvenementFamille(str: string | null): boolean { return ( str === null || Object.prototype.hasOwnProperty.call(categorieEvenement, str) ); }