From d117e7b925912c55f7e562bb0e015326587a5aff Mon Sep 17 00:00:00 2001 From: sdraris Date: Tue, 23 Sep 2025 13:02:14 +0200 Subject: [PATCH] few comments added --- src/routes/user/user.service.ts | 32 +++++++++++++++++++++++++++----- 1 file changed, 27 insertions(+), 5 deletions(-) diff --git a/src/routes/user/user.service.ts b/src/routes/user/user.service.ts index 15eb83e..db775fb 100644 --- a/src/routes/user/user.service.ts +++ b/src/routes/user/user.service.ts @@ -1,11 +1,13 @@ import { BadRequestException, ForbiddenException, Injectable, NotFoundException } from "@nestjs/common"; import { InjectRepository } from "@nestjs/typeorm"; import { RoleType, StatutUtilisateurType, Users } from "src/entities/users.entity"; -import { Repository } from "typeorm"; +import { In, Repository } from "typeorm"; import { CreateUserDto } from "./dto/create_user.dto"; import { UpdateUserDto } from "./dto/update_user.dto"; import * as bcrypt from 'bcrypt'; import { StatutValidationType, Validation } from "src/entities/validations.entity"; +import { Parents } from "src/entities/parents.entity"; +import { AssistanteMaternelle } from "src/entities/assistantes_maternelles.entity"; @Injectable() export class UserService { @@ -14,7 +16,13 @@ export class UserService { private readonly usersRepository: Repository, @InjectRepository(Validation) - private readonly validationRepository: Repository + private readonly validationRepository: Repository, + + @InjectRepository(Parents) + private readonly parentsRepository: Repository, + + @InjectRepository(AssistanteMaternelle) + private readonly assistantesRepository: Repository ) { } async createUser(dto: CreateUserDto, currentUser?: Users): Promise { @@ -157,7 +165,7 @@ export class UserService { return this.usersRepository.save(user); } - + // Valider un compte utilisateur async validateUser(user_id: string, currentUser: Users, comment?: string): Promise { if (![RoleType.SUPER_ADMIN, RoleType.ADMINISTRATEUR, RoleType.GESTIONNAIRE].includes(currentUser.role)) { throw new ForbiddenException('Accès réservé aux super admins, administrateurs et gestionnaires'); @@ -165,21 +173,35 @@ export class UserService { const user = await this.usersRepository.findOne({ where: { id: user_id } }); if (!user) throw new NotFoundException('Utilisateur introuvable'); + user.statut = StatutUtilisateurType.ACTIF; const savedUser = await this.usersRepository.save(user); - + if (user.role === RoleType.PARENT) { + const existParent = await this.parentsRepository.findOneBy({ user_id: user.id }); + if (!existParent) { + const parentEntity = this.parentsRepository.create({ user_id: user.id, user }); + await this.parentsRepository.save(parentEntity); + } + } else if (user.role === RoleType.ASSISTANTE_MATERNELLE) { + const existAssistante = await this.assistantesRepository.findOneBy({ user_id: user.id }); + if (!existAssistante) { + const assistanteEntity = this.assistantesRepository.create({ user_id: user.id, user }); + await this.assistantesRepository.save(assistanteEntity); + } + } const validation = this.validationRepository.create({ user: savedUser, type: 'validation_compte', status: StatutValidationType.VALIDE, validated_by: currentUser, comment, - }); await this.validationRepository.save(validation); return savedUser; } + + // Mettre un compte en statut suspendu async suspendUser(user_id: string, currentUser: Users, comment?: string): Promise { if (![RoleType.SUPER_ADMIN, RoleType.ADMINISTRATEUR, RoleType.GESTIONNAIRE].includes(currentUser.role)) { throw new ForbiddenException('Accès réservé aux super admins, administrateurs et gestionnaires');