From 7452096204b338692098875993a191b11d5209bc Mon Sep 17 00:00:00 2001 From: xXpuma99Xx <51341582+xXpuma99Xx@users.noreply.github.com> Date: Sat, 16 Apr 2022 11:21:52 -0500 Subject: [PATCH] modulo crear y buscar modulos por id institucion --- src/institucion/institucion.entity.ts | 2 +- src/institucion/institucion.module.ts | 1 + src/institucion/institucion.service.ts | 12 ++++---- src/modulo/modulo.controller.ts | 12 ++++---- src/modulo/modulo.module.ts | 3 +- src/modulo/modulo.service.ts | 41 ++++++++++++++++---------- 6 files changed, 41 insertions(+), 30 deletions(-) diff --git a/src/institucion/institucion.entity.ts b/src/institucion/institucion.entity.ts index 2f0428d..1f3c4de 100644 --- a/src/institucion/institucion.entity.ts +++ b/src/institucion/institucion.entity.ts @@ -9,7 +9,7 @@ import { Usuario } from '../usuario/usuario.entity'; @Entity() export class Institucion { @PrimaryGeneratedColumn() - id_institucion: string; + id_institucion: number; @Column() institucion: string; diff --git a/src/institucion/institucion.module.ts b/src/institucion/institucion.module.ts index 99d5f2d..fde85d0 100644 --- a/src/institucion/institucion.module.ts +++ b/src/institucion/institucion.module.ts @@ -8,5 +8,6 @@ import { InstitucionService } from './institucion.service'; imports: [TypeOrmModule.forFeature([Institucion])], controllers: [InstitucionController], providers: [InstitucionService], + exports: [InstitucionService], }) export class InstitucionModule {} diff --git a/src/institucion/institucion.service.ts b/src/institucion/institucion.service.ts index 2f26d57..b8d653a 100644 --- a/src/institucion/institucion.service.ts +++ b/src/institucion/institucion.service.ts @@ -13,11 +13,11 @@ export class InstitucionService { return this.repository.find(); } - findById(id_institucion: number) { - const institucion = this.repository.find({ where: { id_institucion } }); - - if (!institucion) - throw new NotFoundException('No existe esta institución.'); - return institucion; + async findById(id_institucion: number) { + return this.repository.findOne({ id_institucion }).then((institucion) => { + if (!institucion) + throw new NotFoundException('No existe esta institución.'); + return institucion; + }); } } diff --git a/src/modulo/modulo.controller.ts b/src/modulo/modulo.controller.ts index 8ae50c2..7f214c7 100644 --- a/src/modulo/modulo.controller.ts +++ b/src/modulo/modulo.controller.ts @@ -1,21 +1,21 @@ import { Body, Controller, Get, Post, Query } from '@nestjs/common'; import { ModuloService } from './modulo.service'; -import { Serealize } from '../interceptors/serialize.interceptor'; +// import { Serealize } from '../interceptors/serialize.interceptor'; import { IdInstitucionDto } from '../dto/id-institucion.dto'; import { CrearModuloDto } from './dto/crear-modulo.dto'; @Controller('modulo') export class ModuloController { constructor(private moduloService: ModuloService) {} - @Get("modulos") + @Get('modulos') get(@Query() query: IdInstitucionDto) { - return this.moduloService.findAllByIdInstitucion(Number(query.id_institucion)); + return this.moduloService.findAllByIdInstitucion( + Number(query.id_institucion), + ); } @Post() create(@Body() body: CrearModuloDto) { - const modulo = this.moduloService.create({ - modulo: body.modulo, - }); + return this.moduloService.create(body.id_institucion, body.modulo); } } diff --git a/src/modulo/modulo.module.ts b/src/modulo/modulo.module.ts index f1ce57f..ccd0acb 100644 --- a/src/modulo/modulo.module.ts +++ b/src/modulo/modulo.module.ts @@ -3,9 +3,10 @@ import { TypeOrmModule } from '@nestjs/typeorm'; import { ModuloController } from './modulo.controller'; import { Modulo } from './modulo.entity'; import { ModuloService } from './modulo.service'; +import { InstitucionModule } from '../institucion/institucion.module'; @Module({ - imports: [TypeOrmModule.forFeature([Modulo])], + imports: [TypeOrmModule.forFeature([Modulo]), InstitucionModule], controllers: [ModuloController], providers: [ModuloService], }) diff --git a/src/modulo/modulo.service.ts b/src/modulo/modulo.service.ts index e3a04d1..0b28dfd 100644 --- a/src/modulo/modulo.service.ts +++ b/src/modulo/modulo.service.ts @@ -1,29 +1,38 @@ -import { Injectable } from '@nestjs/common'; -import { Repository } from 'typeorm'; +import { ConflictException, Injectable } from '@nestjs/common'; import { InjectRepository } from '@nestjs/typeorm'; +import { Repository } from 'typeorm'; import { Modulo } from './modulo.entity'; +import { InstitucionService } from '../institucion/institucion.service'; @Injectable() export class ModuloService { constructor( - @InjectRepository(Modulo) private repository: Repository, + @InjectRepository(Modulo) private moduloRepository: Repository, + private institucionService: InstitucionService, ) {} - findAllByIdInstitucion(id_institucion: number) { - return this.repository.find({ - where: { institucion: { id_institucion: 1 } }, - }); + async findAllByIdInstitucion(id_institucion: number) { + return this.institucionService + .findById(id_institucion) + .then((institucion) => this.moduloRepository.find({ institucion })); } - create(attrs: Partial) { - return this.repository - .findOne({ - where: { institucion: attrs.institucion, modulo: attrs.modulo }, + async create(id_institucion: number, modulo: string) { + const institucion = await this.institucionService.findById(id_institucion); + const nuevoModulo = this.moduloRepository.create({ + institucion, + modulo, + }); + + return this.moduloRepository + .findOne({ modulo, institucion }) + .then((existeModulo) => { + if (existeModulo) + throw new ConflictException( + 'Ya existe un módulo con este nombre, intente con otro nombre.', + ); + return this.moduloRepository.save(nuevoModulo); }) - .then((res) => { - console.log(res); - if (res) throw new Error('Ya existe este usuario.'); - return this.repository.save(attrs); - }); + .then((res) => ({ message: 'Se creo correctamente el módulo.' })); } }