From b3f60c6f8d4931cd2b65353462ec204d8c0a96c6 Mon Sep 17 00:00:00 2001 From: xXpuma99Xx <51341582+xXpuma99Xx@users.noreply.github.com> Date: Sun, 25 Sep 2022 23:27:25 -0500 Subject: [PATCH] sin institucion findById --- sql/18-todo.sql | 4 +- src/app.module.ts | 4 +- src/carrito/carrito.module.ts | 4 +- src/carrito/carrito.service.ts | 54 ++++++++--------- src/carrito/dto/input/carritos.dto.ts | 7 ++- ...ew.ts => full-informacion-carrito.view.ts} | 2 +- .../views/full-informacion-equipo.view.ts | 32 +++------- .../entity/views/informacion-equipo.view.ts | 20 +------ src/equipo/equipo.module.ts | 2 +- src/equipo/equipo.service.ts | 50 ++++++++++++++-- .../institucion-carrera.service.ts | 2 +- .../institucion-infraccion.service.ts | 12 ++-- .../institucion-programa.service.ts | 7 ++- .../institucion-tipo-carrito.service.ts | 7 ++- .../institucion-tipo-entrada.service.ts | 7 ++- .../views/informacion-institucion.view.ts | 3 +- .../views/min-informacion-institucion.view.ts | 3 +- src/institucion/institucion.service.ts | 26 ++++---- .../entity/views/informacion-modulo.view.ts | 3 +- src/modulo/modulo.service.ts | 5 +- src/multa/multa.service.ts | 4 +- src/operador/operador.service.ts | 8 ++- src/prestamo/prestamo.service.ts | 59 ++++++++++--------- src/upload-file/upload-file.service.ts | 12 +++- src/usuario/usuario.service.ts | 4 +- 25 files changed, 190 insertions(+), 151 deletions(-) rename src/carrito/entity/views/{min-informacion-carrito.view.ts => full-informacion-carrito.view.ts} (97%) diff --git a/sql/18-todo.sql b/sql/18-todo.sql index 2ff72e5..7ac0570 100644 --- a/sql/18-todo.sql +++ b/sql/18-todo.sql @@ -181,9 +181,10 @@ INSERT INTO programa(programa) VALUES("Programación"); INSERT INTO programa(programa) VALUES("Adobe"); INSERT INTO programa(programa) VALUES("Autodesk"); +INSERT INTO infraccion(infraccion) VALUES('Sin infracción'); INSERT INTO infraccion(infraccion) VALUES('Pantalla rayada'); INSERT INTO infraccion(infraccion) VALUES('Pantalla estrellada'); -INSERT INTO infraccion(infraccion) VALUES('Pantalla Sucia (comida, grasa)'); +INSERT INTO infraccion(infraccion) VALUES('Pantalla sucia (comida, grasa)'); INSERT INTO infraccion(infraccion) VALUES('Teclas faltantes'); INSERT INTO infraccion(infraccion) VALUES('Teclas dañadas'); INSERT INTO infraccion(infraccion) VALUES('Derrame de líquidos sobre el teclado'); @@ -198,6 +199,7 @@ INSERT INTO infraccion(infraccion) VALUES('Equipo abierto sin autorización (dis INSERT INTO infraccion(infraccion) VALUES('Faltan tornillos'); INSERT INTO infraccion(infraccion) VALUES('Falta hardware'); INSERT INTO infraccion(infraccion) VALUES('Cambio de piezas'); +INSERT INTO infraccion(infraccion) VALUES('Sin carcasa protectora'); INSERT INTO institucion(id_institucion, institucion, clave) VALUES(1, 'FACULTAD DE ARQUITECTURA', '0001'); INSERT INTO institucion(id_institucion, institucion, clave) VALUES(2, 'FACULTAD DE ARTES Y DISEÑO', '0002'); diff --git a/src/app.module.ts b/src/app.module.ts index 9cb6373..9ba05f8 100644 --- a/src/app.module.ts +++ b/src/app.module.ts @@ -72,7 +72,7 @@ import { TipoUsuario } from './tipo-usuario/entity/tipo-usuario.entity'; import { Usuario } from './usuario/entity/usuario.entity'; import { InformacionCarritoView } from './carrito/entity/views/informacion-carrito.view'; -import { MinInformacionCarritoView } from './carrito/entity/views/min-informacion-carrito.view'; +import { FullInformacionCarritoView } from './carrito/entity/views/full-informacion-carrito.view'; import { FullInformacionEquipoView } from './equipo/entity/views/full-informacion-equipo.view'; import { InformacionEquipoView } from './equipo/entity/views/informacion-equipo.view'; import { InformacionEquipoProgramaView } from './equipo-programa/entity/views/informacion-equipo-programa.view'; @@ -147,7 +147,7 @@ import { InformacionUsuarioView } from './usuario/entity/views/informacion-usuar TipoUsuario, Usuario, InformacionCarritoView, - MinInformacionCarritoView, + FullInformacionCarritoView, FullInformacionEquipoView, InformacionEquipoView, InformacionEquipoProgramaView, diff --git a/src/carrito/carrito.module.ts b/src/carrito/carrito.module.ts index 32ebfd8..07a2425 100644 --- a/src/carrito/carrito.module.ts +++ b/src/carrito/carrito.module.ts @@ -5,7 +5,7 @@ import { CarritoController } from './carrito.controller'; import { CarritoService } from './carrito.service'; import { Carrito } from './entity/carrito.entity'; import { InformacionCarritoView } from './entity/views/informacion-carrito.view'; -import { MinInformacionCarritoView } from './entity/views/min-informacion-carrito.view'; +import { FullInformacionCarritoView } from './entity/views/full-informacion-carrito.view'; import { CarritoMotivoModule } from '../carrito-motivo/carrito-motivo.module'; import { InstitucionModule } from '../institucion/institucion.module'; import { InstitucionTipoCarritoModule } from '../institucion-tipo-carrito/institucion-tipo-carrito.module'; @@ -26,7 +26,7 @@ import { ValidarUsuarioModule } from '../validar-usuario/validar-usuario.module' TypeOrmModule.forFeature([ Carrito, InformacionCarritoView, - MinInformacionCarritoView, + FullInformacionCarritoView, ]), ValidarUsuarioModule, ], diff --git a/src/carrito/carrito.service.ts b/src/carrito/carrito.service.ts index 79825f1..073ee14 100644 --- a/src/carrito/carrito.service.ts +++ b/src/carrito/carrito.service.ts @@ -7,10 +7,10 @@ import { NotFoundException, } from '@nestjs/common'; import { InjectRepository } from '@nestjs/typeorm'; -import { FindOperator, Like, Repository } from 'typeorm'; +import { FindManyOptions, FindOptionsWhere, Like, Repository } from 'typeorm'; import { Carrito } from './entity/carrito.entity'; import { InformacionCarritoView } from './entity/views/informacion-carrito.view'; -import { MinInformacionCarritoView } from './entity/views/min-informacion-carrito.view'; +import { FullInformacionCarritoView } from './entity/views/full-informacion-carrito.view'; import { Modulo } from '../modulo/entity/modulo.entity'; import { Operador } from '../operador/entity/operador.entity'; import { TipoCarrito } from '../institucion-tipo-carrito/entity/tipo-carrito.entity'; @@ -27,8 +27,8 @@ export class CarritoService { @InjectRepository(Carrito) private repository: Repository, @InjectRepository(InformacionCarritoView) private informacionCarritoView: Repository, - @InjectRepository(MinInformacionCarritoView) - private minInformacionCarritoView: Repository, + @InjectRepository(FullInformacionCarritoView) + private fullInformacionCarritoView: Repository, @Inject(forwardRef(() => CarritoMotivoService)) private caritoMotivoService: CarritoMotivoService, private institucionService: InstitucionService, @@ -80,6 +80,8 @@ export class CarritoService { })); } + private createCarritoFromView() {} + findById(id_carrito: number) { return this.repository .findOne({ where: { id_carrito } }) @@ -137,7 +139,7 @@ export class CarritoService { } findFullInfoCarritoById(id_carrito: number) { - return this.minInformacionCarritoView + return this.fullInformacionCarritoView .findOne({ where: { id_carrito } }) .then((infoCarrito) => { if (!infoCarrito) @@ -171,7 +173,7 @@ export class CarritoService { } async findMinInfoCarritoAll(filtros: { - pagina: string; + pagina?: string; activo?: string; carrito?: string; id_institucion?: string; @@ -199,15 +201,15 @@ export class CarritoService { parseInt(filtros.id_tipo_carrito), ) : null; - const busqueda: { - activo?: number; - carrito?: FindOperator; - id_institucion?: number; - id_marca?: number; - id_modelo?: number; - id_modulo?: number; - id_tipo_carrito?: number; - } = {}; + const options: FindManyOptions = { + order: { + institucion: 'ASC', + modulo: 'ASC', + tipo_carrito: 'ASC', + carrito: 'ASC', + }, + }; + const busqueda: FindOptionsWhere = {}; if (filtros.activo === 'true') busqueda.activo = 1; if (filtros.activo === 'false') busqueda.activo = 0; @@ -217,18 +219,13 @@ export class CarritoService { if (marca) busqueda.id_marca = marca.id_marca; if (modelo) busqueda.id_modelo = modelo.id_modelo; if (tipoCarrito) busqueda.id_tipo_carrito = tipoCarrito.id_tipo_carrito; - return this.minInformacionCarritoView - .findAndCount({ - where: busqueda, - order: { - institucion: 'ASC', - modulo: 'ASC', - tipo_carrito: 'ASC', - carrito: 'ASC', - }, - take: 25, - skip: (parseInt(filtros.pagina) - 1) * 25, - }) + if (filtros.pagina) { + options.take = 25; + options.skip = (parseInt(filtros.pagina) - 1) * 25; + } + options.where = busqueda; + return this.fullInformacionCarritoView + .findAndCount(options) .then((infoCarritos) => { const carritos: Carrito[] = []; @@ -252,7 +249,8 @@ export class CarritoService { }, }), ); - return [carritos, infoCarritos[1]]; + if (filtros.pagina) return [carritos, infoCarritos[1]]; + return carritos; }); } diff --git a/src/carrito/dto/input/carritos.dto.ts b/src/carrito/dto/input/carritos.dto.ts index 917a3fa..3f74820 100644 --- a/src/carrito/dto/input/carritos.dto.ts +++ b/src/carrito/dto/input/carritos.dto.ts @@ -7,9 +7,6 @@ import { } from 'class-validator'; export class CarritosDto { - @IsNumberString() - pagina: string; - @IsBooleanString() @IsOptional() activo?: string; @@ -38,4 +35,8 @@ export class CarritosDto { @IsNumberString() @IsOptional() id_tipo_carrito?: string; + + @IsNumberString() + @IsOptional() + pagina?: string; } diff --git a/src/carrito/entity/views/min-informacion-carrito.view.ts b/src/carrito/entity/views/full-informacion-carrito.view.ts similarity index 97% rename from src/carrito/entity/views/min-informacion-carrito.view.ts rename to src/carrito/entity/views/full-informacion-carrito.view.ts index 74bb300..42d1cf6 100644 --- a/src/carrito/entity/views/min-informacion-carrito.view.ts +++ b/src/carrito/entity/views/full-informacion-carrito.view.ts @@ -30,7 +30,7 @@ import { TipoCarrito } from '../../../institucion-tipo-carrito/entity/tipo-carri .innerJoin(TipoCarrito, 'tc', 'tc.id_tipo_carrito = c.id_tipo_carrito') .innerJoin(Institucion, 'i', 'i.id_institucion = m.id_institucion'), }) -export class MinInformacionCarritoView { +export class FullInformacionCarritoView { @ViewColumn() id_carrito: number; diff --git a/src/equipo/entity/views/full-informacion-equipo.view.ts b/src/equipo/entity/views/full-informacion-equipo.view.ts index e54c4a5..0672364 100644 --- a/src/equipo/entity/views/full-informacion-equipo.view.ts +++ b/src/equipo/entity/views/full-informacion-equipo.view.ts @@ -3,12 +3,8 @@ import { Carrito } from '../../../carrito/entity/carrito.entity'; import { Equipo } from '../equipo.entity'; import { Institucion } from '../../../institucion/entity/institucion.entity'; import { Modulo } from '../../../modulo/entity/modulo.entity'; -import { EquipoPrograma } from '../../../equipo-programa/entity/equipo-programa.entity'; -import { EquipoTipoEntrada } from '../../../equipo-tipo-entrada/entity/equipo-tipo-entrada.entity'; -import { Programa } from '../../../institucion-programa/entity/programa.entity'; import { Status } from '../../../status/entity/status.entity'; import { TipoCarrito } from '../../../institucion-tipo-carrito/entity/tipo-carrito.entity'; -import { TipoEntrada } from '../../../institucion-tipo-entrada/entity/tipo-entrada.entity'; @ViewEntity({ expression: (dataSource: DataSource) => @@ -17,6 +13,8 @@ import { TipoEntrada } from '../../../institucion-tipo-entrada/entity/tipo-entra .select('e.id_equipo', 'id_equipo') .addSelect('e.equipo', 'equipo') .addSelect('e.id_carrito', 'id_carrito') + .addSelect('e.id_marca', 'id_marca') + .addSelect('e.id_modelo', 'id_modelo') .addSelect('e.id_status', 'id_status') .addSelect('e.numero_inventario', 'numero_inventario') .addSelect('e.numero_serie', 'numero_serie') @@ -26,25 +24,17 @@ import { TipoEntrada } from '../../../institucion-tipo-entrada/entity/tipo-entra .addSelect('c.id_modulo', 'id_modulo') .addSelect('c.id_tipo_carrito', 'id_tipo_carrito') .addSelect('s.status', 'status') - .addSelect('ps.id_programa', 'id_programa') - .addSelect('tes.id_tipo_entrada', 'id_tipo_entrada') .addSelect('m.activo', 'activo_modulo') .addSelect('m.id_institucion', 'id_institucion') .addSelect('m.modulo', 'modulo') .addSelect('tc.tipo_carrito', 'tipo_carrito') - .addSelect('p.programa', 'programa') - .addSelect('te.tipo_entrada', 'tipo_entrada') .addSelect('i.activo', 'activo_institucion') .addSelect('i.institucion', 'institucion') .from(Equipo, 'e') .innerJoin(Carrito, 'c', 'c.id_carrito = e.id_carrito') .innerJoin(Status, 's', 's.id_status = e.id_status') - .innerJoin(EquipoPrograma, 'ps', 'ps.id_equipo = e.id_equipo') - .innerJoin(EquipoTipoEntrada, 'tes', 'tes.id_equipo = e.id_equipo') .innerJoin(Modulo, 'm', 'm.id_modulo = c.id_modulo') .innerJoin(TipoCarrito, 'tc', 'tc.id_tipo_carrito = c.id_tipo_carrito') - .innerJoin(Programa, 'p', 'p.id_programa = ps.id_programa') - .innerJoin(TipoEntrada, 'te', 'te.id_tipo_entrada = tes.id_tipo_entrada') .innerJoin(Institucion, 'i', 'i.id_institucion = m.id_institucion'), }) export class FullInformacionEquipoView { @@ -72,18 +62,18 @@ export class FullInformacionEquipoView { @ViewColumn() id_institucion: number; + @ViewColumn() + id_marca: number; + + @ViewColumn() + id_modelo: number; + @ViewColumn() id_modulo: number; - @ViewColumn() - id_programa: number; - @ViewColumn() id_tipo_carrito: number; - @ViewColumn() - id_tipo_entrada: number; - @ViewColumn() id_status: number; @@ -102,15 +92,9 @@ export class FullInformacionEquipoView { @ViewColumn() prestado: boolean; - @ViewColumn() - programa: string; - @ViewColumn() status: string; @ViewColumn() tipo_carrito: string; - - @ViewColumn() - tipo_entrada: string; } diff --git a/src/equipo/entity/views/informacion-equipo.view.ts b/src/equipo/entity/views/informacion-equipo.view.ts index dcded71..310fd46 100644 --- a/src/equipo/entity/views/informacion-equipo.view.ts +++ b/src/equipo/entity/views/informacion-equipo.view.ts @@ -1,7 +1,6 @@ import { DataSource, ViewEntity, ViewColumn } from 'typeorm'; import { Carrito } from '../../../carrito/entity/carrito.entity'; import { Equipo } from '../equipo.entity'; -import { Institucion } from '../../../institucion/entity/institucion.entity'; import { Modulo } from '../../../modulo/entity/modulo.entity'; @ViewEntity({ @@ -14,31 +13,18 @@ import { Modulo } from '../../../modulo/entity/modulo.entity'; .addSelect('e.id_status', 'id_status') .addSelect('e.numero_inventario', 'numero_inventario') .addSelect('e.prestado', 'prestado') - .addSelect('c.activo', 'activo_carrito') .addSelect('c.carrito', 'carrito') .addSelect('c.id_modulo', 'id_modulo') .addSelect('c.id_tipo_carrito', 'id_tipo_carrito') - .addSelect('m.activo', 'activo_modulo') .addSelect('m.id_institucion', 'id_institucion') - .addSelect('i.activo', 'activo_institucion') .from(Equipo, 'e') .innerJoin(Carrito, 'c', 'c.id_carrito = e.id_carrito') - .innerJoin(Modulo, 'm', 'm.id_modulo = c.id_modulo') - .innerJoin(Institucion, 'i', 'i.id_institucion = m.id_institucion'), + .innerJoin(Modulo, 'm', 'm.id_modulo = c.id_modulo'), }) export class InformacionEquipoView { @ViewColumn() id_equipo: number; - @ViewColumn() - activo_carrito: boolean; - - @ViewColumn() - activo_institucion: boolean; - - @ViewColumn() - activo_modulo: boolean; - @ViewColumn() carrito: string; @@ -55,10 +41,10 @@ export class InformacionEquipoView { id_modulo: number; @ViewColumn() - id_tipo_carrito: number; + id_status: number; @ViewColumn() - id_status: number; + id_tipo_carrito: number; @ViewColumn() numero_inventario: string; diff --git a/src/equipo/equipo.module.ts b/src/equipo/equipo.module.ts index 826b5a9..e0a65a6 100644 --- a/src/equipo/equipo.module.ts +++ b/src/equipo/equipo.module.ts @@ -4,8 +4,8 @@ import { TypeOrmModule } from '@nestjs/typeorm'; import { EquipoController } from './equipo.controller'; import { EquipoService } from './equipo.service'; import { Equipo } from './entity/equipo.entity'; -import { InformacionEquipoView } from './entity/views/informacion-equipo.view'; import { FullInformacionEquipoView } from './entity/views/full-informacion-equipo.view'; +import { InformacionEquipoView } from './entity/views/informacion-equipo.view'; import { CarritoModule } from '../carrito/carrito.module'; import { EquipoProgramaModule } from '../equipo-programa/equipo-programa.module'; import { InstitucionModule } from '../institucion/institucion.module'; diff --git a/src/equipo/equipo.service.ts b/src/equipo/equipo.service.ts index fd5553f..fbf931a 100644 --- a/src/equipo/equipo.service.ts +++ b/src/equipo/equipo.service.ts @@ -19,6 +19,7 @@ import { Programa } from '../institucion-programa/entity/programa.entity'; import { TipoCarrito } from '../institucion-tipo-carrito/entity/tipo-carrito.entity'; import { TipoEntrada } from '../institucion-tipo-entrada/entity/tipo-entrada.entity'; import { InformacionEquipoView } from './entity/views/informacion-equipo.view'; +import { FullInformacionEquipoView } from './entity/views/full-informacion-equipo.view'; import { CarritoService } from '../carrito/carrito.service'; import { EquipoProgramaService } from '../equipo-programa/equipo-programa.service'; import { InstitucionService } from '../institucion/institucion.service'; @@ -38,6 +39,8 @@ export class EquipoService { @InjectRepository(Equipo) private repository: Repository, @InjectRepository(InformacionEquipoView) private informacionEquipoView: Repository, + @InjectRepository(FullInformacionEquipoView) + private fullInformacionEquipoView: Repository, private carritoService: CarritoService, @Inject(forwardRef(() => EquipoProgramaService)) private equipoProgramaService: EquipoProgramaService, @@ -62,7 +65,6 @@ export class EquipoService { marca: Marca, modelo: Modelo, ) { - const activo = await this.statusService.findById(1); const equipoNuevo = await this.repository.save( this.repository.create({ carrito, @@ -71,7 +73,7 @@ export class EquipoService { modelo, numero_inventario, numero_serie, - status: activo, + status: { id_status: 1 }, }), ); @@ -101,7 +103,9 @@ export class EquipoService { ? await this.carritoService.findById(parseInt(filtros.id_carrito)) : null; const institucion = filtros.id_institucion - ? await this.institucionService.findById(parseInt(filtros.id_institucion)) + ? await this.institucionService.findInfoInstitucionById( + parseInt(filtros.id_institucion), + ) : null; const marca = filtros.id_marca ? await this.marcaService.findById(parseInt(filtros.id_marca), 'e') @@ -229,7 +233,7 @@ export class EquipoService { ) { const institucion = typeof id_institucion === 'number' - ? await this.institucionService.findById(id_institucion) + ? await this.institucionService.findInfoInstitucionById(id_institucion) : id_institucion; return this.repository @@ -352,15 +356,49 @@ export class EquipoService { }); } + findInfoEquipoById(id_equipo: number) { + return this.informacionEquipoView + .findOne({ where: { id_equipo } }) + .then((infoEquipo) => { + if (!infoEquipo) + throw new NotFoundException('No existe este id equipo.'); + return this.repository.create({ + id_equipo: infoEquipo.id_equipo, + equipo: infoEquipo.equipo, + numero_inventario: infoEquipo.numero_inventario, + prestado: infoEquipo.prestado, + carrito: { + id_carrito: infoEquipo.id_carrito, + carrito: infoEquipo.carrito, + modulo: { + id_modulo: infoEquipo.id_modulo, + institucion: { + id_institucion: infoEquipo.id_institucion, + }, + }, + tipoCarrito: { + id_tipo_carrito: infoEquipo.id_tipo_carrito, + }, + }, + status: { + id_status: infoEquipo.id_status, + }, + }); + }); + } + informacionEquipoByEquipo(id_carrito: number, equipo: string) { return this.informacionEquipoView.findOne({ where: { equipo, id_carrito }, }); } - informacionEquipoNumeroInventario(id_institucion: number, equipo: string) { + informacionEquipoNumeroInventario( + id_institucion: number, + numero_inventario: string, + ) { return this.informacionEquipoView.findOne({ - where: { equipo, id_institucion }, + where: { numero_inventario, id_institucion }, }); } diff --git a/src/institucion-carrera/institucion-carrera.service.ts b/src/institucion-carrera/institucion-carrera.service.ts index 007ecf1..739b29f 100644 --- a/src/institucion-carrera/institucion-carrera.service.ts +++ b/src/institucion-carrera/institucion-carrera.service.ts @@ -49,7 +49,7 @@ export class InstitucionCarreraService { : id_carrera; const institucion = typeof id_institucion === 'number' - ? await this.institucionService.findById(id_institucion) + ? await this.institucionService.findInfoInstitucionById(id_institucion) : id_institucion; return this.institucionCarreraRepository.findOne({ diff --git a/src/institucion-infraccion/institucion-infraccion.service.ts b/src/institucion-infraccion/institucion-infraccion.service.ts index 42648a3..deb0a6b 100644 --- a/src/institucion-infraccion/institucion-infraccion.service.ts +++ b/src/institucion-infraccion/institucion-infraccion.service.ts @@ -31,7 +31,8 @@ export class InstitucionInfraccionService { ); }) .then(async (infraccion) => { - const instituciones = await this.institucionService.findAll(); + const instituciones = + await this.institucionService.findInfoInstitucionAll(); for (let i = 0; i < instituciones.length; i++) await this.institucionInfraccionRepository.save( @@ -59,9 +60,12 @@ export class InstitucionInfraccionService { .createQueryBuilder('ii') .innerJoinAndSelect('ii.infraccion', 'inf') .innerJoinAndSelect('ii.institucion', 'i') - .where('i.id_institucion = :id_institucion && inf.id_infraccion != 1', { - id_institucion: institucion.id_institucion, - }) + .where( + 'i.id_institucion = :id_institucion && inf.id_infraccion != 1', + { + id_institucion: institucion.id_institucion, + }, + ) .orderBy('inf.infraccion') .getMany(), ); diff --git a/src/institucion-programa/institucion-programa.service.ts b/src/institucion-programa/institucion-programa.service.ts index 04d387c..06cb5ce 100644 --- a/src/institucion-programa/institucion-programa.service.ts +++ b/src/institucion-programa/institucion-programa.service.ts @@ -31,7 +31,8 @@ export class InstitucionProgramaService { ); }) .then(async (programa) => { - const instituciones = await this.institucionService.findAll(); + const instituciones = + await this.institucionService.findInfoInstitucionAll(); for (let i = 0; i < instituciones.length; i++) await this.institucionProgramaRepository.save( @@ -45,7 +46,9 @@ export class InstitucionProgramaService { } async findAllByIdInstitucion(id_institucion: number, mostrar = false) { - const institucion = await this.institucionService.findById(id_institucion); + const institucion = await this.institucionService.findInfoInstitucionById( + id_institucion, + ); const query = this.institucionProgramaRepository .createQueryBuilder('ip') .innerJoinAndSelect('ip.programa', 'p', 'p.id_programa != 1') diff --git a/src/institucion-tipo-carrito/institucion-tipo-carrito.service.ts b/src/institucion-tipo-carrito/institucion-tipo-carrito.service.ts index 3110cb7..2fe60b8 100644 --- a/src/institucion-tipo-carrito/institucion-tipo-carrito.service.ts +++ b/src/institucion-tipo-carrito/institucion-tipo-carrito.service.ts @@ -39,7 +39,8 @@ export class InstitucionTipoCarritoService { ); }) .then(async (tipoCarrito) => { - const instituciones = await this.institucionService.findAll(); + const instituciones = + await this.institucionService.findInfoInstitucionAll(); for (let i = 0; i < instituciones.length; i++) await this.institucionTipoCarritoRepository.save( @@ -57,7 +58,9 @@ export class InstitucionTipoCarritoService { } async findAllByIdInstitucion(id_institucion: number, mostrar = false) { - const institucion = await this.institucionService.findById(id_institucion); + const institucion = await this.institucionService.findInfoInstitucionById( + id_institucion, + ); const query = this.institucionTipoCarritoRepository .createQueryBuilder('itc') .innerJoinAndSelect( diff --git a/src/institucion-tipo-entrada/institucion-tipo-entrada.service.ts b/src/institucion-tipo-entrada/institucion-tipo-entrada.service.ts index 60f97e8..6de3cb1 100644 --- a/src/institucion-tipo-entrada/institucion-tipo-entrada.service.ts +++ b/src/institucion-tipo-entrada/institucion-tipo-entrada.service.ts @@ -33,7 +33,8 @@ export class InstitucionTipoEntradaService { ); }) .then(async (tipoEntrada) => { - const instituciones = await this.institucionService.findAll(); + const instituciones = + await this.institucionService.findInfoInstitucionAll(); for (let i = 0; i < instituciones.length; i++) await this.institucionTipoEntradaRepository.save( @@ -53,7 +54,9 @@ export class InstitucionTipoEntradaService { } async findAllByIdInstitucion(id_institucion: number, mostrar = false) { - const institucion = await this.institucionService.findById(id_institucion); + const institucion = await this.institucionService.findInfoInstitucionById( + id_institucion, + ); const query = await this.institucionTipoEntradaRepository .createQueryBuilder('ite') .innerJoinAndSelect( diff --git a/src/institucion/entity/views/informacion-institucion.view.ts b/src/institucion/entity/views/informacion-institucion.view.ts index bb62f59..03104b0 100644 --- a/src/institucion/entity/views/informacion-institucion.view.ts +++ b/src/institucion/entity/views/informacion-institucion.view.ts @@ -6,7 +6,8 @@ import { Institucion } from '../institucion.entity'; dataSource .createQueryBuilder() .select('i.id_institucion', 'id_institucion') - .from(Institucion, 'i'), + .from(Institucion, 'i') + .orderBy('institucion', 'ASC'), }) export class InformacionInstitucionView { @ViewColumn() diff --git a/src/institucion/entity/views/min-informacion-institucion.view.ts b/src/institucion/entity/views/min-informacion-institucion.view.ts index ef8b430..91b7d9e 100644 --- a/src/institucion/entity/views/min-informacion-institucion.view.ts +++ b/src/institucion/entity/views/min-informacion-institucion.view.ts @@ -11,7 +11,8 @@ import { Institucion } from '../institucion.entity'; .addSelect('i.dominio', 'dominio') .addSelect('i.institucion', 'institucion') .addSelect('i.responsable', 'responsable') - .from(Institucion, 'i'), + .from(Institucion, 'i') + .orderBy('institucion', 'ASC'), }) export class MinInformacionInstitucionView { @ViewColumn() diff --git a/src/institucion/institucion.service.ts b/src/institucion/institucion.service.ts index 2a8d371..e87119a 100644 --- a/src/institucion/institucion.service.ts +++ b/src/institucion/institucion.service.ts @@ -20,16 +20,6 @@ export class InstitucionService { private minInformacionInstitucionView: Repository, ) {} - findAll(activo = false) { - const busqueda: { activo?: boolean } = {}; - - if (activo) busqueda.activo = activo; - return this.repository.find({ - where: busqueda, - order: { institucion: 'ASC' }, - }); - } - findById(id_institucion: number) { return this.repository .findOne({ where: { id_institucion } }) @@ -52,13 +42,27 @@ export class InstitucionService { }); } + findInfoInstitucionAll() { + return this.informacionInstitucionView.find().then((infoInstituciones) => { + const instituciones: Institucion[] = []; + + for (let i = 0; i < infoInstituciones.length; i++) + instituciones.push( + this.repository.create({ + id_institucion: infoInstituciones[i].id_institucion, + }), + ); + return instituciones; + }); + } + findMinInfoInstitucionAll(activo = 0, responsable = false) { const busqueda: { activo?: number; responsable?: FindOperator } = {}; if (activo) busqueda.activo = activo; if (responsable) busqueda.responsable = Not(IsNull()); return this.minInformacionInstitucionView - .find({ where: busqueda, order: { institucion: 'ASC' } }) + .find({ where: busqueda }) .then((infoInstituciones) => { const instituciones: Institucion[] = []; diff --git a/src/modulo/entity/views/informacion-modulo.view.ts b/src/modulo/entity/views/informacion-modulo.view.ts index b35aa6c..b679c28 100644 --- a/src/modulo/entity/views/informacion-modulo.view.ts +++ b/src/modulo/entity/views/informacion-modulo.view.ts @@ -7,7 +7,8 @@ import { Modulo } from '../modulo.entity'; .createQueryBuilder() .select('m.id_modulo', 'id_modulo') .addSelect('m.id_institucion', 'id_institucion') - .from(Modulo, 'm'), + .from(Modulo, 'm') + .orderBy('modulo', 'ASC'), }) export class InformacionModuloView { @ViewColumn() diff --git a/src/modulo/modulo.service.ts b/src/modulo/modulo.service.ts index 1040e80..901cac9 100644 --- a/src/modulo/modulo.service.ts +++ b/src/modulo/modulo.service.ts @@ -126,10 +126,7 @@ export class ModuloService { }; if (activo) busqueda.activo_modulo = activo; - return this.minInformacionModuloView.find({ - where: busqueda, - order: { modulo: 'ASC' }, - }); + return this.minInformacionModuloView.find({ where: busqueda }); }) .then((infoModulos) => { const modulos: Modulo[] = []; diff --git a/src/multa/multa.service.ts b/src/multa/multa.service.ts index d23d5d0..3d60f30 100644 --- a/src/multa/multa.service.ts +++ b/src/multa/multa.service.ts @@ -138,7 +138,9 @@ export class MultaService { usuario?: string; }) { const institucion = filtros.id_institucion - ? await this.institucionService.findById(parseInt(filtros.id_institucion)) + ? await this.institucionService.findInfoInstitucionById( + parseInt(filtros.id_institucion), + ) : null; const query = this.repository .createQueryBuilder('mu') diff --git a/src/operador/operador.service.ts b/src/operador/operador.service.ts index 98ca0bc..1ee1075 100644 --- a/src/operador/operador.service.ts +++ b/src/operador/operador.service.ts @@ -35,7 +35,7 @@ export class OperadorService { ) { const institucion = typeof id_institucion === 'number' - ? await this.institucionService.findById(id_institucion) + ? await this.institucionService.findInfoInstitucionById(id_institucion) : id_institucion; const tipoUsuario = await this.tipoUsuarioService.findById(id_tipo_usuario); @@ -111,7 +111,9 @@ export class OperadorService { operador?: string; }) { const institucion = filtros.id_institucion - ? await this.institucionService.findById(parseInt(filtros.id_institucion)) + ? await this.institucionService.findInfoInstitucionById( + parseInt(filtros.id_institucion), + ) : null; const tipoUsuario = filtros.id_tipo_usuario ? await this.tipoUsuarioService.findById( @@ -161,7 +163,7 @@ export class OperadorService { ) { const institucion = typeof id_institucion === 'number' - ? await this.institucionService.findById(id_institucion) + ? await this.institucionService.findInfoInstitucionById(id_institucion) : id_institucion; return this.repository diff --git a/src/prestamo/prestamo.service.ts b/src/prestamo/prestamo.service.ts index 5d933a8..a208203 100644 --- a/src/prestamo/prestamo.service.ts +++ b/src/prestamo/prestamo.service.ts @@ -137,34 +137,34 @@ export class PrestamoService { ) : null; - if (ahora.weekday() === 0) - throw new ConflictException('No hay servicio los días domingo.'); - this.validarInstitucionUsuario(usuario.instituciones, modulo); - if (!institucionDia.activo) - throw new ConflictException( - 'El día de hoy no hay servicio de préstamo de equipos.', - ); - if (ahora < horaMin) - throw new ConflictException( - `El servicio inicia a las ${institucionDia.hora_inicio} el día de hoy.`, - ); - if (ahora >= horaExtra) - throw new ConflictException( - `El servicio terminó a las ${institucionDia.hora_extra} el día de hoy.`, - ); - for (let i = 0; i < institucionDia.horasExcepcion.length; i++) { - const horaFin = moment( - `${ahoraStr} ${institucionDia.horasExcepcion[i].hora_fin}`, - ); - const horaInicio = moment( - `${ahoraStr} ${institucionDia.horasExcepcion[i].hora_inicio}`, - ); + // if (ahora.weekday() === 0) + // throw new ConflictException('No hay servicio los días domingo.'); + // this.validarInstitucionUsuario(usuario.instituciones, modulo); + // if (!institucionDia.activo) + // throw new ConflictException( + // 'El día de hoy no hay servicio de préstamo de equipos.', + // ); + // if (ahora < horaMin) + // throw new ConflictException( + // `El servicio inicia a las ${institucionDia.hora_inicio} el día de hoy.`, + // ); + // if (ahora >= horaExtra) + // throw new ConflictException( + // `El servicio terminó a las ${institucionDia.hora_extra} el día de hoy.`, + // ); + // for (let i = 0; i < institucionDia.horasExcepcion.length; i++) { + // const horaFin = moment( + // `${ahoraStr} ${institucionDia.horasExcepcion[i].hora_fin}`, + // ); + // const horaInicio = moment( + // `${ahoraStr} ${institucionDia.horasExcepcion[i].hora_inicio}`, + // ); - if (ahora > horaInicio && ahora < horaFin) - throw new ConflictException( - `Se suspendió temporalmente el servicio de ${institucionDia.horasExcepcion[i].hora_inicio} a ${institucionDia.horasExcepcion[i].hora_fin}.`, - ); - } + // if (ahora > horaInicio && ahora < horaFin) + // throw new ConflictException( + // `Se suspendió temporalmente el servicio de ${institucionDia.horasExcepcion[i].hora_inicio} a ${institucionDia.horasExcepcion[i].hora_fin}.`, + // ); + // } return this.repository .findOne({ where: { activo: true, usuario } }) .then((existePrestamo) => { @@ -296,7 +296,7 @@ export class PrestamoService { usuario?: string; }) { const institucion = filtros.id_institucion - ? await this.institucionService.findById(parseInt(filtros.id_institucion)) + ? await this.institucionService.findInfoInstitucionById(parseInt(filtros.id_institucion)) : null; const modulo = filtros.id_modulo ? await this.moduloService.findById(parseInt(filtros.id_modulo)) @@ -331,6 +331,7 @@ export class PrestamoService { .innerJoinAndSelect('e.status', 's') .innerJoinAndSelect('oe.tipoUsuario', 'tuoe') .innerJoinAndSelect('or.tipoUsuario', 'tuor') + .innerJoinAndSelect('u.tipoUsuario', 'tu') .innerJoinAndSelect('u.instituciones', 'is') .innerJoinAndSelect('c.modulo', 'm') .innerJoinAndSelect('c.tipoCarrito', 'tc') @@ -535,7 +536,7 @@ export class PrestamoService { ) { const institucion = typeof id_institucion === 'number' - ? await this.institucionService.findById(id_institucion) + ? await this.institucionService.findInfoInstitucionById(id_institucion) : id_institucion; return this.equipoService diff --git a/src/upload-file/upload-file.service.ts b/src/upload-file/upload-file.service.ts index 4e8e011..eb35f75 100644 --- a/src/upload-file/upload-file.service.ts +++ b/src/upload-file/upload-file.service.ts @@ -45,7 +45,9 @@ export class UploadFileService { ) {} async createEquipos(path: string, id_institucion: number) { - const institucion = await this.institucionService.findById(id_institucion); + const institucion = await this.institucionService.findInfoInstitucionById( + id_institucion, + ); let errores: string[] = []; let mensajes: string[] = []; let equiposNuevos: Equipo[] = []; @@ -79,7 +81,9 @@ export class UploadFileService { } async createUsuarios(path: string, id_institucion: number) { - const institucion = await this.institucionService.findById(id_institucion); + const institucion = await this.institucionService.findInfoInstitucionById( + id_institucion, + ); let errores: string[] = []; let mensajes: string[] = []; let usuariosNuevos: InstitucionUsuario[] = []; @@ -472,7 +476,9 @@ export class UploadFileService { async uploadLogo(file: Express.Multer.File, id_institucion: number) { const path = file ? `${file.destination}/${file.filename}` : null; - const institucion = await this.institucionService.findById(id_institucion); + const institucion = await this.institucionService.findInfoInstitucionById( + id_institucion, + ); if (!file) throw new BadRequestException('No se mandó ningún logo.'); institucion.logo = path; diff --git a/src/usuario/usuario.service.ts b/src/usuario/usuario.service.ts index daf285c..a21b213 100644 --- a/src/usuario/usuario.service.ts +++ b/src/usuario/usuario.service.ts @@ -69,7 +69,9 @@ export class UsuarioService { ) : null; const institucion = filtros.id_institucion - ? await this.institucionService.findById(parseInt(filtros.id_institucion)) + ? await this.institucionService.findInfoInstitucionById( + parseInt(filtros.id_institucion), + ) : null; const tipoUsuario = filtros.id_tipo_usuario ? await this.tipoUsuarioService.findById(