import { Column, CreateDateColumn, Entity, JoinColumn, ManyToOne, PrimaryGeneratedColumn, UpdateDateColumn, } from 'typeorm'; import { AmChildren } from './am_children.entity'; import { Users } from './users.entity'; export enum TypeEvenementAgendaType { ABSENCE_ENFANT = 'absence_enfant', CONGE_AM = 'conge_am', ARRET_MALADIE_AM = 'arret_maladie_am', } export enum StatutEvenementAgendaType { EN_ATTENTE = 'en_attente', ACCEPTE = 'accepte', REFUSE = 'refuse', } /** * Vérité métier agenda par couple AM↔enfant (placement). * Types V1 : absences / congés / arrêts ; extensible (soins, école, mairie…). * Les cartes collectent ; cette table historise. Ticket #205. */ @Entity('evenements_agenda', { schema: 'public' }) export class EvenementsAgenda { @PrimaryGeneratedColumn('uuid') id: string; @Column({ name: 'id_placement', type: 'uuid' }) id_placement: string; @ManyToOne(() => AmChildren, { onDelete: 'CASCADE' }) @JoinColumn({ name: 'id_placement', referencedColumnName: 'id' }) placement: AmChildren; @Column({ type: 'enum', enum: TypeEvenementAgendaType, enumName: 'type_evenement_agenda_type', name: 'type', }) type: TypeEvenementAgendaType; @Column({ name: 'date_debut', type: 'date' }) date_debut: string; @Column({ name: 'date_fin', type: 'date' }) date_fin: string; @Column({ type: 'enum', enum: StatutEvenementAgendaType, enumName: 'statut_evenement_agenda_type', name: 'statut', default: StatutEvenementAgendaType.EN_ATTENTE, }) statut: StatutEvenementAgendaType; /** Purge auto pour en_attente/refuse ; accepte → infinity. */ @Column({ name: 'expire_at', type: 'timestamptz' }) expire_at: Date; @Column({ name: 'cree_par', type: 'uuid', nullable: true }) cree_par?: string; @ManyToOne(() => Users, { nullable: true, onDelete: 'SET NULL' }) @JoinColumn({ name: 'cree_par', referencedColumnName: 'id' }) createdBy?: Users; /** Réf. carte de collecte (FK quand module Cartes existera). */ @Column({ name: 'id_card_instance', type: 'uuid', nullable: true }) id_card_instance?: string; @Column({ name: 'motif', type: 'text', nullable: true }) motif?: string; @CreateDateColumn({ name: 'cree_le', type: 'timestamptz' }) cree_le: Date; @UpdateDateColumn({ name: 'modifie_le', type: 'timestamptz' }) modifie_le: Date; }