From 4e61a200c262319924e6fb6cf1c5204e4ec8e3fb Mon Sep 17 00:00:00 2001 From: lemuel Date: Fri, 10 Feb 2023 12:39:23 -0600 Subject: [PATCH] list para crear cosas --- .../entity/institucion-usuario.entity.ts | 8 ++--- src/prestamo/entity/prestamo.entity.ts | 18 +++++----- .../entity/views/informacion-prestamo.view.ts | 6 +++- src/prestamo/prestamo.controller.ts | 10 ++++++ src/prestamo/prestamo.service.ts | 36 +++++++++++++++++++ 5 files changed, 64 insertions(+), 14 deletions(-) diff --git a/src/institucion-usuario/entity/institucion-usuario.entity.ts b/src/institucion-usuario/entity/institucion-usuario.entity.ts index 64e28ae..9550bc6 100644 --- a/src/institucion-usuario/entity/institucion-usuario.entity.ts +++ b/src/institucion-usuario/entity/institucion-usuario.entity.ts @@ -3,11 +3,11 @@ import { Entity, JoinColumn, ManyToOne, - // OneToMany, + OneToMany, PrimaryGeneratedColumn, } from 'typeorm'; import { InstitucionCarrera } from '../../institucion-carrera/entity/institucion-carrera.entity'; -// import { Prestamo } from '../../prestamo/entity/prestamo.entity'; +import { Prestamo } from '../../prestamo/entity/prestamo.entity'; import { Usuario } from '../../usuario/entity/usuario.entity'; @Entity() @@ -39,6 +39,6 @@ export class InstitucionUsuario { @JoinColumn({ name: 'id_usuario' }) usuario: Usuario; - // @OneToMany(() => Prestamo, (prestamo) => prestamo.institucionUsuario) - // prestamos: Prestamo[]; + @OneToMany(() => Prestamo, (prestamo) => prestamo.institucionUsuario) + prestamos: Prestamo[]; } diff --git a/src/prestamo/entity/prestamo.entity.ts b/src/prestamo/entity/prestamo.entity.ts index 249a7a8..9f26840 100644 --- a/src/prestamo/entity/prestamo.entity.ts +++ b/src/prestamo/entity/prestamo.entity.ts @@ -47,8 +47,8 @@ export class Prestamo { @Column({ type: Number, nullable: true }) id_equipo: number; - // @Column({ type: Number, nullable: true }) - // id_institucion_usuario: number; + @Column({ type: Number, nullable: true }) + id_institucion_usuario: number; @Column({ type: Number, nullable: true, default: 1 }) id_operador_entrega: number; @@ -63,13 +63,13 @@ export class Prestamo { @JoinColumn({ name: 'id_equipo' }) equipo: Equipo; - // @ManyToOne( - // () => InstitucionUsuario, - // (institucionUsuario) => institucionUsuario.prestamos, - // { eager: true }, - // ) - // @JoinColumn({ name: 'id_institucion_usuario' }) - // institucionUsuario: InstitucionUsuario; + @ManyToOne( + () => InstitucionUsuario, + (institucionUsuario) => institucionUsuario.prestamos, + { eager: true }, + ) + @JoinColumn({ name: 'id_institucion_usuario' }) + institucionUsuario: InstitucionUsuario; @ManyToOne( () => Operador, diff --git a/src/prestamo/entity/views/informacion-prestamo.view.ts b/src/prestamo/entity/views/informacion-prestamo.view.ts index af0f4ae..479987c 100644 --- a/src/prestamo/entity/views/informacion-prestamo.view.ts +++ b/src/prestamo/entity/views/informacion-prestamo.view.ts @@ -1,8 +1,8 @@ import { DataSource, ViewEntity, ViewColumn } from 'typeorm'; 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 { Prestamo } from '../prestamo.entity'; import { Status } from '../../../status/entity/status.entity'; import { TipoCarrito } from '../../../institucion-tipo-carrito/entity/tipo-carrito.entity'; @@ -20,6 +20,7 @@ import { TipoCarrito } from '../../../institucion-tipo-carrito/entity/tipo-carri .addSelect('p.hora_inicio', 'hora_inicio') .addSelect('p.hora_max_recoger', 'hora_max_recoger') .addSelect('p.id_equipo', 'id_equipo') + .addSelect('p.id_institucion_usuario', 'id_institucion_usuario') .addSelect('p.id_operador_entrega', 'id_operador_entrega') .addSelect('p.id_operador_regreso', 'id_operador_regreso') .addSelect('p.id_usuario', 'id_usuario') @@ -83,6 +84,9 @@ export class InformacionPrestamoView { @ViewColumn() id_institucion: number; + @ViewColumn() + id_institucion_usuario: number; + @ViewColumn() id_modulo: number; diff --git a/src/prestamo/prestamo.controller.ts b/src/prestamo/prestamo.controller.ts index 36ce3b2..93c44b1 100644 --- a/src/prestamo/prestamo.controller.ts +++ b/src/prestamo/prestamo.controller.ts @@ -629,4 +629,14 @@ export class PrestamoController { this.validarUsuarioService.validarOperador(operador); return this.prestamoService.findAll(operador, query); } + + @Serealize(MessageOutputDto) + @Post('reparar') + @UseGuards(AuthGuard('jwt')) + reparar(@Request() req) { + const superAdmin: Operador = req.user.operador; + + this.validarUsuarioService.validarSuperAdmin(superAdmin); + return this.prestamoService.reparar(); + } } diff --git a/src/prestamo/prestamo.service.ts b/src/prestamo/prestamo.service.ts index 35eb8c0..976365a 100644 --- a/src/prestamo/prestamo.service.ts +++ b/src/prestamo/prestamo.service.ts @@ -13,6 +13,7 @@ import { Between, FindManyOptions, FindOptionsWhere, + IsNull, LessThanOrEqual, Like, MoreThanOrEqual, @@ -952,4 +953,39 @@ export class PrestamoService { usuario: { id_usuario: infoPrestamo.id_usuario }, }); } + + reparar() { + return this.informacionPrestamoView + .find({ where: { id_institucion_usuario: IsNull() } }) + .then(async (infoPrestamos) => { + for (let i = 0; i < infoPrestamos.length; i++) { + const prestamo = this.viewToPrestamo(infoPrestamos[i]); + const institucionesUsuario = + await this.institucionUsuarioService.findAllByIdUsuarioIdInstitucion( + prestamo.usuario, + prestamo.equipo.carrito.modulo.institucion, + ); + + if (institucionesUsuario.length === 1) { + prestamo.institucionUsuario = institucionesUsuario[0]; + await this.repository.save(prestamo); + } else if ( + prestamo.equipo.carrito.tipoCarrito.id_tipo_carrito === 2 + ) { + console.log(prestamo); + console.log(institucionesUsuario); + console.log( + '++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++', + ); + } else + for (let j = 0; j < institucionesUsuario.length; j++) + if (institucionesUsuario[j].activo) { + prestamo.institucionUsuario = institucionesUsuario[j]; + await this.repository.save(prestamo); + break; + } + } + return { message: 'Terminó' }; + }); + } }