import { Column, CreateDateColumn, Entity, JoinColumn, ManyToOne, PrimaryGeneratedColumn, UpdateDateColumn, } from 'typeorm'; import { AmChildren } from './am_children.entity'; import { Users } from './users.entity'; export enum TypeAbsenceGardeType { ABSENCE_ENFANT = 'absence_enfant', CONGE_AM = 'conge_am', ARRET_MALADIE_AM = 'arret_maladie_am', } export enum StatutAbsenceGardeType { EN_ATTENTE = 'en_attente', ACCEPTE = 'accepte', REFUSE = 'refuse', } /** * Vérité métier des absences / congés / arrêts par couple AM↔enfant. * Les cartes (module ultérieur) collectent ; cette table stocke. * Ticket #193. */ @Entity('absences_garde', { schema: 'public' }) export class AbsencesGarde { @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: TypeAbsenceGardeType, enumName: 'type_absence_garde_type', name: 'type', }) type: TypeAbsenceGardeType; @Column({ name: 'date_debut', type: 'date' }) date_debut: string; @Column({ name: 'date_fin', type: 'date' }) date_fin: string; @Column({ type: 'enum', enum: StatutAbsenceGardeType, enumName: 'statut_absence_garde_type', name: 'statut', default: StatutAbsenceGardeType.EN_ATTENTE, }) statut: StatutAbsenceGardeType; /** 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; }