import { Body, Controller, Delete, Get, Param, ParseUUIDPipe, Patch, Post, UseGuards, } from '@nestjs/common'; import { ApiBearerAuth, ApiTags } from '@nestjs/swagger'; import { EnfantsService } from './enfants.service'; import { CreateEnfantsDto } from './dto/create_enfants.dto'; import { UpdateEnfantsDto } from './dto/update_enfants.dto'; import { RoleType, Users } from 'src/entities/users.entity'; import { User } from 'src/common/decorators/user.decorator'; import { AuthGuard } from 'src/common/guards/auth.guard'; import { Roles } from 'src/common/decorators/roles.decorator'; import { RolesGuard } from 'src/common/guards/roles.guard'; @ApiBearerAuth('access-token') @ApiTags('Enfants') @UseGuards(AuthGuard, RolesGuard) @Controller('enfants') export class EnfantsController { constructor(private readonly enfantsService: EnfantsService) { } @Roles(RoleType.PARENT) @Post() create(@Body() dto: CreateEnfantsDto, @User() currentUser: Users) { return this.enfantsService.create(dto, currentUser); } @Roles(RoleType.ADMINISTRATEUR, RoleType.GESTIONNAIRE, RoleType.SUPER_ADMIN) @Get() findAll() { return this.enfantsService.findAll(); } @Roles( RoleType.PARENT, RoleType.ADMINISTRATEUR, RoleType.SUPER_ADMIN, RoleType.GESTIONNAIRE ) @Get(':id') findOne( @Param('id', new ParseUUIDPipe()) id: string, @User() currentUser: Users ) { return this.enfantsService.findOne(id, currentUser); } @Roles(RoleType.ADMINISTRATEUR, RoleType.SUPER_ADMIN, RoleType.PARENT) @Patch(':id') update( @Param('id', new ParseUUIDPipe()) id: string, @Body() dto: UpdateEnfantsDto, @User() currentUser: Users, ) { return this.enfantsService.update(id, dto, currentUser); } @Roles(RoleType.SUPER_ADMIN) @Delete(':id') remove(@Param('id', new ParseUUIDPipe()) id: string) { return this.enfantsService.remove(id); } }