modulo crear y buscar modulos por id institucion

This commit is contained in:
xXpuma99Xx 2022-04-16 11:21:52 -05:00
parent f91d422d67
commit 7452096204
6 changed files with 41 additions and 30 deletions

View File

@ -9,7 +9,7 @@ import { Usuario } from '../usuario/usuario.entity';
@Entity() @Entity()
export class Institucion { export class Institucion {
@PrimaryGeneratedColumn() @PrimaryGeneratedColumn()
id_institucion: string; id_institucion: number;
@Column() @Column()
institucion: string; institucion: string;

View File

@ -8,5 +8,6 @@ import { InstitucionService } from './institucion.service';
imports: [TypeOrmModule.forFeature([Institucion])], imports: [TypeOrmModule.forFeature([Institucion])],
controllers: [InstitucionController], controllers: [InstitucionController],
providers: [InstitucionService], providers: [InstitucionService],
exports: [InstitucionService],
}) })
export class InstitucionModule {} export class InstitucionModule {}

View File

@ -13,11 +13,11 @@ export class InstitucionService {
return this.repository.find(); return this.repository.find();
} }
findById(id_institucion: number) { async findById(id_institucion: number) {
const institucion = this.repository.find({ where: { id_institucion } }); return this.repository.findOne({ id_institucion }).then((institucion) => {
if (!institucion) if (!institucion)
throw new NotFoundException('No existe esta institución.'); throw new NotFoundException('No existe esta institución.');
return institucion; return institucion;
});
} }
} }

View File

@ -1,21 +1,21 @@
import { Body, Controller, Get, Post, Query } from '@nestjs/common'; import { Body, Controller, Get, Post, Query } from '@nestjs/common';
import { ModuloService } from './modulo.service'; 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 { IdInstitucionDto } from '../dto/id-institucion.dto';
import { CrearModuloDto } from './dto/crear-modulo.dto'; import { CrearModuloDto } from './dto/crear-modulo.dto';
@Controller('modulo') @Controller('modulo')
export class ModuloController { export class ModuloController {
constructor(private moduloService: ModuloService) {} constructor(private moduloService: ModuloService) {}
@Get("modulos") @Get('modulos')
get(@Query() query: IdInstitucionDto) { get(@Query() query: IdInstitucionDto) {
return this.moduloService.findAllByIdInstitucion(Number(query.id_institucion)); return this.moduloService.findAllByIdInstitucion(
Number(query.id_institucion),
);
} }
@Post() @Post()
create(@Body() body: CrearModuloDto) { create(@Body() body: CrearModuloDto) {
const modulo = this.moduloService.create({ return this.moduloService.create(body.id_institucion, body.modulo);
modulo: body.modulo,
});
} }
} }

View File

@ -3,9 +3,10 @@ import { TypeOrmModule } from '@nestjs/typeorm';
import { ModuloController } from './modulo.controller'; import { ModuloController } from './modulo.controller';
import { Modulo } from './modulo.entity'; import { Modulo } from './modulo.entity';
import { ModuloService } from './modulo.service'; import { ModuloService } from './modulo.service';
import { InstitucionModule } from '../institucion/institucion.module';
@Module({ @Module({
imports: [TypeOrmModule.forFeature([Modulo])], imports: [TypeOrmModule.forFeature([Modulo]), InstitucionModule],
controllers: [ModuloController], controllers: [ModuloController],
providers: [ModuloService], providers: [ModuloService],
}) })

View File

@ -1,29 +1,38 @@
import { Injectable } from '@nestjs/common'; import { ConflictException, Injectable } from '@nestjs/common';
import { Repository } from 'typeorm';
import { InjectRepository } from '@nestjs/typeorm'; import { InjectRepository } from '@nestjs/typeorm';
import { Repository } from 'typeorm';
import { Modulo } from './modulo.entity'; import { Modulo } from './modulo.entity';
import { InstitucionService } from '../institucion/institucion.service';
@Injectable() @Injectable()
export class ModuloService { export class ModuloService {
constructor( constructor(
@InjectRepository(Modulo) private repository: Repository<Modulo>, @InjectRepository(Modulo) private moduloRepository: Repository<Modulo>,
private institucionService: InstitucionService,
) {} ) {}
findAllByIdInstitucion(id_institucion: number) { async findAllByIdInstitucion(id_institucion: number) {
return this.repository.find({ return this.institucionService
where: { institucion: { id_institucion: 1 } }, .findById(id_institucion)
}); .then((institucion) => this.moduloRepository.find({ institucion }));
} }
create(attrs: Partial<Modulo>) { async create(id_institucion: number, modulo: string) {
return this.repository const institucion = await this.institucionService.findById(id_institucion);
.findOne({ const nuevoModulo = this.moduloRepository.create({
where: { institucion: attrs.institucion, modulo: attrs.modulo }, institucion,
}) modulo,
.then((res) => {
console.log(res);
if (res) throw new Error('Ya existe este usuario.');
return this.repository.save(attrs);
}); });
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) => ({ message: 'Se creo correctamente el módulo.' }));
} }
} }