From 85cc2a4a667374491e1e73a0e339e0d84ef91127 Mon Sep 17 00:00:00 2001 From: xXpuma99Xx <51341582+xXpuma99Xx@users.noreply.github.com> Date: Sun, 6 Nov 2022 23:49:02 -0600 Subject: [PATCH] no mas repetidos --- src/prestamo/entity/prestamo.entity.ts | 3 ++ .../entity/views/informacion-prestamo.view.ts | 4 ++ src/prestamo/prestamo.service.ts | 39 ++++++++++++++++--- 3 files changed, 41 insertions(+), 5 deletions(-) diff --git a/src/prestamo/entity/prestamo.entity.ts b/src/prestamo/entity/prestamo.entity.ts index c013682..6a35bd9 100644 --- a/src/prestamo/entity/prestamo.entity.ts +++ b/src/prestamo/entity/prestamo.entity.ts @@ -22,6 +22,9 @@ export class Prestamo { @Column({ type: Boolean, nullable: false, default: false }) cancelado_operador: boolean; + @Column({ type: Boolean, nullable: false, default: false }) + cancelado_repeticion: boolean; + @Column({ type: Boolean, nullable: false, default: false }) cancelado_usuario: boolean; diff --git a/src/prestamo/entity/views/informacion-prestamo.view.ts b/src/prestamo/entity/views/informacion-prestamo.view.ts index 0d8e6d8..af0f4ae 100644 --- a/src/prestamo/entity/views/informacion-prestamo.view.ts +++ b/src/prestamo/entity/views/informacion-prestamo.view.ts @@ -24,6 +24,7 @@ import { TipoCarrito } from '../../../institucion-tipo-carrito/entity/tipo-carri .addSelect('p.id_operador_regreso', 'id_operador_regreso') .addSelect('p.id_usuario', 'id_usuario') .addSelect('e.equipo', 'equipo') + .addSelect('e.u', 'u') .addSelect('e.id_carrito', 'id_carrito') .addSelect('e.id_status', 'id_status') .addSelect('e.numero_inventario', 'numero_inventario') @@ -105,4 +106,7 @@ export class InformacionPrestamoView { @ViewColumn() tipo_carrito: string; + + @ViewColumn() + u: number; } diff --git a/src/prestamo/prestamo.service.ts b/src/prestamo/prestamo.service.ts index bd83d0b..137443a 100644 --- a/src/prestamo/prestamo.service.ts +++ b/src/prestamo/prestamo.service.ts @@ -258,13 +258,37 @@ export class PrestamoService { async desactivarPrestamos() { const ahora = moment(); - // Busco todos los préstamos activos y que esten apartadoss + // Busco todos los préstamos activos y cuyos equipos no esten asignados + // al usuario del préstamo return this.informacionPrestamoView - .find({ where: { activo: 1, id_status: 2 } }) - .then(async (infoPrestamo) => { + .createQueryBuilder('p') + .where('activo = 1 AND id_usuario != u') + .getMany() + .then(async (infoPrestamos) => { // Recorro el array - for (let i = 0; i < infoPrestamo.length; i++) { - const prestamo = this.viewToPrestamo(infoPrestamo[i]); + for (let i = 0; i < infoPrestamos.length; i++) { + const prestamo = this.viewToPrestamo(infoPrestamos[i]); + + prestamo.activo = false; + prestamo.cancelado_repeticion = true; + // Guardo los cambios del préstamo + await this.repository.save(prestamo).then((_) => { + // Actualizo las interfaces del los usuarios + this.appGateway.actualizarOperador( + prestamo.equipo.carrito.modulo.institucion.id_institucion, + ); + this.appGateway.actualizarUsuario(prestamo.usuario.id_usuario); + }); + } + // Busco todos los préstamos activos y que esten apartadoss + return this.informacionPrestamoView.find({ + where: { activo: 1, id_status: 2 }, + }); + }) + .then(async (infoPrestamos) => { + // Recorro el array + for (let i = 0; i < infoPrestamos.length; i++) { + const prestamo = this.viewToPrestamo(infoPrestamos[i]); // Si la resta ahora - hora_max_recoger es mayor a 0 significa que ya pasó // el tiempo limite para recoger el equipo de cómputo @@ -797,6 +821,10 @@ export class PrestamoService { ); if (id_institucion_infraccion && !descripcion) throw new ConflictException('No se mandó la descripción de lo ocurrido.'); + if (prestamo.usuario.id_usuario !== prestamo.equipo.u) + throw new ConflictException( + 'Este equipo fue asignado 2 veces y este es el préstamo incorrecto, espere unos segundos y se desactivará este préstamo.', + ); prestamo.activo = false; prestamo.fecha_entrega = ahora.toDate(); prestamo.operadorRegreso = operadorRegreso; @@ -975,6 +1003,7 @@ export class PrestamoService { id_equipo: infoPrestamo.id_equipo, equipo: infoPrestamo.equipo, numero_inventario: infoPrestamo.numero_inventario, + u: infoPrestamo.u, carrito: { id_carrito: infoPrestamo.id_carrito, carrito: infoPrestamo.carrito,