diff --git a/src/routes/gestionnaires/gestionnaires.controller.ts b/src/routes/gestionnaires/gestionnaires.controller.ts index e244c57..3368db3 100644 --- a/src/routes/gestionnaires/gestionnaires.controller.ts +++ b/src/routes/gestionnaires/gestionnaires.controller.ts @@ -6,36 +6,62 @@ import { Patch, Param, Delete, + UseGuards, } from '@nestjs/common'; import { GestionnairesService } from './gestionnaires.service'; import { RoleType, Users } from 'src/entities/users.entity'; import { Roles } from 'src/common/decorators/roles.decorator'; import { UpdateGestionnaireDto } from '../user/dto/update_gestionnaire.dto'; import { CreateGestionnaireDto } from '../user/dto/create_gestionnaire.dto'; +import { RolesGuard } from 'src/common/guards/roles.guard'; +import { ApiBearerAuth, ApiOperation, ApiParam, ApiResponse, ApiTags } from '@nestjs/swagger'; +import { AuthGuard } from 'src/common/guards/auth.guard'; + +@ApiTags('Gestionnaires') +@ApiBearerAuth('access-token') +@UseGuards(AuthGuard, RolesGuard) @Controller('gestionnaires') export class GestionnairesController { constructor(private readonly gestionnairesService: GestionnairesService) { } @Roles(RoleType.SUPER_ADMIN) + @ApiResponse({ status: 201, description: 'Le gestionnaire a été créé avec succès.', type: Users }) + @ApiResponse({ status: 409, description: 'Conflit. L\'email est déjà utilisé.' }) + @ApiOperation({ summary: 'Création d\'un gestionnaire' }) @Post() create(@Body() dto: CreateGestionnaireDto): Promise { return this.gestionnairesService.create(dto); } @Roles(RoleType.SUPER_ADMIN, RoleType.GESTIONNAIRE) + @ApiOperation({ summary: 'Liste des gestionnaires' }) + @ApiResponse({ status: 200, description: 'Liste des gestionnaires : ', type: [Users] }) @Get() getAll(): Promise { return this.gestionnairesService.findAll(); } @Roles(RoleType.GESTIONNAIRE, RoleType.SUPER_ADMIN) + @ApiOperation({ summary: 'Récupérer un gestionnaire par ID' }) + @ApiResponse({ status: 400, description: 'ID invalide' }) + @ApiResponse({ status: 403, description: 'Accès refusé' }) + @ApiResponse({ status: 401, description: 'Non authentifié' }) + @ApiParam({ name: 'id', description: 'ID du gestionnaire' }) + @ApiResponse({ status: 200, description: 'Gestionnaire trouvé', type: Users }) + @ApiResponse({ status: 404, description: 'Gestionnaire non trouvé' }) @Get(':id') findOne(@Param('id') id: string): Promise { return this.gestionnairesService.findOne(id); } @Roles(RoleType.SUPER_ADMIN) + @ApiOperation({ summary: 'Mettre à jour un gestionnaire' }) + @ApiResponse({ status: 200, description: 'Le gestionnaire a été mis à jour avec succès.', type: Users }) + @ApiResponse({ status: 404, description: 'Gestionnaire non trouvé' }) + @ApiResponse({ status: 403, description: 'Accès refusé' }) + @ApiResponse({ status: 401, description: 'Non authentifié' }) + @ApiParam({ name: 'id', description: 'ID du gestionnaire' }) @Patch(':id') update( @Param('id') id: string, @@ -45,6 +71,12 @@ export class GestionnairesController { } @Roles(RoleType.SUPER_ADMIN) + @ApiOperation({ summary: 'Supprimer un gestionnaire' }) + @ApiResponse({ status: 200, description: 'Le gestionnaire a été supprimé avec succès.' }) + @ApiResponse({ status: 404, description: 'Gestionnaire non trouvé' }) + @ApiResponse({ status: 403, description: 'Accès refusé' }) + @ApiResponse({ status: 401, description: 'Non authentifié' }) + @ApiParam({ name: 'id', description: 'ID du gestionnaire' }) @Delete(':id') remove(@Param('id') id: string): Promise { return this.gestionnairesService.remove(id);