forked from Ynov/ptitspas-ynov-back
few comments added
This commit is contained in:
parent
0a4f3d59f8
commit
d117e7b925
@ -1,11 +1,13 @@
|
|||||||
import { BadRequestException, ForbiddenException, Injectable, NotFoundException } from "@nestjs/common";
|
import { BadRequestException, ForbiddenException, Injectable, NotFoundException } from "@nestjs/common";
|
||||||
import { InjectRepository } from "@nestjs/typeorm";
|
import { InjectRepository } from "@nestjs/typeorm";
|
||||||
import { RoleType, StatutUtilisateurType, Users } from "src/entities/users.entity";
|
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 { CreateUserDto } from "./dto/create_user.dto";
|
||||||
import { UpdateUserDto } from "./dto/update_user.dto";
|
import { UpdateUserDto } from "./dto/update_user.dto";
|
||||||
import * as bcrypt from 'bcrypt';
|
import * as bcrypt from 'bcrypt';
|
||||||
import { StatutValidationType, Validation } from "src/entities/validations.entity";
|
import { StatutValidationType, Validation } from "src/entities/validations.entity";
|
||||||
|
import { Parents } from "src/entities/parents.entity";
|
||||||
|
import { AssistanteMaternelle } from "src/entities/assistantes_maternelles.entity";
|
||||||
|
|
||||||
@Injectable()
|
@Injectable()
|
||||||
export class UserService {
|
export class UserService {
|
||||||
@ -14,7 +16,13 @@ export class UserService {
|
|||||||
private readonly usersRepository: Repository<Users>,
|
private readonly usersRepository: Repository<Users>,
|
||||||
|
|
||||||
@InjectRepository(Validation)
|
@InjectRepository(Validation)
|
||||||
private readonly validationRepository: Repository<Validation>
|
private readonly validationRepository: Repository<Validation>,
|
||||||
|
|
||||||
|
@InjectRepository(Parents)
|
||||||
|
private readonly parentsRepository: Repository<Parents>,
|
||||||
|
|
||||||
|
@InjectRepository(AssistanteMaternelle)
|
||||||
|
private readonly assistantesRepository: Repository<AssistanteMaternelle>
|
||||||
) { }
|
) { }
|
||||||
|
|
||||||
async createUser(dto: CreateUserDto, currentUser?: Users): Promise<Users> {
|
async createUser(dto: CreateUserDto, currentUser?: Users): Promise<Users> {
|
||||||
@ -157,7 +165,7 @@ export class UserService {
|
|||||||
return this.usersRepository.save(user);
|
return this.usersRepository.save(user);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Valider un compte utilisateur
|
||||||
async validateUser(user_id: string, currentUser: Users, comment?: string): Promise<Users> {
|
async validateUser(user_id: string, currentUser: Users, comment?: string): Promise<Users> {
|
||||||
if (![RoleType.SUPER_ADMIN, RoleType.ADMINISTRATEUR, RoleType.GESTIONNAIRE].includes(currentUser.role)) {
|
if (![RoleType.SUPER_ADMIN, RoleType.ADMINISTRATEUR, RoleType.GESTIONNAIRE].includes(currentUser.role)) {
|
||||||
throw new ForbiddenException('Accès réservé aux super admins, administrateurs et gestionnaires');
|
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 } });
|
const user = await this.usersRepository.findOne({ where: { id: user_id } });
|
||||||
if (!user) throw new NotFoundException('Utilisateur introuvable');
|
if (!user) throw new NotFoundException('Utilisateur introuvable');
|
||||||
|
|
||||||
user.statut = StatutUtilisateurType.ACTIF;
|
user.statut = StatutUtilisateurType.ACTIF;
|
||||||
const savedUser = await this.usersRepository.save(user);
|
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({
|
const validation = this.validationRepository.create({
|
||||||
user: savedUser,
|
user: savedUser,
|
||||||
type: 'validation_compte',
|
type: 'validation_compte',
|
||||||
status: StatutValidationType.VALIDE,
|
status: StatutValidationType.VALIDE,
|
||||||
validated_by: currentUser,
|
validated_by: currentUser,
|
||||||
comment,
|
comment,
|
||||||
|
|
||||||
});
|
});
|
||||||
await this.validationRepository.save(validation);
|
await this.validationRepository.save(validation);
|
||||||
return savedUser;
|
return savedUser;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// Mettre un compte en statut suspendu
|
||||||
async suspendUser(user_id: string, currentUser: Users, comment?: string): Promise<Users> {
|
async suspendUser(user_id: string, currentUser: Users, comment?: string): Promise<Users> {
|
||||||
if (![RoleType.SUPER_ADMIN, RoleType.ADMINISTRATEUR, RoleType.GESTIONNAIRE].includes(currentUser.role)) {
|
if (![RoleType.SUPER_ADMIN, RoleType.ADMINISTRATEUR, RoleType.GESTIONNAIRE].includes(currentUser.role)) {
|
||||||
throw new ForbiddenException('Accès réservé aux super admins, administrateurs et gestionnaires');
|
throw new ForbiddenException('Accès réservé aux super admins, administrateurs et gestionnaires');
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user