From ac5f7690e96e0e8c200caeb120a1eb3f1025bfa6 Mon Sep 17 00:00:00 2001 From: sdraris Date: Tue, 26 Aug 2025 12:52:25 +0200 Subject: [PATCH] route parents added --- src/routes/parents/dto/create_parents.dto.ts | 2 +- src/routes/parents/dto/update_parents.dto.ts | 4 ++ src/routes/parents/parents.controller.ts | 39 +++++++++++++++++++- src/routes/parents/parents.service.ts | 15 ++++++-- 4 files changed, 54 insertions(+), 6 deletions(-) create mode 100644 src/routes/parents/dto/update_parents.dto.ts diff --git a/src/routes/parents/dto/create_parents.dto.ts b/src/routes/parents/dto/create_parents.dto.ts index b049891..29b1e7e 100644 --- a/src/routes/parents/dto/create_parents.dto.ts +++ b/src/routes/parents/dto/create_parents.dto.ts @@ -2,7 +2,7 @@ import { IsUUID, IsOptional } from 'class-validator'; export class CreateParentDto { @IsUUID() - id_utilisateur: string; + user_id: string; @IsOptional() @IsUUID() diff --git a/src/routes/parents/dto/update_parents.dto.ts b/src/routes/parents/dto/update_parents.dto.ts new file mode 100644 index 0000000..900ffbd --- /dev/null +++ b/src/routes/parents/dto/update_parents.dto.ts @@ -0,0 +1,4 @@ +import { CreateParentDto } from "./create_parents.dto"; +import { PartialType } from '@nestjs/mapped-types'; + +export class UpdateParentsDto extends PartialType(CreateParentDto) {} \ No newline at end of file diff --git a/src/routes/parents/parents.controller.ts b/src/routes/parents/parents.controller.ts index be17890..70377ae 100644 --- a/src/routes/parents/parents.controller.ts +++ b/src/routes/parents/parents.controller.ts @@ -1,9 +1,12 @@ -import { Controller, Get } from '@nestjs/common'; +import { Body, Controller, Delete, Get, Param, Patch, Post } from '@nestjs/common'; import { BaseController } from 'src/common/base.controller'; import { Parents } from 'src/entities/parents.entity'; import { ParentsService } from './parents.service'; import { Roles } from 'src/common/decorators/roles.decorator'; import { RoleType } from 'src/entities/users.entity'; +import { CreateParentDto } from './dto/create_parents.dto'; +import * as typeorm from 'typeorm'; +import { UpdateParentsDto } from './dto/update_parents.dto'; @Controller('parents') export class ParentsController extends BaseController { @@ -11,9 +14,41 @@ export class ParentsController extends BaseController { super(parentsService); } - @Roles(RoleType.SUPER_ADMIN, RoleType.GESTIONNAIRE) + //Lister tous les parents + @Roles(RoleType.SUPER_ADMIN, RoleType.GESTIONNAIRE) //Seul les utilisateurs super admin et gestionnaire peuvent accéder à cette route @Get() override getAll(): Promise { return this.parentsService.findAll(); } + + //Rechercher par user_id + @Roles(RoleType.SUPER_ADMIN, RoleType.GESTIONNAIRE) //Seul les utilisateurs super admin et gestionnaire peuvent accéder à cette route + @Get(':id') + getOne(@Param('id') user_id: string): Promise { + return this.parentsService.findOne(user_id); + } + + //Creation de parents + @Roles(RoleType.SUPER_ADMIN, RoleType.GESTIONNAIRE) //Seul les utilisateurs super admin et gestionnaire peuvent accéder à cette route + @Post() + create(@Body() data: typeorm.DeepPartial): Promise { + return this.parentsService.create(data as CreateParentDto); + } + + //Modifier un parent + @Roles(RoleType.SUPER_ADMIN, RoleType.GESTIONNAIRE) //Seul les utilisateurs super admin et gestionnaire peuvent accéder à cette route + @Patch(':id') + update( + @Param('id') id: string, + @Body() dto: UpdateParentsDto + ): Promise { + return this.parentsService.update(id, dto); + } + + //Supprmer un parent + @Roles(RoleType.SUPER_ADMIN, RoleType.GESTIONNAIRE) //Seul les utilisateurs super admin et gestionnaire peuvent accéder à cette route + @Delete(':id') + remove(@Param('id') id: string): Promise { + return this.parentsService.remove(id); + } } diff --git a/src/routes/parents/parents.service.ts b/src/routes/parents/parents.service.ts index 9e61bea..9f767bd 100644 --- a/src/routes/parents/parents.service.ts +++ b/src/routes/parents/parents.service.ts @@ -18,11 +18,11 @@ export class ParentsService extends BaseService { override async create(data: DeepPartial): Promise { const dto = data as CreateParentDto; - const user = await this.usersRepository.findOneBy({ id: dto.id_utilisateur }); + const user = await this.usersRepository.findOneBy({ id: dto.user_id }); if (!user) throw new NotFoundException('Utilisateur introuvable'); if (user.role !== RoleType.PARENT) throw new BadRequestException('Acces reserve aux parents'); - const exist = await this.parentsRepository.findOneBy({ user_id: dto.id_utilisateur }); + const exist = await this.parentsRepository.findOneBy({ user_id: dto.user_id }); if (exist) throw new ConflictException('Ce parent existe deja'); let co_parent: Users | null = null; @@ -32,7 +32,7 @@ export class ParentsService extends BaseService { if (co_parent.role !== RoleType.PARENT) throw new BadRequestException('Acces reserve aux parents'); } const entity = this.parentsRepository.create({ - user_id: dto.id_utilisateur, + user_id: dto.user_id, user, co_parent: co_parent ?? undefined, }) as DeepPartial; @@ -54,4 +54,13 @@ export class ParentsService extends BaseService { if (!parent) throw new NotFoundException('Parent introuvable'); return parent; } + + async update(id: string, dto: DeepPartial): Promise { + await this.parentsRepository.update(id, dto); + return this.findOne(id); + } + + async remove(id: string): Promise { + await this.parentsRepository.delete(id); + } } \ No newline at end of file