From 9723e1b0d73979b58d08a11591a78232a63d28c5 Mon Sep 17 00:00:00 2001 From: xXpuma99Xx <51341582+xXpuma99Xx@users.noreply.github.com> Date: Sun, 25 Sep 2022 11:18:06 -0500 Subject: [PATCH] vista con solo id_modulo --- src/app.module.ts | 2 + src/institucion/institucion.controller.ts | 6 +-- src/institucion/institucion.service.ts | 2 +- src/modulo/dto/output/only-modulo-min.dto.ts | 12 ++++++ .../entity/views/informacion-modulo.view.ts | 12 ------ .../views/min-informacion-modulo.view.ts | 36 ++++++++++++++++++ src/modulo/modulo.controller.ts | 14 ++++--- src/modulo/modulo.module.ts | 7 +++- src/modulo/modulo.service.ts | 38 ++++++++++++++----- 9 files changed, 97 insertions(+), 32 deletions(-) create mode 100644 src/modulo/dto/output/only-modulo-min.dto.ts create mode 100644 src/modulo/entity/views/min-informacion-modulo.view.ts diff --git a/src/app.module.ts b/src/app.module.ts index 2b792a8..2b93981 100644 --- a/src/app.module.ts +++ b/src/app.module.ts @@ -78,6 +78,7 @@ import { InformacionEquipoTipoEntradaView } from './equipo-tipo-entrada/entity/v import { InformacionInstitucionView } from './institucion/entity/views/informacion-institucion.view'; import { MinInformacionInstitucionView } from './institucion/entity/views/min-informacion-institucion.view'; import { InformacionModuloView } from './modulo/entity/views/informacion-modulo.view'; +import { MinInformacionModuloView } from './modulo/entity/views/min-informacion-modulo.view'; import { FullInformacionMultaView } from './multa/entity/views/full-informacion-multa.view'; import { InformacionMultaView } from './multa/entity/views/informacion-multa.view'; import { InformacionOperadorView } from './operador/entity/views/informacion-operador.view'; @@ -150,6 +151,7 @@ import { InformacionUsuarioView } from './usuario/entity/views/informacion-usuar InformacionInstitucionView, MinInformacionInstitucionView, InformacionModuloView, + MinInformacionModuloView, FullInformacionMultaView, InformacionMultaView, InformacionOperadorView, diff --git a/src/institucion/institucion.controller.ts b/src/institucion/institucion.controller.ts index 2a54311..49991cf 100644 --- a/src/institucion/institucion.controller.ts +++ b/src/institucion/institucion.controller.ts @@ -41,7 +41,7 @@ export class InstitucionController { description: 'Endpoint que retorna todas las instituciones activas.', }) activas() { - return this.institucionService.findInfoInstitucionAll(1); + return this.institucionService.findMinInfoInstitucionAll(1); } @Serealize(InstitucionMinOutputDto) @@ -55,7 +55,7 @@ export class InstitucionController { const superAdmin: Operador = req.user.operador; this.validarUsuarioService.validarSuperAdmin(superAdmin); - return this.institucionService.findInfoInstitucionAll(); + return this.institucionService.findMinInfoInstitucionAll(); } @Serealize(InstitucionOutputDto) @@ -99,7 +99,7 @@ export class InstitucionController { const superAdmin: Operador = req.user.operador; this.validarUsuarioService.validarSuperAdmin(superAdmin); - return this.institucionService.findInfoInstitucionAll(0, true); + return this.institucionService.findMinInfoInstitucionAll(0, true); } @Put() diff --git a/src/institucion/institucion.service.ts b/src/institucion/institucion.service.ts index 1cea3b3..2a8d371 100644 --- a/src/institucion/institucion.service.ts +++ b/src/institucion/institucion.service.ts @@ -52,7 +52,7 @@ export class InstitucionService { }); } - findInfoInstitucionAll(activo = 0, responsable = false) { + findMinInfoInstitucionAll(activo = 0, responsable = false) { const busqueda: { activo?: number; responsable?: FindOperator } = {}; if (activo) busqueda.activo = activo; diff --git a/src/modulo/dto/output/only-modulo-min.dto.ts b/src/modulo/dto/output/only-modulo-min.dto.ts new file mode 100644 index 0000000..bb771c6 --- /dev/null +++ b/src/modulo/dto/output/only-modulo-min.dto.ts @@ -0,0 +1,12 @@ +import { Expose } from 'class-transformer'; + +export class OnlyModuloMinOutputDto { + @Expose() + id_modulo; + + @Expose() + activo; + + @Expose() + modulo; +} diff --git a/src/modulo/entity/views/informacion-modulo.view.ts b/src/modulo/entity/views/informacion-modulo.view.ts index f0f02a9..73cb0a4 100644 --- a/src/modulo/entity/views/informacion-modulo.view.ts +++ b/src/modulo/entity/views/informacion-modulo.view.ts @@ -7,10 +7,7 @@ import { Institucion } from '../../../institucion/entity/institucion.entity'; dataSource .createQueryBuilder() .select('m.id_modulo', 'id_modulo') - .addSelect('m.activo', 'activo') - .addSelect('m.modulo', 'modulo') .addSelect('m.id_institucion', 'id_institucion') - .addSelect('i.institucion', 'institucion') .from(Modulo, 'm') .innerJoin(Institucion, 'i', 'i.id_institucion = m.id_institucion'), }) @@ -18,15 +15,6 @@ export class InformacionModuloView { @ViewColumn() id_modulo: number; - @ViewColumn() - activo: number; - @ViewColumn() id_institucion: number; - - @ViewColumn() - institucion: string; - - @ViewColumn() - modulo: string; } diff --git a/src/modulo/entity/views/min-informacion-modulo.view.ts b/src/modulo/entity/views/min-informacion-modulo.view.ts new file mode 100644 index 0000000..afb6466 --- /dev/null +++ b/src/modulo/entity/views/min-informacion-modulo.view.ts @@ -0,0 +1,36 @@ +import { DataSource, ViewEntity, ViewColumn } from 'typeorm'; +import { Modulo } from '../modulo.entity'; +import { Institucion } from '../../../institucion/entity/institucion.entity'; + +@ViewEntity({ + expression: (dataSource: DataSource) => + dataSource + .createQueryBuilder() + .select('m.id_modulo', 'id_modulo') + .addSelect('m.activo', 'activo_modulo') + .addSelect('m.modulo', 'modulo') + .addSelect('m.id_institucion', 'id_institucion') + .addSelect('i.institucion', 'institucion') + .addSelect('i.activo', 'activo_institucion') + .from(Modulo, 'm') + .innerJoin(Institucion, 'i', 'i.id_institucion = m.id_institucion'), +}) +export class MinInformacionModuloView { + @ViewColumn() + id_modulo: number; + + @ViewColumn() + activo_modulo: number; + + @ViewColumn() + activo_institucion: number; + + @ViewColumn() + id_institucion: number; + + @ViewColumn() + institucion: string; + + @ViewColumn() + modulo: string; +} diff --git a/src/modulo/modulo.controller.ts b/src/modulo/modulo.controller.ts index fec9f21..cce99f2 100644 --- a/src/modulo/modulo.controller.ts +++ b/src/modulo/modulo.controller.ts @@ -26,7 +26,7 @@ import { CreateModuloDto } from './dto/input/create.dto'; import { ModuloDto } from './dto/input/modulo.dto'; import { UpdateModuloDto } from './dto/input/update.dto'; import { ModuloOutputDto } from './dto/output/modulo.dto'; -import { ModuloMinOutputDto } from './dto/output/modulo-min.dto'; +import { OnlyModuloMinOutputDto } from './dto/output/only-modulo-min.dto'; @Controller('modulo') @ApiTags('modulo') @@ -68,7 +68,7 @@ export class ModuloController { this.validarUsuarioService.validarAdmin(admin); return this.moduloService - .findInfoModuloById(parseInt(query.id_modulo)) + .findMinInfoModuloById(parseInt(query.id_modulo)) .then((modulo) => { if ( admin.tipoUsuario.id_tipo_usuario === 3 && @@ -81,7 +81,7 @@ export class ModuloController { }); } - @Serealize(ModuloOutputDto) + @Serealize(OnlyModuloMinOutputDto) @Get('modulos') @UseGuards(AuthGuard('jwt')) @ApiOperation({ @@ -97,10 +97,12 @@ export class ModuloController { const operador: Operador = req.user.operador; this.validarUsuarioService.validarOperador(operador); - return this.moduloService.findInfoModuloAll(parseInt(query.id_institucion)); + return this.moduloService.findMinInfoModuloAll( + parseInt(query.id_institucion), + ); } - @Serealize(ModuloMinOutputDto) + @Serealize(OnlyModuloMinOutputDto) @Get('modulos-activos') @ApiOperation({ description: 'Endpoint que retorna todos los módulos de una institución.', @@ -111,7 +113,7 @@ export class ModuloController { type: 'string', }) modulosActivos(@Query() query: IdInstitucionDto) { - return this.moduloService.findInfoModuloAll( + return this.moduloService.findMinInfoModuloAll( parseInt(query.id_institucion), 1, ); diff --git a/src/modulo/modulo.module.ts b/src/modulo/modulo.module.ts index 311bd4e..b41ab49 100644 --- a/src/modulo/modulo.module.ts +++ b/src/modulo/modulo.module.ts @@ -5,6 +5,7 @@ import { ModuloController } from './modulo.controller'; import { ModuloService } from './modulo.service'; import { Modulo } from './entity/modulo.entity'; import { InformacionModuloView } from './entity/views/informacion-modulo.view'; +import { MinInformacionModuloView } from './entity/views/min-informacion-modulo.view'; import { InstitucionModule } from '../institucion/institucion.module'; import { ValidarUsuarioModule } from '../validar-usuario/validar-usuario.module'; @@ -12,7 +13,11 @@ import { ValidarUsuarioModule } from '../validar-usuario/validar-usuario.module' imports: [ InstitucionModule, PassportModule.register({ defaultStrategy: 'jwt' }), - TypeOrmModule.forFeature([Modulo, InformacionModuloView]), + TypeOrmModule.forFeature([ + Modulo, + InformacionModuloView, + MinInformacionModuloView, + ]), ValidarUsuarioModule, ], controllers: [ModuloController], diff --git a/src/modulo/modulo.service.ts b/src/modulo/modulo.service.ts index 16d6d61..1040e80 100644 --- a/src/modulo/modulo.service.ts +++ b/src/modulo/modulo.service.ts @@ -8,6 +8,7 @@ import { Repository } from 'typeorm'; import { Institucion } from '../institucion/entity/institucion.entity'; import { Modulo } from './entity/modulo.entity'; import { InformacionModuloView } from './entity/views/informacion-modulo.view'; +import { MinInformacionModuloView } from './entity/views/min-informacion-modulo.view'; import { Operador } from '../operador/entity/operador.entity'; import { InstitucionService } from '../institucion/institucion.service'; @@ -17,6 +18,8 @@ export class ModuloService { @InjectRepository(Modulo) private repository: Repository, @InjectRepository(InformacionModuloView) private informacionModuloView: Repository, + @InjectRepository(MinInformacionModuloView) + private minInformacionModuloView: Repository, private institucionService: InstitucionService, ) {} @@ -41,7 +44,7 @@ export class ModuloService { ? await this.institucionService.findInfoInstitucionById(id_institucion) : id_institucion; - return this.informacionModuloView + return this.minInformacionModuloView .findOne({ where: { id_institucion: institucion.id_institucion, modulo }, }) @@ -88,26 +91,42 @@ export class ModuloService { throw new NotFoundException('No existe este id módulo.'); return this.repository.create({ id_modulo: infoModulo.id_modulo, - activo: infoModulo.activo === 1, - modulo: infoModulo.modulo, institucion: { id_institucion: infoModulo.id_institucion, - institucion: infoModulo.institucion, }, }); }); } - async findInfoModuloAll(id_institucion: number, activo = 0) { + findMinInfoModuloById(id_modulo: number) { + return this.minInformacionModuloView + .findOne({ where: { id_modulo } }) + .then((infoModulo) => { + if (!infoModulo) + throw new NotFoundException('No existe este id módulo.'); + return this.repository.create({ + id_modulo: infoModulo.id_modulo, + activo: infoModulo.activo_modulo === 1, + modulo: infoModulo.modulo, + institucion: { + id_institucion: infoModulo.id_institucion, + institucion: infoModulo.institucion, + activo: infoModulo.activo_institucion === 1, + }, + }); + }); + } + + async findMinInfoModuloAll(id_institucion: number, activo = 0) { return this.institucionService .findInfoInstitucionById(id_institucion) .then((institucion) => { - const busqueda: { id_institucion: number; activo?: number } = { + const busqueda: { id_institucion: number; activo_modulo?: number } = { id_institucion: institucion.id_institucion, }; - if (activo) busqueda.activo = activo; - return this.informacionModuloView.find({ + if (activo) busqueda.activo_modulo = activo; + return this.minInformacionModuloView.find({ where: busqueda, order: { modulo: 'ASC' }, }); @@ -119,10 +138,11 @@ export class ModuloService { modulos.push( this.repository.create({ id_modulo: infoModulos[i].id_modulo, - activo: infoModulos[i].activo === 1, + activo: infoModulos[i].activo_modulo === 1, modulo: infoModulos[i].modulo, institucion: { id_institucion: infoModulos[i].id_institucion, + activo: infoModulos[i].activo_institucion === 1, institucion: infoModulos[i].institucion, }, }),