equipo con programas y tipos de entrada

This commit is contained in:
2022-09-28 00:08:56 -05:00
parent 6b502b9c14
commit ad79867585
10 changed files with 147 additions and 18 deletions
+4
View File
@@ -75,7 +75,9 @@ import { InformacionCarritoView } from './carrito/entity/views/informacion-carri
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 { FullInformacionEquipoProgramaView } from './equipo-programa/entity/views/full-informacion-equipo-programa.view';
import { InformacionEquipoProgramaView } from './equipo-programa/entity/views/informacion-equipo-programa.view';
import { FullInformacionEquipoTipoEntradaView } from './equipo-tipo-entrada/entity/views/full-informacion-equipo-tipo-entrada.view';
import { InformacionEquipoTipoEntradaView } from './equipo-tipo-entrada/entity/views/informacion-equipo-tipo-entrada.view';
import { InformacionInstitucionView } from './institucion/entity/views/informacion-institucion.view';
import { MinInformacionInstitucionView } from './institucion/entity/views/min-informacion-institucion.view';
@@ -150,7 +152,9 @@ import { InformacionUsuarioView } from './usuario/entity/views/informacion-usuar
FullInformacionCarritoView,
FullInformacionEquipoView,
InformacionEquipoView,
FullInformacionEquipoProgramaView,
InformacionEquipoProgramaView,
FullInformacionEquipoTipoEntradaView,
InformacionEquipoTipoEntradaView,
InformacionInstitucionView,
MinInformacionInstitucionView,
@@ -0,0 +1,28 @@
import { DataSource, ViewEntity, ViewColumn } from 'typeorm';
import { EquipoPrograma } from '../equipo-programa.entity';
import { Programa } from '../../../institucion-programa/entity/programa.entity';
@ViewEntity({
expression: (dataSource: DataSource) =>
dataSource
.createQueryBuilder()
.select('ep.id_equipo_programa', 'id_equipo_programa')
.addSelect('ep.id_equipo', 'id_equipo')
.addSelect('ep.id_programa', 'id_programa')
.addSelect('p.programa', 'programa')
.from(EquipoPrograma, 'ep')
.innerJoin(Programa, 'p', 'p.id_programa = ep.id_programa'),
})
export class FullInformacionEquipoProgramaView {
@ViewColumn()
id_equipo_programa: number;
@ViewColumn()
id_equipo: number;
@ViewColumn()
id_programa: number;
@ViewColumn()
programa: string;
}
@@ -4,6 +4,7 @@ import { TypeOrmModule } from '@nestjs/typeorm';
import { EquipoProgramaController } from './equipo-programa.controller';
import { EquipoProgramaService } from './equipo-programa.service';
import { EquipoPrograma } from '../equipo-programa/entity/equipo-programa.entity';
import { FullInformacionEquipoProgramaView } from './entity/views/full-informacion-equipo-programa.view';
import { InformacionEquipoProgramaView } from './entity/views/informacion-equipo-programa.view';
import { EquipoModule } from '../equipo/equipo.module';
import { InstitucionProgramaModule } from '../institucion-programa/institucion-programa.module';
@@ -14,7 +15,11 @@ import { ValidarUsuarioModule } from '../validar-usuario/validar-usuario.module'
forwardRef(() => EquipoModule),
InstitucionProgramaModule,
PassportModule.register({ defaultStrategy: 'jwt' }),
TypeOrmModule.forFeature([EquipoPrograma, InformacionEquipoProgramaView]),
TypeOrmModule.forFeature([
EquipoPrograma,
FullInformacionEquipoProgramaView,
InformacionEquipoProgramaView,
]),
ValidarUsuarioModule,
],
controllers: [EquipoProgramaController],
@@ -10,6 +10,7 @@ import { Repository } from 'typeorm';
import { Equipo } from '../equipo/entity/equipo.entity';
import { EquipoPrograma } from './entity/equipo-programa.entity';
import { Programa } from '../institucion-programa/entity/programa.entity';
import { FullInformacionEquipoProgramaView } from './entity/views/full-informacion-equipo-programa.view';
import { InformacionEquipoProgramaView } from './entity/views/informacion-equipo-programa.view';
import { EquipoService } from '../equipo/equipo.service';
import { InstitucionProgramaService } from '../institucion-programa/institucion-programa.service';
@@ -20,6 +21,8 @@ export class EquipoProgramaService {
constructor(
@InjectRepository(EquipoPrograma)
private repository: Repository<EquipoPrograma>,
@InjectRepository(FullInformacionEquipoProgramaView)
private fullInformacionEquipoProgramaView: Repository<FullInformacionEquipoProgramaView>,
@InjectRepository(InformacionEquipoProgramaView)
private informacionEquipoProgramaView: Repository<InformacionEquipoProgramaView>,
@Inject(forwardRef(() => EquipoService))
@@ -147,6 +150,28 @@ export class EquipoProgramaService {
});
}
findFullInfoEquipoProgramaAllByIdEquipo(id_equipo: number) {
return this.fullInformacionEquipoProgramaView
.find({
where: { id_equipo },
})
.then((infoEquipoProgramas) => {
const equipoProgramas: EquipoPrograma[] = [];
for (let i = 0; i < infoEquipoProgramas.length; i++)
equipoProgramas.push(
this.repository.create({
id_equipo_programa: infoEquipoProgramas[i].id_equipo_programa,
programa: {
id_programa: infoEquipoProgramas[i].id_programa,
programa: infoEquipoProgramas[i].programa,
},
}),
);
return equipoProgramas;
});
}
informacionEquipoPrograma(id_equipo: number, id_programa: number) {
return this.informacionEquipoProgramaView.findOne({
where: { id_equipo, id_programa },
@@ -0,0 +1,28 @@
import { DataSource, ViewEntity, ViewColumn } from 'typeorm';
import { EquipoTipoEntrada } from '../equipo-tipo-entrada.entity';
import { TipoEntrada } from '../../../institucion-tipo-entrada/entity/tipo-entrada.entity';
@ViewEntity({
expression: (dataSource: DataSource) =>
dataSource
.createQueryBuilder()
.select('ete.id_equipo_tipo_entrada', 'id_equipo_tipo_entrada')
.addSelect('ete.id_equipo', 'id_equipo')
.addSelect('ete.id_tipo_entrada', 'id_tipo_entrada')
.addSelect('te.tipo_entrada', 'tipo_entrada')
.from(EquipoTipoEntrada, 'ete')
.innerJoin(TipoEntrada, 'te', 'te.id_tipo_entrada = ete.id_tipo_entrada'),
})
export class FullInformacionEquipoTipoEntradaView {
@ViewColumn()
id_equipo_tipo_entrada: number;
@ViewColumn()
id_equipo: number;
@ViewColumn()
id_tipo_entrada: number;
@ViewColumn()
tipo_entrada: string;
}
@@ -1,9 +1,10 @@
import { Module } from '@nestjs/common';
import { forwardRef, Module } from '@nestjs/common';
import { PassportModule } from '@nestjs/passport';
import { TypeOrmModule } from '@nestjs/typeorm';
import { EquipoTipoEntradaController } from './equipo-tipo-entrada.controller';
import { EquipoTipoEntradaService } from './equipo-tipo-entrada.service';
import { EquipoTipoEntrada } from '../equipo-tipo-entrada/entity/equipo-tipo-entrada.entity';
import { FullInformacionEquipoTipoEntradaView } from './entity/views/full-informacion-equipo-tipo-entrada.view';
import { InformacionEquipoTipoEntradaView } from './entity/views/informacion-equipo-tipo-entrada.view';
import { EquipoModule } from '../equipo/equipo.module';
import { InstitucionTipoEntradaModule } from '../institucion-tipo-entrada/institucion-tipo-entrada.module';
@@ -11,11 +12,12 @@ import { ValidarUsuarioModule } from '../validar-usuario/validar-usuario.module'
@Module({
imports: [
EquipoModule,
forwardRef(() => EquipoModule),
InstitucionTipoEntradaModule,
PassportModule.register({ defaultStrategy: 'jwt' }),
TypeOrmModule.forFeature([
EquipoTipoEntrada,
FullInformacionEquipoTipoEntradaView,
InformacionEquipoTipoEntradaView,
]),
ValidarUsuarioModule,
@@ -1,9 +1,15 @@
import { ConflictException, Injectable } from '@nestjs/common';
import {
ConflictException,
forwardRef,
Inject,
Injectable,
} from '@nestjs/common';
import { InjectRepository } from '@nestjs/typeorm';
import { Repository } from 'typeorm';
import { Equipo } from '../equipo/entity/equipo.entity';
import { EquipoTipoEntrada } from './entity/equipo-tipo-entrada.entity';
import { TipoEntrada } from '../institucion-tipo-entrada/entity/tipo-entrada.entity';
import { FullInformacionEquipoTipoEntradaView } from './entity/views/full-informacion-equipo-tipo-entrada.view';
import { InformacionEquipoTipoEntradaView } from './entity/views/informacion-equipo-tipo-entrada.view';
import { EquipoService } from '../equipo/equipo.service';
import { InstitucionTipoEntradaService } from '../institucion-tipo-entrada/institucion-tipo-entrada.service';
@@ -14,7 +20,10 @@ export class EquipoTipoEntradaService {
@InjectRepository(EquipoTipoEntrada)
private repository: Repository<EquipoTipoEntrada>,
@InjectRepository(InformacionEquipoTipoEntradaView)
private fullInformacionEquipoTipoEntradaView: Repository<FullInformacionEquipoTipoEntradaView>,
@InjectRepository(FullInformacionEquipoTipoEntradaView)
private informacionEquipoTipoEntradaView: Repository<InformacionEquipoTipoEntradaView>,
@Inject(forwardRef(() => EquipoService))
private equipoService: EquipoService,
private institucionTipoEntradaService: InstitucionTipoEntradaService,
) {}
@@ -80,6 +89,29 @@ export class EquipoTipoEntradaService {
});
}
findFullInfoEquipoTipoEntradaAllByIdEquipo(id_equipo: number) {
return this.fullInformacionEquipoTipoEntradaView
.find({
where: { id_equipo },
})
.then((infoEquipoTipoEntradas) => {
const equipoProgramas: EquipoTipoEntrada[] = [];
for (let i = 0; i < infoEquipoTipoEntradas.length; i++)
equipoProgramas.push(
this.repository.create({
id_equipo_tipo_entrada:
infoEquipoTipoEntradas[i].id_equipo_tipo_entrada,
tipoEntrada: {
id_tipo_entrada: infoEquipoTipoEntradas[i].id_tipo_entrada,
tipo_entrada: infoEquipoTipoEntradas[i].tipo_entrada,
},
}),
);
return equipoProgramas;
});
}
informacionEquipoTipoEntrada(id_equipo: number, id_tipo_entrada: number) {
return this.informacionEquipoTipoEntradaView.findOne({
where: { id_equipo, id_tipo_entrada },
@@ -21,23 +21,20 @@ import { TipoCarrito } from '../../../institucion-tipo-carrito/entity/tipo-carri
.addSelect('e.numero_inventario', 'numero_inventario')
.addSelect('e.numero_serie', 'numero_serie')
.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('ma.marca', 'marca')
.addSelect('mo.modelo', 'modelo')
.addSelect('s.status', 'status')
.addSelect('m.activo', 'activo_modulo')
.addSelect('m.id_institucion', 'id_institucion')
.addSelect('m.modulo', 'modulo')
.addSelect('tc.tipo_carrito', 'tipo_carrito')
.addSelect('i.activo', 'activo_institucion')
.addSelect('i.institucion', 'institucion')
.from(Equipo, 'e')
.innerJoin(Carrito, 'c', 'c.id_carrito = e.id_carrito')
.innerJoin(Marca, 'ma', 'ma.id_marca = e.id_marca')
.innerJoin(Modelo, 'mo', 'mo.id_modelo = e.modelo')
.innerJoin(Modelo, 'mo', 'mo.id_modelo = e.id_modelo')
.innerJoin(Status, 's', 's.id_status = e.id_status')
.innerJoin(Modulo, 'm', 'm.id_modulo = c.id_modulo')
.innerJoin(TipoCarrito, 'tc', 'tc.id_tipo_carrito = c.id_tipo_carrito')
@@ -52,15 +49,6 @@ export class FullInformacionEquipoView {
@ViewColumn()
id_equipo: number;
@ViewColumn()
activo_carrito: boolean;
@ViewColumn()
activo_institucion: boolean;
@ViewColumn()
activo_modulo: boolean;
@ViewColumn()
carrito: string;
+2
View File
@@ -8,6 +8,7 @@ import { FullInformacionEquipoView } from './entity/views/full-informacion-equip
import { InformacionEquipoView } from './entity/views/informacion-equipo.view';
import { CarritoModule } from '../carrito/carrito.module';
import { EquipoProgramaModule } from '../equipo-programa/equipo-programa.module';
import { EquipoTipoEntradaModule } from '../equipo-tipo-entrada/equipo-tipo-entrada.module';
import { InstitucionModule } from '../institucion/institucion.module';
import { InstitucionProgramaModule } from '../institucion-programa/institucion-programa.module';
import { InstitucionTipoCarritoModule } from '../institucion-tipo-carrito/institucion-tipo-carrito.module';
@@ -24,6 +25,7 @@ import { ValidarUsuarioModule } from '../validar-usuario/validar-usuario.module'
imports: [
CarritoModule,
forwardRef(() => EquipoProgramaModule),
forwardRef(() => EquipoTipoEntradaModule),
InstitucionModule,
InstitucionProgramaModule,
InstitucionTipoCarritoModule,
+16 -1
View File
@@ -22,6 +22,7 @@ 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 { EquipoTipoEntradaService } from '../equipo-tipo-entrada/equipo-tipo-entrada.service';
import { InstitucionService } from '../institucion/institucion.service';
import { InstitucionProgramaService } from '../institucion-programa/institucion-programa.service';
import { InstitucionTipoCarritoService } from '../institucion-tipo-carrito/institucion-tipo-carrito.service';
@@ -44,6 +45,8 @@ export class EquipoService {
private carritoService: CarritoService,
@Inject(forwardRef(() => EquipoProgramaService))
private equipoProgramaService: EquipoProgramaService,
@Inject(forwardRef(() => EquipoTipoEntradaService))
private equipoTipoEntradaService: EquipoTipoEntradaService,
private institucionService: InstitucionService,
private institucionProgramaService: InstitucionProgramaService,
private institucionTipoCarritoService: InstitucionTipoCarritoService,
@@ -391,11 +394,21 @@ export class EquipoService {
},
}),
)
.then((infoEquipo) => {
.then(async (infoEquipo) => {
if (!infoEquipo)
throw new NotFoundException(
'No existe un equipo de cómputo con este número de inventario.',
);
const programas =
await this.equipoProgramaService.findFullInfoEquipoProgramaAllByIdEquipo(
infoEquipo.id_equipo,
);
const tiposEntradas =
await this.equipoTipoEntradaService.findFullInfoEquipoTipoEntradaAllByIdEquipo(
infoEquipo.id_equipo,
);
return this.repository.create({
id_equipo: infoEquipo.id_equipo,
equipo: infoEquipo.equipo,
@@ -429,6 +442,8 @@ export class EquipoService {
id_status: infoEquipo.id_status,
status: infoEquipo.status,
},
programas,
tiposEntradas,
});
});
}