feat(#168): API couples de garde parent (liste + couple courant).

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-09-24 00:51:05 +02:00
co-authored by Cursor
parent 494f0e4c19
commit db08aca714
10 changed files with 429 additions and 6 deletions
@@ -0,0 +1,61 @@
import { ApiProperty, ApiPropertyOptional } from '@nestjs/swagger';
/** Identité minimale enfant pour le bandeau couple — ticket #168 */
export class CoupleGardeEnfantDto {
@ApiProperty({ format: 'uuid' })
id: string;
@ApiPropertyOptional()
prenom?: string | null;
@ApiPropertyOptional()
nom?: string | null;
@ApiPropertyOptional()
photo_url?: string | null;
}
/** Identité minimale AM pour le bandeau couple — ticket #168 */
export class CoupleGardeAmDto {
@ApiProperty({ format: 'uuid', description: 'UUID utilisateur de l’AM' })
id: string;
@ApiPropertyOptional()
prenom?: string | null;
@ApiPropertyOptional()
nom?: string | null;
@ApiPropertyOptional()
photo_url?: string | null;
}
/** Un couple de garde = placement actif enfant ↔ AM */
export class CoupleGardeDto {
@ApiProperty({
format: 'uuid',
description: 'Id du placement (enfants_assistantes_maternelles.id)',
})
id: string;
@ApiProperty({ type: CoupleGardeEnfantDto })
enfant: CoupleGardeEnfantDto;
@ApiProperty({ type: CoupleGardeAmDto })
am: CoupleGardeAmDto;
@ApiProperty({ description: 'True si c’est le couple actuellement sélectionné' })
courant: boolean;
}
export class CouplesGardeResponseDto {
@ApiProperty({ type: [CoupleGardeDto] })
couples: CoupleGardeDto[];
@ApiPropertyOptional({
format: 'uuid',
nullable: true,
description: 'Id du couple courant (null si aucun / premier couple implicite côté client)',
})
couple_courant_id: string | null;
}
@@ -0,0 +1,13 @@
import { ApiProperty } from '@nestjs/swagger';
import { IsNotEmpty, IsUUID } from 'class-validator';
/** Corps PUT couple de garde courant — ticket #168 */
export class DefinirCoupleGardeCourantDto {
@ApiProperty({
format: 'uuid',
description: 'Id du placement (enfants_assistantes_maternelles.id) à sélectionner',
})
@IsUUID()
@IsNotEmpty()
couple_id: string;
}