From a1bccaf135560910f86d51607296f8a54d5759f9 Mon Sep 17 00:00:00 2001 From: xXpuma99Xx <51341582+xXpuma99Xx@users.noreply.github.com> Date: Thu, 29 Sep 2022 02:51:27 -0500 Subject: [PATCH] cambiar status de equipoal regresar --- src/app.module.ts | 4 + .../dto/input/regresar-id-prestamo.dto.ts | 9 + .../input/regresar-numero-inventario.dto.ts | 9 + .../full-informacion-prestamo-equipo.view.ts | 99 +++++++ .../full-informacion-prestamo-usuario.view.ts | 152 +++++++++++ .../views/full-informacion-prestamo.view.ts | 50 +++- .../entity/views/informacion-prestamo.view.ts | 11 +- src/prestamo/prestamo.controller.ts | 15 ++ src/prestamo/prestamo.module.ts | 4 + src/prestamo/prestamo.service.ts | 254 +++++++++++++++--- 10 files changed, 561 insertions(+), 46 deletions(-) create mode 100644 src/prestamo/entity/views/full-informacion-prestamo-equipo.view.ts create mode 100644 src/prestamo/entity/views/full-informacion-prestamo-usuario.view.ts diff --git a/src/app.module.ts b/src/app.module.ts index 499bc8e..a936a33 100644 --- a/src/app.module.ts +++ b/src/app.module.ts @@ -88,6 +88,8 @@ import { FullInformacionMultaView } from './multa/entity/views/full-informacion- import { InformacionMultaView } from './multa/entity/views/informacion-multa.view'; import { InformacionOperadorView } from './operador/entity/views/informacion-operador.view'; import { FullInformacionPrestamoView } from './prestamo/entity/views/full-informacion-prestamo.view'; +import { FullInformacionPrestamoEquipoView } from './prestamo/entity/views/full-informacion-prestamo-equipo.view'; +import { FullInformacionPrestamoUsuarioView } from './prestamo/entity/views/full-informacion-prestamo-usuario.view'; import { InformacionPrestamoView } from './prestamo/entity/views/informacion-prestamo.view'; import { InformacionUsuarioView } from './usuario/entity/views/informacion-usuario.view'; @@ -166,6 +168,8 @@ import { InformacionUsuarioView } from './usuario/entity/views/informacion-usuar InformacionMultaView, InformacionOperadorView, FullInformacionPrestamoView, + FullInformacionPrestamoEquipoView, + FullInformacionPrestamoUsuarioView, InformacionPrestamoView, InformacionUsuarioView, ], diff --git a/src/prestamo/dto/input/regresar-id-prestamo.dto.ts b/src/prestamo/dto/input/regresar-id-prestamo.dto.ts index 01cecac..584ba9a 100644 --- a/src/prestamo/dto/input/regresar-id-prestamo.dto.ts +++ b/src/prestamo/dto/input/regresar-id-prestamo.dto.ts @@ -10,12 +10,21 @@ export class RegresarIdPrestamoDto { @IsInt() id_prestamo: number; + @IsInt() + id_status: number; + @IsString() @IsNotEmpty() @MaxLength(250) @IsOptional() descripcion?: string; + @IsString() + @IsNotEmpty() + @MaxLength(250) + @IsOptional() + motivo?: string; + @IsInt() @IsOptional() id_institucion_infraccion?: number; diff --git a/src/prestamo/dto/input/regresar-numero-inventario.dto.ts b/src/prestamo/dto/input/regresar-numero-inventario.dto.ts index e13542d..0fc0128 100644 --- a/src/prestamo/dto/input/regresar-numero-inventario.dto.ts +++ b/src/prestamo/dto/input/regresar-numero-inventario.dto.ts @@ -10,12 +10,21 @@ export class RegresarNumeroInventarioDto { @IsString() numero_inventario: string; + @IsInt() + id_status: number; + @IsString() @IsNotEmpty() @MaxLength(250) @IsOptional() descripcion?: string; + @IsString() + @IsNotEmpty() + @MaxLength(250) + @IsOptional() + motivo?: string; + @IsInt() @IsOptional() id_institucion_infraccion?: number; diff --git a/src/prestamo/entity/views/full-informacion-prestamo-equipo.view.ts b/src/prestamo/entity/views/full-informacion-prestamo-equipo.view.ts new file mode 100644 index 0000000..82f541f --- /dev/null +++ b/src/prestamo/entity/views/full-informacion-prestamo-equipo.view.ts @@ -0,0 +1,99 @@ +import { DataSource, ViewEntity, ViewColumn } from 'typeorm'; +import { Carrito } from '../../../carrito/entity/carrito.entity'; +import { Equipo } from '../../../equipo/entity/equipo.entity'; +import { Modulo } from '../../../modulo/entity/modulo.entity'; +import { Operador } from '../../../operador/entity/operador.entity'; +import { Prestamo } from '../prestamo.entity'; +import { Usuario } from '../../../usuario/entity/usuario.entity'; + +@ViewEntity({ + expression: (dataSource: DataSource) => + dataSource + .createQueryBuilder() + .select('p.id_prestamo', 'id_prestamo') + .addSelect('p.activo', 'activo') + .addSelect('p.cancelado_operador', 'cancelado_operador') + .addSelect('p.cancelado_usuario', 'cancelado_usuario') + .addSelect('p.fecha_entrega', 'fecha_entrega') + .addSelect('p.fecha_inicio', 'fecha_inicio') + .addSelect('p.hora_fin', 'hora_fin') + .addSelect('p.hora_inicio', 'hora_inicio') + .addSelect('p.hora_max_recoger', 'hora_max_recoger') + .addSelect('p.id_equipo', 'id_equipo') + .addSelect('p.id_operador_entrega', 'id_operador_entrega') + .addSelect('p.id_operador_regreso', 'id_operador_regreso') + .addSelect('p.id_usuario', 'id_usuario') + .addSelect('oe.operador', 'operador_entrega') + .addSelect('or.operador', 'operador_regreso') + .addSelect('u.id_tipo_usuario', 'id_tipo_usuario') + .addSelect('u.nombre', 'nombre') + .addSelect('u.usuario', 'usuario') + .addSelect('m.id_institucion', 'id_institucion') + .from(Prestamo, 'p') + .innerJoin(Equipo, 'e', 'e.id_equipo = p.id_equipo') + .innerJoin(Operador, 'oe', 'oe.id_operador = p.id_operador_entrega') + .innerJoin(Operador, 'or', 'or.id_operador = p.id_operador_regreso') + .innerJoin(Usuario, 'u', 'u.id_usuario = p.id_usuario') + .innerJoin(Carrito, 'c', 'c.id_carrito = e.id_carrito') + .innerJoin(Modulo, 'm', 'm.id_modulo = c.id_modulo') + + .orderBy('p.id_prestamo', 'DESC'), +}) +export class FullInformacionPrestamoEquipoView { + @ViewColumn() + id_prestamo: number; + + @ViewColumn() + activo: number; + + @ViewColumn() + cancelado_operador: boolean; + + @ViewColumn() + cancelado_usuario: boolean; + + @ViewColumn() + fecha_entrega: Date; + + @ViewColumn() + fecha_inicio: Date; + + @ViewColumn() + hora_fin: Date; + + @ViewColumn() + hora_inicio: Date; + + @ViewColumn() + hora_max_recoger: Date; + + @ViewColumn() + id_equipo: number; + + @ViewColumn() + id_institucion: number; + + @ViewColumn() + id_operador_entrega: number; + + @ViewColumn() + id_operador_regreso: number; + + @ViewColumn() + id_tipo_usuario: number; + + @ViewColumn() + id_usuario: number; + + @ViewColumn() + nombre: string; + + @ViewColumn() + operador_entrega: string; + + @ViewColumn() + operador_regreso: string; + + @ViewColumn() + usuario: string; +} diff --git a/src/prestamo/entity/views/full-informacion-prestamo-usuario.view.ts b/src/prestamo/entity/views/full-informacion-prestamo-usuario.view.ts new file mode 100644 index 0000000..cd3adbd --- /dev/null +++ b/src/prestamo/entity/views/full-informacion-prestamo-usuario.view.ts @@ -0,0 +1,152 @@ +import { DataSource, ViewEntity, ViewColumn } from 'typeorm'; +import { Carrito } from '../../../carrito/entity/carrito.entity'; +import { Equipo } from '../../../equipo/entity/equipo.entity'; +import { Institucion } from '../../../institucion/entity/institucion.entity'; +import { InstitucionCarrera } from '../../../institucion-carrera/entity/institucion-carrera.entity'; +import { InstitucionUsuario } from '../../../institucion-usuario/entity/institucion-usuario.entity'; +import { Modulo } from '../../../modulo/entity/modulo.entity'; +import { Operador } from '../../../operador/entity/operador.entity'; +import { Prestamo } from '../prestamo.entity'; +import { Status } from '../../../status/entity/status.entity'; +import { TipoCarrito } from '../../../institucion-tipo-carrito/entity/tipo-carrito.entity'; +import { Usuario } from '../../../usuario/entity/usuario.entity'; + +@ViewEntity({ + expression: (dataSource: DataSource) => + dataSource + .createQueryBuilder() + .select('p.id_prestamo', 'id_prestamo') + .addSelect('p.activo', 'activo') + .addSelect('p.cancelado_operador', 'cancelado_operador') + .addSelect('p.cancelado_usuario', 'cancelado_usuario') + .addSelect('p.fecha_entrega', 'fecha_entrega') + .addSelect('p.fecha_inicio', 'fecha_inicio') + .addSelect('p.hora_fin', 'hora_fin') + .addSelect('p.hora_inicio', 'hora_inicio') + .addSelect('p.hora_max_recoger', 'hora_max_recoger') + .addSelect('p.id_equipo', 'id_equipo') + .addSelect('p.id_operador_entrega', 'id_operador_entrega') + .addSelect('p.id_operador_regreso', 'id_operador_regreso') + .addSelect('p.id_usuario', 'id_usuario') + .addSelect('e.equipo', 'equipo') + .addSelect('e.id_carrito', 'id_carrito') + .addSelect('e.id_status', 'id_status') + .addSelect('e.numero_inventario', 'numero_inventario') + .addSelect('e.numero_serie', 'numero_serie') + .addSelect('oe.operador', 'operador_entrega') + .addSelect('or.operador', 'operador_regreso') + .addSelect('c.carrito', 'carrito') + .addSelect('c.id_modulo', 'id_modulo') + .addSelect('c.id_tipo_carrito', 'id_tipo_carrito') + .addSelect('s.status', 'status') + .addSelect('m.id_institucion', 'id_institucion') + .addSelect('m.modulo', 'modulo') + .addSelect('ic.id_institucion', 'id_institucion_u') + .addSelect('tc.tipo_carrito', 'tipo_carrito') + .addSelect('i.institucion', 'institucion') + .from(Prestamo, 'p') + .innerJoin(Equipo, 'e', 'e.id_equipo = p.id_equipo') + .innerJoin(Operador, 'oe', 'oe.id_operador = p.id_operador_entrega') + .innerJoin(Operador, 'or', 'or.id_operador = p.id_operador_regreso') + .innerJoin(Usuario, 'u', 'u.id_usuario = p.id_usuario') + .innerJoin(Carrito, 'c', 'c.id_carrito = e.id_carrito') + .innerJoin(Status, 's', 's.id_status = e.id_status') + .innerJoin(InstitucionUsuario, 'is', 'is.id_usuario = u.id_usuario') + .innerJoin(Modulo, 'm', 'm.id_modulo = c.id_modulo') + .innerJoin(TipoCarrito, 'tc', 'tc.id_tipo_carrito = c.id_tipo_carrito') + .innerJoin( + InstitucionCarrera, + 'ic', + 'ic.id_institucion_carrera = is.id_institucion_carrera', + ) + .innerJoin(Institucion, 'i', 'i.id_institucion = m.id_institucion') + .orderBy('p.id_prestamo', 'DESC'), +}) +export class FullInformacionPrestamoUsuarioView { + @ViewColumn() + id_prestamo: number; + + @ViewColumn() + activo: number; + + @ViewColumn() + cancelado_operador: boolean; + + @ViewColumn() + cancelado_usuario: boolean; + + @ViewColumn() + carrito: string; + + @ViewColumn() + equipo: string; + + @ViewColumn() + fecha_entrega: Date; + + @ViewColumn() + fecha_inicio: Date; + + @ViewColumn() + hora_fin: Date; + + @ViewColumn() + hora_inicio: Date; + + @ViewColumn() + hora_max_recoger: Date; + + @ViewColumn() + id_carrito: number; + + @ViewColumn() + id_equipo: number; + + @ViewColumn() + id_institucion: number; + + @ViewColumn() + id_institucion_u: number; + + @ViewColumn() + id_modulo: number; + + @ViewColumn() + id_operador_entrega: number; + + @ViewColumn() + id_operador_regreso: number; + + @ViewColumn() + id_status: number; + + @ViewColumn() + id_tipo_carrito: number; + + @ViewColumn() + id_usuario: number; + + @ViewColumn() + institucion: string; + + @ViewColumn() + modulo: string; + + @ViewColumn() + numero_inventario: string; + + @ViewColumn() + numero_serie: string; + + @ViewColumn() + operador_entrega: string; + + @ViewColumn() + operador_regreso: string; + + @ViewColumn() + status: string; + + @ViewColumn() + tipo_carrito: string; +} diff --git a/src/prestamo/entity/views/full-informacion-prestamo.view.ts b/src/prestamo/entity/views/full-informacion-prestamo.view.ts index 945af2f..19aa669 100644 --- a/src/prestamo/entity/views/full-informacion-prestamo.view.ts +++ b/src/prestamo/entity/views/full-informacion-prestamo.view.ts @@ -1,10 +1,13 @@ import { DataSource, ViewEntity, ViewColumn } from 'typeorm'; +import { Carrera } from '../../../institucion-carrera/entity/carrera.entity'; import { Carrito } from '../../../carrito/entity/carrito.entity'; -import { Prestamo } from '../prestamo.entity'; import { Equipo } from '../../../equipo/entity/equipo.entity'; import { Institucion } from '../../../institucion/entity/institucion.entity'; +import { InstitucionCarrera } from '../../../institucion-carrera/entity/institucion-carrera.entity'; +import { InstitucionUsuario } from '../../../institucion-usuario/entity/institucion-usuario.entity'; import { Modulo } from '../../../modulo/entity/modulo.entity'; import { Operador } from '../../../operador/entity/operador.entity'; +import { Prestamo } from '../prestamo.entity'; import { Status } from '../../../status/entity/status.entity'; import { TipoCarrito } from '../../../institucion-tipo-carrito/entity/tipo-carrito.entity'; import { Usuario } from '../../../usuario/entity/usuario.entity'; @@ -31,18 +34,24 @@ import { Usuario } from '../../../usuario/entity/usuario.entity'; .addSelect('e.id_status', 'id_status') .addSelect('e.numero_inventario', 'numero_inventario') .addSelect('e.numero_serie', 'numero_serie') - .addSelect('oe.operador', 'operadorEntrega') - .addSelect('or.operador', 'operadorRegreso') - .addSelect('u.usuario', 'usuario') + .addSelect('oe.operador', 'operador_entrega') + .addSelect('or.operador', 'operador_regreso') + .addSelect('u.id_tipo_usuario', 'id_tipo_usuario') .addSelect('u.nombre', 'nombre') + .addSelect('u.usuario', 'usuario') .addSelect('c.carrito', 'carrito') .addSelect('c.id_modulo', 'id_modulo') .addSelect('c.id_tipo_carrito', 'id_tipo_carrito') .addSelect('s.status', 'status') + .addSelect('is.id_institucion_usuario', 'id_institucion_usuario') .addSelect('m.id_institucion', 'id_institucion') .addSelect('m.modulo', 'modulo') + .addSelect('ic.id_institucion_carrera', 'id_institucion_carrera') + .addSelect('ic.id_institucion', 'id_institucion_u') + .addSelect('ic.id_carrera', 'id_carrera') .addSelect('tc.tipo_carrito', 'tipo_carrito') .addSelect('i.institucion', 'institucion') + .addSelect('ca.carrera', 'carrera') .from(Prestamo, 'p') .innerJoin(Equipo, 'e', 'e.id_equipo = p.id_equipo') .innerJoin(Operador, 'oe', 'oe.id_operador = p.id_operador_entrega') @@ -50,16 +59,26 @@ import { Usuario } from '../../../usuario/entity/usuario.entity'; .innerJoin(Usuario, 'u', 'u.id_usuario = p.id_usuario') .innerJoin(Carrito, 'c', 'c.id_carrito = e.id_carrito') .innerJoin(Status, 's', 's.id_status = e.id_status') + .innerJoin(InstitucionUsuario, 'is', 'is.id_usuario = u.id_usuario') .innerJoin(Modulo, 'm', 'm.id_modulo = c.id_modulo') .innerJoin(TipoCarrito, 'tc', 'tc.id_tipo_carrito = c.id_tipo_carrito') - .innerJoin(Institucion, 'i', 'i.id_institucion = m.id_institucion'), + .innerJoin( + InstitucionCarrera, + 'ic', + 'ic.id_institucion_carrera = is.id_institucion_carrera', + ) + .innerJoin(Institucion, 'i', 'i.id_institucion = m.id_institucion') + .innerJoin(Carrera, 'ca', 'ca.id_carrera = ic.id_carrera'), }) export class FullInformacionPrestamoView { @ViewColumn() id_prestamo: number; @ViewColumn() - activo: boolean; + activo: number; + + @ViewColumn() + carrera: string; @ViewColumn() cancelado_operador: boolean; @@ -88,6 +107,9 @@ export class FullInformacionPrestamoView { @ViewColumn() hora_max_recoger: Date; + @ViewColumn() + id_carrera: number; + @ViewColumn() id_carrito: number; @@ -97,6 +119,15 @@ export class FullInformacionPrestamoView { @ViewColumn() id_institucion: number; + @ViewColumn() + id_institucion_usuario: number; + + @ViewColumn() + id_institucion_carrera: number; + + @ViewColumn() + id_institucion_u: number; + @ViewColumn() id_modulo: number; @@ -112,6 +143,9 @@ export class FullInformacionPrestamoView { @ViewColumn() id_tipo_carrito: number; + @ViewColumn() + id_tipo_usuario: number; + @ViewColumn() id_usuario: number; @@ -131,10 +165,10 @@ export class FullInformacionPrestamoView { numero_serie: string; @ViewColumn() - operadorEntrega: string; + operador_entrega: string; @ViewColumn() - operadorRegreso: string; + operador_regreso: string; @ViewColumn() status: string; diff --git a/src/prestamo/entity/views/informacion-prestamo.view.ts b/src/prestamo/entity/views/informacion-prestamo.view.ts index 68e798d..e2f4e32 100644 --- a/src/prestamo/entity/views/informacion-prestamo.view.ts +++ b/src/prestamo/entity/views/informacion-prestamo.view.ts @@ -3,16 +3,14 @@ import { Carrito } from '../../../carrito/entity/carrito.entity'; import { Prestamo } from '../prestamo.entity'; import { Equipo } from '../../../equipo/entity/equipo.entity'; import { Modulo } from '../../../modulo/entity/modulo.entity'; -import { Operador } from '../../../operador/entity/operador.entity'; import { Status } from '../../../status/entity/status.entity'; -import { TipoCarrito } from '../../../institucion-tipo-carrito/entity/tipo-carrito.entity'; @ViewEntity({ expression: (dataSource: DataSource) => dataSource .createQueryBuilder() .select('p.id_prestamo', 'id_prestamo') - .addSelect('p.activo', 'activo_prestamo') + .addSelect('p.activo', 'activo') .addSelect('p.cancelado_operador', 'cancelado_operador') .addSelect('p.cancelado_usuario', 'cancelado_usuario') .addSelect('p.fecha_entrega', 'fecha_entrega') @@ -32,19 +30,16 @@ import { TipoCarrito } from '../../../institucion-tipo-carrito/entity/tipo-carri .addSelect('m.id_institucion', 'id_institucion') .from(Prestamo, 'p') .innerJoin(Equipo, 'e', 'e.id_equipo = p.id_equipo') - .innerJoin(Operador, 'oe', 'oe.id_operador = p.id_operador_entrega') - .innerJoin(Operador, 'or', 'or.id_operador = p.id_operador_regreso') .innerJoin(Carrito, 'c', 'c.id_carrito = e.id_carrito') .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'), + .innerJoin(Modulo, 'm', 'm.id_modulo = c.id_modulo'), }) export class InformacionPrestamoView { @ViewColumn() id_prestamo: number; @ViewColumn() - activo_prestamo: boolean; + activo: boolean; @ViewColumn() cancelado_operador: boolean; diff --git a/src/prestamo/prestamo.controller.ts b/src/prestamo/prestamo.controller.ts index 6c4fdbc..f39ff3b 100644 --- a/src/prestamo/prestamo.controller.ts +++ b/src/prestamo/prestamo.controller.ts @@ -382,6 +382,9 @@ export class PrestamoController { this.validarUsuarioService.validarUsuario(usuario); return this.prestamoService.findByIdUsuario(parseInt(query.id_usuario)); + // return this.prestamoService.findFullInfoPrestamoByIdUsuario( + // parseInt(query.id_usuario), + // ); } @Serealize(PrestamoEquipoOutputDto) @@ -413,6 +416,10 @@ export class PrestamoController { parseInt(query.id_institucion), query.numero_inventario, ); + // return this.prestamoService.findFullInfoPrestamoByNumeroInventario( + // parseInt(query.id_institucion), + // query.numero_inventario, + // ); } @Put('regresar-id-prestamo') @@ -425,7 +432,9 @@ export class PrestamoController { ejemplo: { value: { id_prestamo: 1, + id_status: 1, _descripcion: '', + _motivo: '', _id_institucion_infraccion: 603, }, }, @@ -438,6 +447,8 @@ export class PrestamoController { return this.prestamoService.regresarIdPrestamo( operador, body.id_prestamo, + body.id_status, + body.motivo, body.descripcion, body.id_institucion_infraccion, ); @@ -453,7 +464,9 @@ export class PrestamoController { ejemplo: { value: { numero_inventario: '', + id_status: 1, _descripcion: '', + _motivo: '', _id_institucion_infraccion: 603, }, }, @@ -469,6 +482,8 @@ export class PrestamoController { return this.prestamoService.regresarNumeroInventario( operador, body.numero_inventario, + body.id_status, + body.motivo, body.descripcion, body.id_institucion_infraccion, ); diff --git a/src/prestamo/prestamo.module.ts b/src/prestamo/prestamo.module.ts index c13b19b..7c069bc 100644 --- a/src/prestamo/prestamo.module.ts +++ b/src/prestamo/prestamo.module.ts @@ -6,6 +6,8 @@ import { PrestamoController } from './prestamo.controller'; import { PrestamoService } from './prestamo.service'; import { Prestamo } from './entity/prestamo.entity'; import { FullInformacionPrestamoView } from './entity/views/full-informacion-prestamo.view'; +import { FullInformacionPrestamoEquipoView } from './entity/views/full-informacion-prestamo-equipo.view'; +import { FullInformacionPrestamoUsuarioView } from './entity/views/full-informacion-prestamo-usuario.view'; import { InformacionPrestamoView } from './entity/views/informacion-prestamo.view'; import { EquipoModule } from '../equipo/equipo.module'; import { InstitucionModule } from '../institucion/institucion.module'; @@ -35,6 +37,8 @@ import { ValidarUsuarioModule } from '../validar-usuario/validar-usuario.module' TypeOrmModule.forFeature([ Prestamo, FullInformacionPrestamoView, + FullInformacionPrestamoEquipoView, + FullInformacionPrestamoUsuarioView, InformacionPrestamoView, ]), TipoUsuarioModule, diff --git a/src/prestamo/prestamo.service.ts b/src/prestamo/prestamo.service.ts index 92c273d..769f21a 100644 --- a/src/prestamo/prestamo.service.ts +++ b/src/prestamo/prestamo.service.ts @@ -17,6 +17,10 @@ import { Modulo } from '../modulo/entity/modulo.entity'; import { Operador } from '../operador/entity/operador.entity'; import { Prestamo } from './entity/prestamo.entity'; import { Usuario } from '../usuario/entity/usuario.entity'; +import { FullInformacionPrestamoView } from './entity/views/full-informacion-prestamo.view'; +import { FullInformacionPrestamoEquipoView } from './entity/views/full-informacion-prestamo-equipo.view'; +import { FullInformacionPrestamoUsuarioView } from './entity/views/full-informacion-prestamo-usuario.view'; +import { InformacionPrestamoView } from './entity/views/informacion-prestamo.view'; import { EquipoService } from '../equipo/equipo.service'; import { InstitucionService } from '../institucion/institucion.service'; import { InstitucionDiaService } from '../institucion-dia/institucion-dia.service'; @@ -33,6 +37,14 @@ import { UsuarioService } from '../usuario/usuario.service'; export class PrestamoService { constructor( @InjectRepository(Prestamo) private repository: Repository, + @InjectRepository(FullInformacionPrestamoView) + private fullInformacionPrestamoView: Repository, + @InjectRepository(FullInformacionPrestamoEquipoView) + private fullInformacionPrestamoEquipoView: Repository, + @InjectRepository(FullInformacionPrestamoUsuarioView) + private fullInformacionPrestamoUsuarioView: Repository, + @InjectRepository(InformacionPrestamoView) + private informacionPrestamoView: Repository, private appGateway: AppGateway, private equipoService: EquipoService, private institucionService: InstitucionService, @@ -65,6 +77,8 @@ export class PrestamoService { .update(prestamo.equipo, null, 6, operadorRegreso, motivo) .then((_) => this.repository.save(prestamo)) .then((_) => { + console.log(prestamo.usuario.id_usuario); + console.log(operadorRegreso.institucion.id_institucion); this.appGateway.actualizarUsuario(prestamo.usuario.id_usuario); this.appGateway.actualizarOperador( operadorRegreso.institucion.id_institucion, @@ -95,6 +109,8 @@ export class PrestamoService { prestamo.equipo.carrito.modulo.institucion.id_institucion, ); this.appGateway.actualizarUsuario(prestamo.usuario.id_usuario); + console.log(prestamo.usuario.id_usuario); + console.log(prestamo.equipo.carrito.modulo.institucion.id_institucion); return { message: 'Se canceló correctamente este préstamo.', }; @@ -136,34 +152,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) => { @@ -563,6 +579,156 @@ export class PrestamoService { }); } + // findInfoPrestamoById(id_prestamo: number) { + // return this.informacionPrestamoView + // .findOne({ where: { id_prestamo } }) + // .then((infoPrestamo) => { + // if (!infoPrestamo) + // throw new NotFoundException('No existe este id préstamo.'); + // return this.repository.create({ + // id_prestamo: infoPrestamo.id_prestamo, + // activo: infoPrestamo.activo, + // cancelado_operador: infoPrestamo.cancelado_operador, + // cancelado_usuario: infoPrestamo.cancelado_usuario, + // fecha_entrega: infoPrestamo.fecha_entrega, + // fecha_inicio: infoPrestamo.fecha_inicio, + // hora_inicio: infoPrestamo.hora_inicio, + // hora_fin: infoPrestamo.hora_fin, + // hora_max_recoger: infoPrestamo.hora_max_recoger, + // equipo: { + // id_equipo: infoPrestamo.id_equipo, + // numero_inventario: infoPrestamo.numero_inventario, + // carrito: { + // id_carrito: infoPrestamo.id_carrito, + // modulo: { + // id_modulo: infoPrestamo.id_modulo, + // institucion: { id_institucion: infoPrestamo.id_institucion }, + // }, + // tipoCarrito: { id_tipo_carrito: infoPrestamo.id_tipo_carrito }, + // }, + // status: { id_status: infoPrestamo.id_status }, + // }, + // operadorEntrega: { id_operador: infoPrestamo.id_operador_entrega }, + // operadorRegreso: { id_operador: infoPrestamo.id_operador_regreso }, + // usuario: { id_usuario: infoPrestamo.id_usuario }, + // }); + // }); + // } + + // findFullInfoPrestamoByIdUsuario(id_usuario: number) { + // return this.fullInformacionPrestamoUsuarioView + // .findOne({ where: { activo: 1, id_usuario } }) + // .then((infoPrestamo) => { + // if (!infoPrestamo) + // throw new NotFoundException( + // 'Este usuario no tiene un préstamo activo.', + // ); + // return this.repository.create({ + // id_prestamo: infoPrestamo.id_prestamo, + // activo: infoPrestamo.activo === 1, + // cancelado_operador: infoPrestamo.cancelado_operador, + // cancelado_usuario: infoPrestamo.cancelado_usuario, + // fecha_entrega: infoPrestamo.fecha_entrega, + // fecha_inicio: infoPrestamo.fecha_inicio, + // hora_inicio: infoPrestamo.hora_inicio, + // hora_fin: infoPrestamo.hora_fin, + // hora_max_recoger: infoPrestamo.hora_max_recoger, + // equipo: { + // id_equipo: infoPrestamo.id_equipo, + // equipo: infoPrestamo.equipo, + // numero_inventario: infoPrestamo.numero_inventario, + // numero_serie: infoPrestamo.numero_serie, + // carrito: { + // id_carrito: infoPrestamo.id_carrito, + // carrito: infoPrestamo.carrito, + // modulo: { + // id_modulo: infoPrestamo.id_modulo, + // modulo: infoPrestamo.modulo, + // institucion: { + // id_institucion: infoPrestamo.id_institucion, + // institucion: infoPrestamo.institucion, + // }, + // }, + // tipoCarrito: { + // id_tipo_carrito: infoPrestamo.id_tipo_carrito, + // tipo_carrito: infoPrestamo.tipo_carrito, + // }, + // }, + // status: { + // id_status: infoPrestamo.id_status, + // status: infoPrestamo.status, + // }, + // }, + // operadorEntrega: { + // id_operador: infoPrestamo.id_operador_entrega, + // operador: infoPrestamo.operador_entrega, + // }, + // operadorRegreso: { + // id_operador: infoPrestamo.id_operador_regreso, + // operador: infoPrestamo.operador_regreso, + // }, + // usuario: { id_usuario: infoPrestamo.id_usuario }, + // }); + // }); + // } + + // async findFullInfoPrestamoByNumeroInventario( + // id_institucion: number | Institucion, + // numero_inventario: string, + // ) { + // const institucion = + // typeof id_institucion === 'number' + // ? await this.institucionService.findInfoInstitucionById(id_institucion) + // : id_institucion; + + // return this.equipoService + // .findInfoEquipoByNumeroInventario(institucion, numero_inventario) + // .then((equipo) => + // this.fullInformacionPrestamoEquipoView.findOne({ + // where: { activo: 1, id_equipo: equipo.id_equipo }, + // }), + // ) + // .then((infoPrestamo) => { + // if (!infoPrestamo) + // throw new NotFoundException( + // 'No existe un préstamo activo con este equipo de cómputo.', + // ); + // return this.repository.create({ + // id_prestamo: infoPrestamo.id_prestamo, + // activo: infoPrestamo.activo === 1, + // cancelado_operador: infoPrestamo.cancelado_operador, + // cancelado_usuario: infoPrestamo.cancelado_usuario, + // fecha_entrega: infoPrestamo.fecha_entrega, + // fecha_inicio: infoPrestamo.fecha_inicio, + // hora_inicio: infoPrestamo.hora_inicio, + // hora_fin: infoPrestamo.hora_fin, + // hora_max_recoger: infoPrestamo.hora_max_recoger, + // equipo: { + // id_equipo: infoPrestamo.id_equipo, + // carrito: { + // modulo: { + // institucion: { id_institucion: infoPrestamo.id_institucion }, + // }, + // }, + // }, + // operadorEntrega: { + // id_operador: infoPrestamo.id_operador_entrega, + // operador: infoPrestamo.operador_entrega, + // }, + // operadorRegreso: { + // id_operador: infoPrestamo.id_operador_regreso, + // operador: infoPrestamo.operador_regreso, + // }, + // usuario: { + // id_usuario: infoPrestamo.id_usuario, + // usuario: infoPrestamo.usuario, + // nombre: infoPrestamo.nombre, + // tipoUsuario: { id_tipo_usuario: infoPrestamo.id_tipo_usuario }, + // }, + // }); + // }); + // } + private mensajeNoPoderPedir() { return 'No puedes pedir equipos de cómputo porque:'; } @@ -570,6 +736,8 @@ export class PrestamoService { async regresar( prestamo: Prestamo, operadorRegreso: Operador, + id_status: number, + motivo?: string, descripcion?: string, id_institucion_infraccion?: number, ) { @@ -617,7 +785,15 @@ export class PrestamoService { ); return this.repository .save(prestamo) - .then((_) => this.equipoService.update(prestamo.equipo, null, 1)) + .then((_) => + this.equipoService.update( + prestamo.equipo, + null, + id_status, + operadorRegreso, + motivo, + ), + ) .then((_) => { this.appGateway.actualizarUsuario(prestamo.usuario.id_usuario); this.appGateway.actualizarOperador( @@ -632,17 +808,28 @@ export class PrestamoService { regresarIdPrestamo( operador: Operador, id_prestamo: number, + id_status: number, + motivo: string, descripcion?: string, id_institucion_infraccion?: number, ) { return this.findById(id_prestamo).then((prestamo) => - this.regresar(prestamo, operador, descripcion, id_institucion_infraccion), + this.regresar( + prestamo, + operador, + id_status, + motivo, + descripcion, + id_institucion_infraccion, + ), ); } regresarNumeroInventario( operador: Operador, numero_inventario: string, + id_status: number, + motivo: string, descripcion?: string, id_institucion_infraccion?: number, ) { @@ -650,7 +837,14 @@ export class PrestamoService { operador.institucion, numero_inventario, ).then((prestamo) => - this.regresar(prestamo, operador, descripcion, id_institucion_infraccion), + this.regresar( + prestamo, + operador, + id_status, + motivo, + descripcion, + id_institucion_infraccion, + ), ); }