feat(#172): API absences-garde (liste, CRUD, droits parent/AM)

Closes #172

Co-authored-by: Julien Martin <julien.martin@ptits-pas.fr>
This commit was merged in pull request #201.
This commit is contained in:
2026-09-24 09:18:52 +00:00
committed by jmartin
parent 41f7006073
commit 147051821a
8 changed files with 925 additions and 0 deletions
@@ -0,0 +1,119 @@
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[];
}