From a7a20ac8deff4d617d336ea30ea85958cd96cf3c Mon Sep 17 00:00:00 2001 From: sdraris Date: Fri, 29 Aug 2025 15:02:29 +0200 Subject: [PATCH] nounou service added --- .../assistantes_maternelles.service.ts | 68 +++++++++++++++++++ 1 file changed, 68 insertions(+) create mode 100644 src/routes/assistantes_maternelles/assistantes_maternelles.service.ts diff --git a/src/routes/assistantes_maternelles/assistantes_maternelles.service.ts b/src/routes/assistantes_maternelles/assistantes_maternelles.service.ts new file mode 100644 index 0000000..e19fd78 --- /dev/null +++ b/src/routes/assistantes_maternelles/assistantes_maternelles.service.ts @@ -0,0 +1,68 @@ +import { BadRequestException, ConflictException, Injectable, NotFoundException } from '@nestjs/common'; +import { BaseService } from 'src/common/base.service'; +import { InjectRepository } from '@nestjs/typeorm'; +import { DeepPartial, Repository } from 'typeorm'; +import { RoleType, Users } from 'src/entities/users.entity'; +import { UpdateAssistanteDto } from '../user/dto/update_assistante.dto'; +import { AssistanteMaternelle } from 'src/entities/assistantes_maternelles.entity'; +import { CreateAssistanteDto } from '../user/dto/create_assistante.dto'; + +@Injectable() +export class AssistantesMaternellesService extends BaseService { + constructor( + @InjectRepository(AssistanteMaternelle) + private readonly assistantesMaternelleRepository: Repository, + private readonly usersRepository: Repository + ) { + super(assistantesMaternelleRepository); + } + + override async create(data: DeepPartial): Promise { + const dto = data as CreateAssistanteDto; + const user = await this.usersRepository.findOneBy({ id: dto.user_id }); + if (!user) throw new NotFoundException('Utilisateur introuvable'); + if (user.role !== RoleType.ASSISTANTE_MATERNELLE) throw new BadRequestException('Acces reserve aux assistantes maternelles'); + const exist = await this.assistantesMaternelleRepository.findOneBy({ user_id: dto.user_id }); + if (exist) throw new ConflictException('Assistante maternelle deja existante'); + + const entity = this.assistantesMaternelleRepository.create({ + user_id: dto.user_id, + user: { ...user, role: RoleType.ASSISTANTE_MATERNELLE }, + approval_number: dto.numero_agrement, + birthdate: new Date(dto.date_naissance), + birthplace_city: dto.ville_naissance, + birthplace_country: dto.pays_naissance, + nir: dto.nir_chiffre, + max_children: dto.nb_max_enfants, + biography: dto.biographie, + available: dto.disponible ?? true, + city: dto.ville_residence, + + }); + return this.assistantesMaternelleRepository.save(entity); + } + + override async findAll(): Promise { + return this.assistantesMaternelleRepository.find({ + relations: ['user'], + }); + } + + override async findOne(user_id: string): Promise { + const assistante_maternelle = await this.assistantesMaternelleRepository.findOne({ + where: { user_id }, + relations: ['user'], + }); + if (!assistante_maternelle) throw new NotFoundException('Assistante maternelle introuvable'); + return assistante_maternelle; + } + + async update(id: string, dto: UpdateAssistanteDto): Promise { + await this.assistantesMaternelleRepository.update(id, dto); + return this.findOne(id); + } + + async remove(id: string): Promise { + await this.assistantesMaternelleRepository.delete(id); + } +}