import { ApiProperty, ApiPropertyOptional } from '@nestjs/swagger'; import { IsDateString, IsEnum, IsOptional, IsString, IsUUID, MaxLength, MinLength, } from 'class-validator'; import { StatutAbsenceGardeType, TypeAbsenceGardeType, } from 'src/entities/absences_garde.entity'; export class CreerAbsenceGardeDto { @ApiProperty({ description: 'Placement AM↔enfant (couple)' }) @IsUUID() id_placement: string; @ApiProperty({ enum: TypeAbsenceGardeType }) @IsEnum(TypeAbsenceGardeType) type: TypeAbsenceGardeType; @ApiProperty({ example: '2026-10-01' }) @IsDateString() date_debut: string; @ApiProperty({ example: '2026-10-05' }) @IsDateString() date_fin: string; @ApiPropertyOptional() @IsOptional() @IsString() @MaxLength(2000) motif?: string; } export class MajAbsenceGardeDto { @ApiPropertyOptional({ example: '2026-10-02' }) @IsOptional() @IsDateString() date_debut?: string; @ApiPropertyOptional({ example: '2026-10-06' }) @IsOptional() @IsDateString() date_fin?: string; @ApiPropertyOptional({ enum: StatutAbsenceGardeType }) @IsOptional() @IsEnum(StatutAbsenceGardeType) statut?: StatutAbsenceGardeType; @ApiPropertyOptional({ description: 'Motivation de refus (parent) ou motif créateur', }) @IsOptional() @IsString() @MinLength(1) @MaxLength(2000) motif?: string; } export class AbsenceGardeDto { @ApiProperty() id: string; @ApiProperty() id_placement: string; @ApiProperty({ enum: TypeAbsenceGardeType }) type: TypeAbsenceGardeType; @ApiProperty() date_debut: string; @ApiProperty() date_fin: string; @ApiProperty({ enum: StatutAbsenceGardeType }) statut: StatutAbsenceGardeType; @ApiProperty() expire_at: string; @ApiPropertyOptional() cree_par?: string | null; @ApiPropertyOptional() motif?: string | null; @ApiPropertyOptional() id_enfant?: string | null; @ApiPropertyOptional() prenom_enfant?: string | null; @ApiPropertyOptional() id_am?: string | null; @ApiPropertyOptional() prenom_am?: string | null; @ApiPropertyOptional() nom_am?: string | null; @ApiProperty() cree_le: string; @ApiProperty() modifie_le: string; } export class ListeAbsencesGardeDto { @ApiProperty({ type: [AbsenceGardeDto] }) items: AbsenceGardeDto[]; }