import { Controller, Get, Post, Body, Patch, Param, Delete } from '@nestjs/common'; import { AssistantesMaternellesService } from './assistantes_maternelles.service'; import { ApiBody, ApiResponse, ApiTags } from '@nestjs/swagger'; import { BaseController } from 'src/common/base.controller'; import { AssistanteMaternelle } from 'src/entities/assistantes_maternelles.entity'; import { Roles } from 'src/common/decorators/roles.decorator'; import { RoleType } from 'src/entities/users.entity'; import { CreateAssistanteDto } from '../user/dto/create_assistante.dto'; import { UpdateAssistanteDto } from '../user/dto/update_assistante.dto'; @ApiTags("Assistantes Maternelles") @Controller('assistantes-maternelles') export class AssistantesMaternellesController extends BaseController { constructor(private readonly assistantesMaternellesService: AssistantesMaternellesService) { super(assistantesMaternellesService); } @Roles(RoleType.SUPER_ADMIN, RoleType.GESTIONNAIRE) //Seul les utilisateurs super admin et gestionnaire peuvent accéder à cette route @ApiResponse({ status: 201, description: 'Assistante maternelle créée avec succès' }) @ApiResponse({ status: 403, description: 'Accès refusé : Reservé aux super_admins et gestionnaires' }) @ApiBody({ type: CreateAssistanteDto }) @Post() create(@Body() dto: CreateAssistanteDto): Promise { return this.assistantesMaternellesService.create(dto); } //Lister toutes les nounous @Roles(RoleType.SUPER_ADMIN, RoleType.GESTIONNAIRE) //Seul les utilisateurs super admin et gestionnaire peuvent accéder à cette route @Get() @ApiResponse({ status: 200, description: 'Liste des assistantes maternelles' }) @ApiResponse({ status: 403, description: 'Accès refusé : Reservé aux super_admins et gestionnaires' }) override getAll(): Promise { return this.assistantesMaternellesService.findAll(); } @Roles(RoleType.SUPER_ADMIN, RoleType.GESTIONNAIRE) //Seul les utilisateurs super admin et gestionnaire peuvent accéder à cette route @Get(':id') @ApiResponse({ status: 200, description: 'Détails de l\'assistante maternelle' }) @ApiResponse({ status: 403, description: 'Accès refusé : Reservé aux super_admins et gestionnaires' }) getOne(@Param('id') user_id: string): Promise { return this.assistantesMaternellesService.findOne(user_id); } @Roles(RoleType.SUPER_ADMIN, RoleType.GESTIONNAIRE) //Seul les utilisateurs super admin et gestionnaire peuvent accéder à cette route @ApiBody({ type: UpdateAssistanteDto }) @ApiResponse({ status: 200, description: 'Assistante maternelle mise à jour avec succès' }) @ApiResponse({ status: 403, description: 'Accès refusé : Reservé aux super_admins et gestionnaires' }) @ApiResponse({ status: 404, description: 'Assistante maternelle non trouvée' }) @Patch(':id') update(@Param('id') id: string, @Body() dto: UpdateAssistanteDto): Promise { return this.assistantesMaternellesService.update(id, dto); } @Roles(RoleType.SUPER_ADMIN, RoleType.GESTIONNAIRE) //Seul les utilisateurs super admin et gestionnaire peuvent accéder à cette route @ApiResponse({ status: 200, description: 'Assistante maternelle supprimée avec succès' }) @ApiResponse({ status: 403, description: 'Accès refusé : Reservé aux super_admins et gestionnaires' }) @ApiResponse({ status: 404, description: 'Assistante maternelle non trouvée' }) @Delete(':id') remove(@Param('id') id: string): Promise { return this.assistantesMaternellesService.remove(id); } }