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

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-09-23 17:45:34 +02:00
co-authored by Cursor
parent 745349bc83
commit d5a857ae6b
10 changed files with 429 additions and 6 deletions
@@ -8,6 +8,7 @@ import {
Param,
Patch,
Post,
Put,
UseGuards,
} from '@nestjs/common';
import { ParentsService } from './parents.service';
@@ -39,6 +40,8 @@ import { User } from 'src/common/decorators/user.decorator';
import { PendingFamilyDto } from './dto/pending-family.dto';
import { DossierFamilleCompletDto } from './dto/dossier-famille-complet.dto';
import { mapParentForApi, mapParentsForApi } from './parents.mapper';
import { CouplesGardeResponseDto } from './dto/couples-garde.dto';
import { DefinirCoupleGardeCourantDto } from './dto/definir-couple-garde-courant.dto';
@ApiTags('Parents')
@ApiBearerAuth('access-token')
@@ -51,6 +54,39 @@ export class ParentsController {
private readonly authService: AuthService,
) {}
@Get('me/couples-garde')
@Roles(RoleType.PARENT)
@ApiOperation({
summary: 'Lister les couples de garde du parent connecté — ticket #168',
description:
'Retourne les placements actifs enfant↔AM rattachés au parent, ' +
'avec indication du couple courant (bandeau TdB quotidien).',
})
@ApiResponse({ status: 200, type: CouplesGardeResponseDto })
@ApiResponse({ status: 403, description: 'Réservé au rôle parent' })
@ApiResponse({ status: 404, description: 'Parent introuvable' })
listerCouplesGarde(@User('id') userId: string): Promise<CouplesGardeResponseDto> {
return this.parentsService.listerCouplesGarde(userId);
}
@Put('me/couples-garde/courant')
@Roles(RoleType.PARENT)
@ApiOperation({
summary: 'Définir le couple de garde courant — ticket #168',
description:
'Persiste la préférence de couple actif (enfant|nounou) pour contextualiser le TdB.',
})
@ApiBody({ type: DefinirCoupleGardeCourantDto })
@ApiResponse({ status: 200, type: CouplesGardeResponseDto })
@ApiResponse({ status: 400, description: 'Couple hors périmètre du parent' })
@ApiResponse({ status: 404, description: 'Parent ou couple introuvable' })
definirCoupleGardeCourant(
@User('id') userId: string,
@Body() dto: DefinirCoupleGardeCourantDto,
): Promise<CouplesGardeResponseDto> {
return this.parentsService.definirCoupleGardeCourant(userId, dto.couple_id);
}
@Roles(RoleType.SUPER_ADMIN, RoleType.ADMINISTRATEUR, RoleType.GESTIONNAIRE)
@Post('dossier')
@HttpCode(HttpStatus.CREATED)