From ff5b85debd8b9f5581f38edf48219ab6f3b8e9ce Mon Sep 17 00:00:00 2001 From: lemuel Date: Tue, 31 May 2022 15:07:57 -0500 Subject: [PATCH] falta update --- .../carrera-programa.service.ts | 2 +- .../entity/institucion-programa.entity.ts | 4 +- .../institucion-programa.controller.ts | 38 +++++++++++++++++-- .../institucion-programa.module.ts | 6 ++- .../institucion-programa.service.ts | 37 ++++++++++++++++-- src/upload-file/upload-file.service.ts | 7 ++-- 6 files changed, 81 insertions(+), 13 deletions(-) diff --git a/src/carrera-programa/carrera-programa.service.ts b/src/carrera-programa/carrera-programa.service.ts index 36f2384..eb71052 100644 --- a/src/carrera-programa/carrera-programa.service.ts +++ b/src/carrera-programa/carrera-programa.service.ts @@ -24,7 +24,7 @@ export class CarreraProgramaService { const carrera = await this.institucionCarreraService.findById( id_institucion_carrera, ); - const programa = await this.institucionProgramaService.findById( + const programa = await this.institucionProgramaService.findProgramaById( id_programa, ); diff --git a/src/institucion-programa/entity/institucion-programa.entity.ts b/src/institucion-programa/entity/institucion-programa.entity.ts index fbb0e3f..fe4c11f 100644 --- a/src/institucion-programa/entity/institucion-programa.entity.ts +++ b/src/institucion-programa/entity/institucion-programa.entity.ts @@ -16,7 +16,9 @@ export class InstitucionPrograma { @Column({ type: Boolean, nullable: false, default: false }) mostrar: boolean; - @ManyToOne(() => Programa, (programa) => programa.instituciones) + @ManyToOne(() => Programa, (programa) => programa.instituciones, { + eager: true, + }) @JoinColumn({ name: 'id_programa' }) programa: Programa; diff --git a/src/institucion-programa/institucion-programa.controller.ts b/src/institucion-programa/institucion-programa.controller.ts index 0391f80..27894ff 100644 --- a/src/institucion-programa/institucion-programa.controller.ts +++ b/src/institucion-programa/institucion-programa.controller.ts @@ -1,6 +1,7 @@ -import { Body, Controller, Get, Post } from '@nestjs/common'; -import { ApiBody, ApiOperation, ApiTags } from '@nestjs/swagger'; +import { Body, Controller, Get, Post, Query } from '@nestjs/common'; +import { ApiBody, ApiOperation, ApiQuery, ApiTags } from '@nestjs/swagger'; import { InstitucionProgramaService } from './institucion-programa.service'; +import { IdInstitucionDto } from 'src/dto/id-institucion.dto'; import { ProgramaCreateDto } from '../institucion-programa/dto/programa-create.dto'; @Controller('institucion-programa') @@ -21,6 +22,37 @@ export class InstitucionProgramaController { @Get() @ApiOperation({ description: 'Endpoint que retorna todos los programas.' }) get() { - return this.institucionProgramaService.findAll(); + return this.institucionProgramaService.findAllProgramas(); + } + + @Get('programas') + @ApiOperation({ + description: 'Endpoint que retorna todos los programas de una institución.', + }) + @ApiQuery({ + description: 'Id de la institución.', + name: 'id_institucion', + type: 'string', + }) + programas(@Query() query: IdInstitucionDto) { + return this.institucionProgramaService.findAllByIdInstitucion( + parseInt(query.id_institucion), + ); + } + + @Get('programas-mostrar') + @ApiOperation({ + description: + 'Endpoint que retorna todos los programas de una institución que tengan el campo mostrar en true.', + }) + @ApiQuery({ + description: 'Id de la institución.', + name: 'id_institucion', + type: 'string', + }) + programasMostrar(@Query() query: IdInstitucionDto) { + return this.institucionProgramaService.findAllByIdInstitucionMostrar( + parseInt(query.id_institucion), + ); } } diff --git a/src/institucion-programa/institucion-programa.module.ts b/src/institucion-programa/institucion-programa.module.ts index 0eb27b5..ee7fd4d 100644 --- a/src/institucion-programa/institucion-programa.module.ts +++ b/src/institucion-programa/institucion-programa.module.ts @@ -4,9 +4,13 @@ import { InstitucionProgramaController } from './institucion-programa.controller import { InstitucionProgramaService } from './institucion-programa.service'; import { InstitucionPrograma } from './entity/institucion-programa.entity'; import { Programa } from './entity/programa.entity'; +import { InstitucionModule } from '../institucion/institucion.module'; @Module({ - imports: [TypeOrmModule.forFeature([InstitucionPrograma, Programa])], + imports: [ + InstitucionModule, + TypeOrmModule.forFeature([InstitucionPrograma, Programa]), + ], controllers: [InstitucionProgramaController], providers: [InstitucionProgramaService], exports: [InstitucionProgramaService], diff --git a/src/institucion-programa/institucion-programa.service.ts b/src/institucion-programa/institucion-programa.service.ts index 784a63f..51ac960 100644 --- a/src/institucion-programa/institucion-programa.service.ts +++ b/src/institucion-programa/institucion-programa.service.ts @@ -7,6 +7,7 @@ import { InjectRepository } from '@nestjs/typeorm'; import { Repository } from 'typeorm'; import { InstitucionPrograma } from './entity/institucion-programa.entity'; import { Programa } from './entity/programa.entity'; +import { InstitucionService } from '../institucion/institucion.service'; @Injectable() export class InstitucionProgramaService { @@ -15,6 +16,7 @@ export class InstitucionProgramaService { private institucionProgramaRepository: Repository, @InjectRepository(Programa) private programaRepository: Repository, + private institucionService: InstitucionService, ) {} create(programa: string) { @@ -27,25 +29,52 @@ export class InstitucionProgramaService { this.programaRepository.create({ programa }), ); }) - .then((_) => ({ message: 'Se creo correctamente el programa.' })); + .then(async (programa) => { + const instituciones = await this.institucionService.findAll(); + + for (let i = 0; i < instituciones.length; i++) + await this.institucionProgramaRepository.save( + this.institucionProgramaRepository.create({ + programa, + institucion: instituciones[i], + }), + ); + return { message: 'Se creó correctamente el programa.' }; + }); } - findAll() { + findAllProgramas() { return this.programaRepository.find(); } - findById(id_programa: number) { + findProgramaById(id_programa: number) { return this.programaRepository.findOne({ id_programa }).then((programa) => { if (!programa) throw new NotFoundException('No existe este programa.'); return programa; }); } - findByPrograma(programa: string, validarNoExiste = true) { + findProgramaByPrograma(programa: string, validarNoExiste = true) { return this.programaRepository.findOne({ programa }).then((programa) => { if (validarNoExiste && !programa) throw new NotFoundException('No existe este programa.'); return programa; }); } + + findAllByIdInstitucion(id_institucion: number) { + return this.institucionService + .findById(id_institucion) + .then((institucion) => + this.institucionProgramaRepository.find({ institucion }), + ); + } + + findAllByIdInstitucionMostrar(id_institucion: number) { + return this.institucionService + .findById(id_institucion) + .then((institucion) => + this.institucionProgramaRepository.find({ institucion, mostrar: true }), + ); + } } diff --git a/src/upload-file/upload-file.service.ts b/src/upload-file/upload-file.service.ts index 3f4b48f..319732f 100644 --- a/src/upload-file/upload-file.service.ts +++ b/src/upload-file/upload-file.service.ts @@ -74,9 +74,10 @@ export class UploadFileService { continue; } - const programa = await this.institucionProgramaService.findByPrograma( - equipos[i].programas, - ); + const programa = + await this.institucionProgramaService.findProgramaByPrograma( + equipos[i].programas, + ); } }); }