From 385e72e66e31f3b41f1944ad8fd8f2372294677b Mon Sep 17 00:00:00 2001 From: lemuel Date: Wed, 24 Aug 2022 03:43:15 -0500 Subject: [PATCH] listo --- src/app.module.ts | 2 + src/equipo/entity/equipo-prestamo.entity.ts | 22 ------- .../entity/views/equipo-prestamo.view.ts | 59 +++++++++++++++++++ src/equipo/equipo.module.ts | 3 +- src/equipo/equipo.service.ts | 5 ++ src/prestamo/prestamo.service.ts | 9 ++- 6 files changed, 72 insertions(+), 28 deletions(-) delete mode 100644 src/equipo/entity/equipo-prestamo.entity.ts create mode 100644 src/equipo/entity/views/equipo-prestamo.view.ts diff --git a/src/app.module.ts b/src/app.module.ts index e15c4a7..44ac88a 100644 --- a/src/app.module.ts +++ b/src/app.module.ts @@ -43,6 +43,7 @@ import { Carrito } from './carrito/entity/carrito.entity'; import { CarritoMotivo } from './carrito-motivo/entity/carrito-motivo.entity'; import { Dia } from './institucion-dia/entity/dia.entity'; import { Equipo } from './equipo/entity/equipo.entity'; +// import { EquipoPrestamoView } from './equipo/entity/views/equipo-prestamo.view'; import { EquipoMotivo } from './equipo-motivo/entity/equipo-motivo.entity'; import { EquipoPrograma } from './equipo-programa/entity/equipo-programa.entity'; import { EquipoTipoEntrada } from './equipo-tipo-entrada/entity/equipo-tipo-entrada.entity'; @@ -102,6 +103,7 @@ import { Usuario } from './usuario/entity/usuario.entity'; CarritoMotivo, Dia, Equipo, + // EquipoPrestamoView, EquipoMotivo, EquipoPrograma, EquipoTipoEntrada, diff --git a/src/equipo/entity/equipo-prestamo.entity.ts b/src/equipo/entity/equipo-prestamo.entity.ts deleted file mode 100644 index ffc4373..0000000 --- a/src/equipo/entity/equipo-prestamo.entity.ts +++ /dev/null @@ -1,22 +0,0 @@ -// import { ViewEntity, ViewColumn, DataSource } from 'typeorm'; - -// @ViewEntity({ -// expression: (dataSource: DataSource) => -// dataSource -// .createQueryBuilder() -// .select('post.id', 'id') -// .addSelect('post.name', 'name') -// .addSelect('category.name', 'categoryName') -// .from(Post, 'post') -// .leftJoin(Category, 'category', 'category.id = post.categoryId'), -// }) -// export class PostCategory { -// @ViewColumn() -// id: number; - -// @ViewColumn() -// name: string; - -// @ViewColumn() -// categoryName: string; -// } diff --git a/src/equipo/entity/views/equipo-prestamo.view.ts b/src/equipo/entity/views/equipo-prestamo.view.ts new file mode 100644 index 0000000..3313372 --- /dev/null +++ b/src/equipo/entity/views/equipo-prestamo.view.ts @@ -0,0 +1,59 @@ +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'; +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 { TipoCarrito } from '../../../institucion-tipo-carrito/entity/tipo-carrito.entity'; +import { TipoEntrada } from '../../../institucion-tipo-entrada/entity/tipo-entrada.entity'; +import { Status } from '../../../status/entity/status.entity'; + +@ViewEntity({ + expression: (dataSource: DataSource) => + dataSource + .createQueryBuilder() + .from(Equipo, 'e') + .select('e.id_equipo', 'id_equipo') + .addSelect('e.prestado', 'prestado') + .addSelect('c.activo', 'activo') + .addSelect('s.id_status', 'id_status') + .addSelect('m.id_modulo', 'id_modulo') + .addSelect('i.id_institucion', 'id_institucion') + // .addSelect('p.id_programa') + // .addSelect('p.id_programa') + // .addSelect('te.id_tipo_entrada') + // .addSelect('tc.id_tipo_carrito') + .innerJoin(Carrito, 'c', 'c.id_carrito = e.id_carrito') + .innerJoin(EquipoPrograma, 'ps', 'ps.id_equipo = e.id_equipo') + .innerJoin(EquipoTipoEntrada, 'tes', 'tes.id_equipo = e.id_equipo') + .innerJoin(Status, 's', 's.id_status = e.id_status') + // .innerJoin(TipoEntrada, 'te', 'te.id_tipo_entrada = c.id_tipo_entrada') + .innerJoin(Modulo, 'm', 'm.id_modulo = c.id_modulo') + // .innerJoin(Programa, 'p', 'p.id_programa = e.id_programa') + .innerJoin(TipoCarrito, 'tc', 'tc.id_tipo_carrito = c.id_tipo_carrito') + .innerJoin(Institucion, 'i', 'i.id_institucion = m.id_institucion') + .where( + 'e.prestado = 1 && s.id_status = 1 && c.activo = 1 && m.activo = 1 && i.activo = 1', + ), +}) +export class EquipoPrestamoView { + @ViewColumn() + id_equipo: number; + + @ViewColumn() + prestado: boolean; + + @ViewColumn() + activo: boolean; + + @ViewColumn() + id_status: number; + + @ViewColumn() + id_modulo: number; + + @ViewColumn() + id_institucion: number; +} diff --git a/src/equipo/equipo.module.ts b/src/equipo/equipo.module.ts index 144bea6..d976ddf 100644 --- a/src/equipo/equipo.module.ts +++ b/src/equipo/equipo.module.ts @@ -4,6 +4,7 @@ import { TypeOrmModule } from '@nestjs/typeorm'; import { EquipoController } from './equipo.controller'; import { EquipoService } from './equipo.service'; import { Equipo } from './entity/equipo.entity'; +// import { EquipoPrestamoView } from './entity/views/equipo-prestamo.view'; import { CarritoModule } from '../carrito/carrito.module'; import { EquipoProgramaModule } from '../equipo-programa/equipo-programa.module'; import { InstitucionModule } from '../institucion/institucion.module'; @@ -32,7 +33,7 @@ import { StatusModule } from '../status/status.module'; OperadorModule, PassportModule.register({ defaultStrategy: 'jwt' }), StatusModule, - TypeOrmModule.forFeature([Equipo]), + TypeOrmModule.forFeature([Equipo /*, EquipoPrestamoView*/]), ], controllers: [EquipoController], providers: [EquipoService], diff --git a/src/equipo/equipo.service.ts b/src/equipo/equipo.service.ts index 50ac45e..f31d496 100644 --- a/src/equipo/equipo.service.ts +++ b/src/equipo/equipo.service.ts @@ -10,6 +10,7 @@ import { InjectRepository } from '@nestjs/typeorm'; import { Repository } from 'typeorm'; import { Carrito } from '../carrito/entity/carrito.entity'; import { Equipo } from './entity/equipo.entity'; +// import { EquipoPrestamoView } from './entity/views/equipo-prestamo.view'; import { Institucion } from '../institucion/entity/institucion.entity'; import { Marca } from '../marca/entity/marca.entity'; import { Modelo } from '../modelo/entity/modelo.entity'; @@ -35,6 +36,8 @@ import { StatusService } from '../status/status.service'; export class EquipoService { constructor( @InjectRepository(Equipo) private repository: Repository, + // @InjectRepository(EquipoPrestamoView) + // private equipoPrestamoView: Repository, private carritoService: CarritoService, @Inject(forwardRef(() => EquipoProgramaService)) private equipoProgramaService: EquipoProgramaService, @@ -297,7 +300,9 @@ export class EquipoService { .where('e.prestado = 0') .orderBy('c.carrito') .addOrderBy('e.equipo'); + // const a = await this.equipoPrestamoView.find(); + // console.log(a); if (programa) { query.andWhere('ps.id_programa = :id_programa', { id_programa: programa.id_programa, diff --git a/src/prestamo/prestamo.service.ts b/src/prestamo/prestamo.service.ts index f106872..c45670d 100644 --- a/src/prestamo/prestamo.service.ts +++ b/src/prestamo/prestamo.service.ts @@ -326,6 +326,7 @@ export class PrestamoService { .innerJoinAndSelect('p.operadorRegreso', 'or') .innerJoinAndSelect('p.usuario', 'u') .innerJoinAndSelect('e.carrito', 'c') + .innerJoinAndSelect('e.status', 's') .innerJoinAndSelect('oe.tipoUsuario', 'tuoe') .innerJoinAndSelect('or.tipoUsuario', 'tuor') .innerJoinAndSelect('u.instituciones', 'is') @@ -346,11 +347,9 @@ export class PrestamoService { .take(25); if (filtros.activo) { - if (typeof filtros.activo === 'boolean') { - query - .innerJoinAndSelect('e.status', 's') - .andWhere('p.activo = :activo', { activo: filtros.activo }); - } else + if (typeof filtros.activo === 'boolean') + query.andWhere('p.activo = :activo', { activo: filtros.activo }); + else query.andWhere('p.activo = :activo', { activo: filtros.activo === 'true', });