paso a institucion usuario
This commit is contained in:
parent
4a941e4757
commit
632c0c4442
@ -32,7 +32,9 @@ export class CronService {
|
||||
this.appGateway.actualizarOperador(
|
||||
prestamos[i].equipo.carrito.modulo.institucion.id_institucion,
|
||||
);
|
||||
this.appGateway.actualizarUsuario(prestamos[i].usuario.id_usuario);
|
||||
this.appGateway.actualizarUsuario(
|
||||
prestamos[i].institucionUsuario.usuario.id_usuario,
|
||||
);
|
||||
});
|
||||
}
|
||||
});
|
||||
@ -56,7 +58,7 @@ export class CronService {
|
||||
prestamos[i].equipo.carrito.modulo.institucion.id_institucion,
|
||||
);
|
||||
this.appGateway.actualizarUsuario(
|
||||
prestamos[i].usuario.id_usuario,
|
||||
prestamos[i].institucionUsuario.usuario.id_usuario,
|
||||
);
|
||||
});
|
||||
}
|
||||
@ -88,7 +90,7 @@ export class CronService {
|
||||
// Quitamos multas en institución usuario
|
||||
this.institucionUsuarioService.updateMulta(
|
||||
multas[i].institucionInfraccion.institucion,
|
||||
multas[i].prestamo.usuario,
|
||||
multas[i].prestamo.institucionUsuario.usuario,
|
||||
false,
|
||||
),
|
||||
);
|
||||
|
@ -0,0 +1,16 @@
|
||||
import { Expose, Type } from 'class-transformer';
|
||||
import { InstitucionCarreaOutputDto } from '../../../institucion-carrera/dto/output/institucion-carrera.dto';
|
||||
import { UsuariosOutputDto } from '../../../usuario/dto/output/usuarios.dto';
|
||||
|
||||
export class UsuarioInstitucionCarreraMinOutputDto {
|
||||
@Expose()
|
||||
id_institucion_usuario;
|
||||
|
||||
@Expose()
|
||||
@Type(() => InstitucionCarreaOutputDto)
|
||||
institucionCarrera;
|
||||
|
||||
@Expose()
|
||||
@Type(() => UsuariosOutputDto)
|
||||
usuario;
|
||||
}
|
@ -2,6 +2,7 @@ import { DataSource, ViewEntity, ViewColumn } from 'typeorm';
|
||||
import { Infraccion } from '../../../institucion-infraccion/entity/infraccion.entity';
|
||||
import { Institucion } from '../../../institucion/entity/institucion.entity';
|
||||
import { InstitucionInfraccion } from '../../../institucion-infraccion/entity/institucion-infraccion.entity';
|
||||
import { InstitucionUsuario } from '../../../institucion-usuario/entity/institucion-usuario.entity';
|
||||
import { Multa } from '../multa.entity';
|
||||
import { Operador } from '../../../operador/entity/operador.entity';
|
||||
import { Prestamo } from '../../../prestamo/entity/prestamo.entity';
|
||||
@ -24,7 +25,8 @@ import { Usuario } from '../../../usuario/entity/usuario.entity';
|
||||
.addSelect('ii.id_institucion', 'id_institucion')
|
||||
.addSelect('om.operador', 'operador')
|
||||
.addSelect('p.id_equipo', 'id_equipo')
|
||||
.addSelect('p.id_usuario', 'id_usuario')
|
||||
.addSelect('p.id_institucion_usuario', 'id_institucion_usuario')
|
||||
.addSelect('iu.id_usuario', 'id_usuario')
|
||||
.addSelect('inf.infraccion', 'infraccion')
|
||||
.addSelect('i.institucion', 'institucion')
|
||||
.addSelect('u.usuario', 'usuario')
|
||||
@ -38,8 +40,13 @@ import { Usuario } from '../../../usuario/entity/usuario.entity';
|
||||
.innerJoin(Operador, 'om', 'om.id_operador = mu.id_operador')
|
||||
.innerJoin(Prestamo, 'p', 'p.id_prestamo = mu.id_prestamo')
|
||||
.innerJoin(Infraccion, 'inf', 'inf.id_infraccion = ii.id_infraccion')
|
||||
.innerJoin(Usuario, 'u', 'u.id_usuario = p.id_usuario')
|
||||
.innerJoin(Institucion, 'i', 'i.id_institucion = ii.id_institucion'),
|
||||
.innerJoin(
|
||||
InstitucionUsuario,
|
||||
'iu',
|
||||
'iu.id_institucion_usuario = p.id_institucion_usuario',
|
||||
)
|
||||
.innerJoin(Institucion, 'i', 'i.id_institucion = ii.id_institucion')
|
||||
.innerJoin(Usuario, 'u', 'u.id_usuario = iu.id_usuario'),
|
||||
})
|
||||
export class FullInformacionMultaView {
|
||||
@ViewColumn()
|
||||
@ -60,15 +67,18 @@ export class FullInformacionMultaView {
|
||||
@ViewColumn()
|
||||
id_equipo: number;
|
||||
|
||||
@ViewColumn()
|
||||
id_institucion: number;
|
||||
|
||||
@ViewColumn()
|
||||
id_infraccion: number;
|
||||
|
||||
@ViewColumn()
|
||||
id_institucion: number;
|
||||
|
||||
@ViewColumn()
|
||||
id_institucion_infraccion: number;
|
||||
|
||||
@ViewColumn()
|
||||
id_institucion_usuario: number;
|
||||
|
||||
@ViewColumn()
|
||||
id_operador: number;
|
||||
|
||||
|
@ -1,8 +1,9 @@
|
||||
import { DataSource, ViewEntity, ViewColumn } from 'typeorm';
|
||||
import { InstitucionInfraccion } from '../../../institucion-infraccion/entity/institucion-infraccion.entity';
|
||||
import { InstitucionUsuario } from '../../../institucion-usuario/entity/institucion-usuario.entity';
|
||||
import { Multa } from '../multa.entity';
|
||||
import { Prestamo } from '../../../prestamo/entity/prestamo.entity';
|
||||
import { Operador } from '../../../operador/entity/operador.entity';
|
||||
import { Prestamo } from '../../../prestamo/entity/prestamo.entity';
|
||||
|
||||
@ViewEntity({
|
||||
expression: (dataSource: DataSource) =>
|
||||
@ -17,7 +18,8 @@ import { Operador } from '../../../operador/entity/operador.entity';
|
||||
.addSelect('mu.retraso', 'retraso')
|
||||
.addSelect('ii.id_infraccion', 'id_infraccion')
|
||||
.addSelect('ii.id_institucion', 'id_institucion')
|
||||
.addSelect('p.id_usuario', 'id_usuario')
|
||||
.addSelect('p.id_institucion_usuario', 'id_institucion_usuario')
|
||||
.addSelect('iu.id_usuario', 'id_usuario')
|
||||
.from(Multa, 'mu')
|
||||
.innerJoin(
|
||||
InstitucionInfraccion,
|
||||
@ -25,7 +27,12 @@ import { Operador } from '../../../operador/entity/operador.entity';
|
||||
'ii.id_institucion_infraccion = mu.id_institucion_infraccion',
|
||||
)
|
||||
.innerJoin(Prestamo, 'p', 'p.id_prestamo = mu.id_prestamo')
|
||||
.innerJoin(Operador, 'om', 'om.id_operador = mu.id_operador'),
|
||||
.innerJoin(Operador, 'om', 'om.id_operador = mu.id_operador')
|
||||
.innerJoin(
|
||||
InstitucionUsuario,
|
||||
'iu',
|
||||
'iu.id_institucion_usuario = p.id_institucion_usuario',
|
||||
),
|
||||
})
|
||||
export class InformacionMultaView {
|
||||
@ViewColumn()
|
||||
@ -46,6 +53,9 @@ export class InformacionMultaView {
|
||||
@ViewColumn()
|
||||
id_institucion_infraccion: number;
|
||||
|
||||
@ViewColumn()
|
||||
id_institucion_usuario: number;
|
||||
|
||||
@ViewColumn()
|
||||
id_operador: number;
|
||||
|
||||
|
@ -89,7 +89,7 @@ export class MultaService {
|
||||
// Multamos al usuario en todas las carreras a las que pertenece en esa institución
|
||||
this.institucionUsuarioService.updateMulta(
|
||||
operadorMulta.institucion,
|
||||
prestamo.usuario,
|
||||
prestamo.institucionUsuario.usuario,
|
||||
true,
|
||||
),
|
||||
);
|
||||
@ -159,7 +159,9 @@ export class MultaService {
|
||||
operadorMulta: { id_operador: infoMultas[i].id_operador },
|
||||
prestamo: {
|
||||
id_prestamo: infoMultas[i].id_prestamo,
|
||||
usuario: { id_usuario: infoMultas[i].id_usuario },
|
||||
institucionUsuario: {
|
||||
usuario: { id_usuario: infoMultas[i].id_usuario },
|
||||
},
|
||||
},
|
||||
}),
|
||||
);
|
||||
@ -232,13 +234,17 @@ export class MultaService {
|
||||
return this.repository.find({
|
||||
join: {
|
||||
alias: 'mu',
|
||||
innerJoin: { p: 'mu.prestamo', u: 'p.usuario' },
|
||||
innerJoin: {
|
||||
p: 'mu.prestamo',
|
||||
iu: 'p.institucionUsuario',
|
||||
u: 'iu.usuario',
|
||||
},
|
||||
innerJoinAndSelect: {
|
||||
ii: 'mu.institucionInfraccion',
|
||||
i: 'ii.institucion',
|
||||
},
|
||||
},
|
||||
where: { activo: true, prestamo: { usuario } },
|
||||
where: { activo: true, prestamo: { institucionUsuario: { usuario } } },
|
||||
});
|
||||
}
|
||||
|
||||
@ -267,10 +273,12 @@ export class MultaService {
|
||||
},
|
||||
prestamo: {
|
||||
id_prestamo: infoMulta.id_prestamo,
|
||||
usuario: {
|
||||
id_usuario: infoMulta.id_usuario,
|
||||
usuario: infoMulta.usuario,
|
||||
nombre: infoMulta.nombre,
|
||||
institucionUsuario: {
|
||||
usuario: {
|
||||
id_usuario: infoMulta.id_usuario,
|
||||
usuario: infoMulta.usuario,
|
||||
nombre: infoMulta.nombre,
|
||||
},
|
||||
},
|
||||
},
|
||||
});
|
||||
@ -328,7 +336,7 @@ export class MultaService {
|
||||
// Multamos al usuario en todas las carreras a las que pertenece en esa institución
|
||||
this.institucionUsuarioService.updateMulta(
|
||||
operador.institucion,
|
||||
prestamo.usuario,
|
||||
prestamo.institucionUsuario.usuario,
|
||||
true,
|
||||
),
|
||||
);
|
||||
|
@ -4,6 +4,9 @@ export class PedirDto {
|
||||
@IsInt()
|
||||
id_modulo: number;
|
||||
|
||||
@IsInt()
|
||||
id_institucion_usuario: number;
|
||||
|
||||
@IsInt()
|
||||
id_tipo_carrito: number;
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
import { Expose, Type } from 'class-transformer';
|
||||
import { EquiposOutputDto } from '../../../equipo/dto/output/equipos.dto';
|
||||
import { UsuariosOutputDto } from '../../../usuario/dto/output/usuarios.dto';
|
||||
import { UsuarioInstitucionCarreraMinOutputDto } from '../../../institucion-usuario/dto/output/usuario-institucion-carrera-min.dto';
|
||||
|
||||
export class ActivosOutputDto {
|
||||
@Expose()
|
||||
@ -23,6 +23,6 @@ export class ActivosOutputDto {
|
||||
equipo;
|
||||
|
||||
@Expose()
|
||||
@Type(() => UsuariosOutputDto)
|
||||
usuario;
|
||||
@Type(() => UsuarioInstitucionCarreraMinOutputDto)
|
||||
institucionUsuario;
|
||||
}
|
||||
|
@ -1,5 +1,5 @@
|
||||
import { Expose, Type } from 'class-transformer';
|
||||
import { UsuariosOutputDto } from '../../../usuario/dto/output/usuarios.dto';
|
||||
import { UsuarioInstitucionCarreraMinOutputDto } from '../../../institucion-usuario/dto/output/usuario-institucion-carrera-min.dto';
|
||||
|
||||
export class PrestamoEquipoMinOutputDto {
|
||||
@Expose()
|
||||
@ -18,6 +18,6 @@ export class PrestamoEquipoMinOutputDto {
|
||||
hora_inicio;
|
||||
|
||||
@Expose()
|
||||
@Type(() => UsuariosOutputDto)
|
||||
usuario;
|
||||
@Type(() => UsuarioInstitucionCarreraMinOutputDto)
|
||||
institucionUsuario;
|
||||
}
|
||||
|
@ -1,6 +1,6 @@
|
||||
import { Expose, Type } from 'class-transformer';
|
||||
import { EquipoMinOutputDto } from '../../../equipo/dto/output/equipo-min.dto';
|
||||
import { UsuariosOutputDto } from '../../../usuario/dto/output/usuarios.dto';
|
||||
import { UsuarioInstitucionCarreraMinOutputDto } from '../../../institucion-usuario/dto/output/usuario-institucion-carrera-min.dto';
|
||||
|
||||
export class PrestamoEquipoOutputDto {
|
||||
@Expose()
|
||||
@ -29,6 +29,6 @@ export class PrestamoEquipoOutputDto {
|
||||
equipo;
|
||||
|
||||
@Expose()
|
||||
@Type(() => UsuariosOutputDto)
|
||||
usuario;
|
||||
@Type(() => UsuarioInstitucionCarreraMinOutputDto)
|
||||
institucionUsuario;
|
||||
}
|
||||
|
@ -1,6 +1,6 @@
|
||||
import { Expose, Type } from 'class-transformer';
|
||||
import { EquipoMinOutputDto } from '../../../equipo/dto/output/equipo-min.dto';
|
||||
import { UsuariosOutputDto } from '../../../usuario/dto/output/usuarios.dto';
|
||||
import { UsuarioInstitucionCarreraMinOutputDto } from '../../../institucion-usuario/dto/output/usuario-institucion-carrera-min.dto';
|
||||
|
||||
export class PrestamoMinOutputDto {
|
||||
@Expose()
|
||||
@ -20,6 +20,6 @@ export class PrestamoMinOutputDto {
|
||||
equipo;
|
||||
|
||||
@Expose()
|
||||
@Type(() => UsuariosOutputDto)
|
||||
usuario;
|
||||
@Type(() => UsuarioInstitucionCarreraMinOutputDto)
|
||||
institucionUsuario;
|
||||
}
|
||||
|
@ -1,6 +1,6 @@
|
||||
import { Expose, Type } from 'class-transformer';
|
||||
import { OperadorMinOutputDto } from '../../../operador/dto/output/operador-min.dto';
|
||||
import { UsuariosOutputDto } from '../../../usuario/dto/output/usuarios.dto';
|
||||
import { UsuarioInstitucionCarreraMinOutputDto } from '../../../institucion-usuario/dto/output/usuario-institucion-carrera-min.dto';
|
||||
|
||||
export class PrestamosEquipoOutputDto {
|
||||
@Expose()
|
||||
@ -39,6 +39,6 @@ export class PrestamosEquipoOutputDto {
|
||||
operadorRegreso;
|
||||
|
||||
@Expose()
|
||||
@Type(() => UsuariosOutputDto)
|
||||
usuario;
|
||||
@Type(() => UsuarioInstitucionCarreraMinOutputDto)
|
||||
institucionUsuario;
|
||||
}
|
||||
|
@ -1,7 +1,7 @@
|
||||
import { Expose, Type } from 'class-transformer';
|
||||
import { EquipoMinOutputDto } from '../../../equipo/dto/output/equipo-min.dto';
|
||||
import { OperadorMinOutputDto } from '../../../operador/dto/output/operador-min.dto';
|
||||
import { UsuariosOutputDto } from '../../../usuario/dto/output/usuarios.dto';
|
||||
import { UsuarioInstitucionCarreraMinOutputDto } from '../../../institucion-usuario/dto/output/usuario-institucion-carrera-min.dto';
|
||||
|
||||
export class PrestamosOutputDto {
|
||||
@Expose()
|
||||
@ -44,6 +44,6 @@ export class PrestamosOutputDto {
|
||||
operadorRegreso;
|
||||
|
||||
@Expose()
|
||||
@Type(() => UsuariosOutputDto)
|
||||
usuario;
|
||||
@Type(() => UsuarioInstitucionCarreraMinOutputDto)
|
||||
institucionUsuario;
|
||||
}
|
||||
|
@ -2,95 +2,101 @@ import { Expose } from 'class-transformer';
|
||||
|
||||
export class ReporteOutputDto {
|
||||
@Expose()
|
||||
id_prestamo: number;
|
||||
id_prestamo;
|
||||
|
||||
@Expose()
|
||||
activo: number;
|
||||
activo;
|
||||
|
||||
@Expose()
|
||||
carrera: string;
|
||||
cancelado_operador;
|
||||
|
||||
@Expose()
|
||||
cancelado_operador: number;
|
||||
cancelado_usuario;
|
||||
|
||||
@Expose()
|
||||
cancelado_usuario: number;
|
||||
carrera;
|
||||
|
||||
@Expose()
|
||||
carrito: string;
|
||||
carrito;
|
||||
|
||||
@Expose()
|
||||
equipo: string;
|
||||
equipo;
|
||||
|
||||
@Expose()
|
||||
fecha_entrega: Date;
|
||||
fecha_entrega;
|
||||
|
||||
@Expose()
|
||||
fecha_inicio: Date;
|
||||
fecha_inicio;
|
||||
|
||||
@Expose()
|
||||
hora_fin: Date;
|
||||
hora_fin;
|
||||
|
||||
@Expose()
|
||||
hora_inicio: Date;
|
||||
hora_inicio;
|
||||
|
||||
@Expose()
|
||||
hora_max_recoger: Date;
|
||||
hora_max_recoger;
|
||||
|
||||
@Expose()
|
||||
id_carrito: number;
|
||||
id_carrera;
|
||||
|
||||
@Expose()
|
||||
id_equipo: number;
|
||||
id_carrito;
|
||||
|
||||
@Expose()
|
||||
id_institucion: number;
|
||||
id_equipo;
|
||||
|
||||
@Expose()
|
||||
id_institucion_carrera: number;
|
||||
id_institucion;
|
||||
|
||||
@Expose()
|
||||
id_modulo: number;
|
||||
id_institucion_carrera;
|
||||
|
||||
@Expose()
|
||||
id_operador_entrega: number;
|
||||
id_institucion_usuario;
|
||||
|
||||
@Expose()
|
||||
id_operador_regreso: number;
|
||||
id_modulo;
|
||||
|
||||
@Expose()
|
||||
id_status: number;
|
||||
id_operador_entrega;
|
||||
|
||||
@Expose()
|
||||
id_tipo_carrito: number;
|
||||
id_operador_regreso;
|
||||
|
||||
@Expose()
|
||||
id_tipo_usuario: number;
|
||||
id_status;
|
||||
|
||||
@Expose()
|
||||
id_usuario: number;
|
||||
id_tipo_carrito;
|
||||
|
||||
@Expose()
|
||||
institucion: string;
|
||||
id_tipo_usuario;
|
||||
|
||||
@Expose()
|
||||
modulo: string;
|
||||
id_usuario;
|
||||
|
||||
@Expose()
|
||||
nombre: string;
|
||||
institucion;
|
||||
|
||||
@Expose()
|
||||
numero_inventario: string;
|
||||
modulo;
|
||||
|
||||
@Expose()
|
||||
operador_entrega: string;
|
||||
nombre;
|
||||
|
||||
@Expose()
|
||||
operador_regreso: string;
|
||||
numero_inventario;
|
||||
|
||||
@Expose()
|
||||
tipo_carrito: string;
|
||||
operador_entrega;
|
||||
|
||||
@Expose()
|
||||
usuario: string;
|
||||
operador_regreso;
|
||||
|
||||
@Expose()
|
||||
tipo_carrito;
|
||||
|
||||
@Expose()
|
||||
usuario;
|
||||
}
|
||||
|
@ -10,7 +10,6 @@ import { Equipo } from '../../equipo/entity/equipo.entity';
|
||||
import { InstitucionUsuario } from '../../institucion-usuario/entity/institucion-usuario.entity';
|
||||
import { Multa } from '../../multa/entity/multa.entity';
|
||||
import { Operador } from '../../operador/entity/operador.entity';
|
||||
import { Usuario } from '../../usuario/entity/usuario.entity';
|
||||
|
||||
@Entity()
|
||||
export class Prestamo {
|
||||
@ -56,9 +55,6 @@ export class Prestamo {
|
||||
@Column({ type: Number, nullable: true, default: 1 })
|
||||
id_operador_regreso: number;
|
||||
|
||||
@Column({ type: Number, nullable: true })
|
||||
id_usuario: number;
|
||||
|
||||
@ManyToOne(() => Equipo, (equipo) => equipo.prestamos, { eager: true })
|
||||
@JoinColumn({ name: 'id_equipo' })
|
||||
equipo: Equipo;
|
||||
@ -87,10 +83,6 @@ export class Prestamo {
|
||||
@JoinColumn({ name: 'id_operador_regreso' })
|
||||
operadorRegreso: Operador;
|
||||
|
||||
@ManyToOne(() => Usuario, (usuario) => usuario.prestamos, { eager: true })
|
||||
@JoinColumn({ name: 'id_usuario' })
|
||||
usuario: Usuario;
|
||||
|
||||
@OneToMany(() => Multa, (multa) => multa.prestamo)
|
||||
multa: Multa;
|
||||
}
|
||||
|
@ -25,44 +25,49 @@ import { Carrera } from '../../../institucion-carrera/entity/carrera.entity';
|
||||
.addSelect('p.hora_inicio', 'hora_inicio')
|
||||
.addSelect('p.hora_max_recoger', 'hora_max_recoger')
|
||||
.addSelect('p.id_equipo', 'id_equipo')
|
||||
.addSelect('p.id_usuario', 'id_usuario')
|
||||
.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('e.equipo', 'equipo')
|
||||
.addSelect('e.id_carrito', 'id_carrito')
|
||||
.addSelect('e.id_status', 'id_status')
|
||||
.addSelect('e.numero_inventario', 'numero_inventario')
|
||||
.addSelect('iu.id_institucion_carrera', 'id_institucion_carrera')
|
||||
.addSelect('iu.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('c.carrito', 'carrito')
|
||||
.addSelect('c.id_modulo', 'id_modulo')
|
||||
.addSelect('c.id_tipo_carrito', 'id_tipo_carrito')
|
||||
.addSelect('ic.id_carrera', 'id_carrera')
|
||||
.addSelect('u.id_tipo_usuario', 'id_tipo_usuario')
|
||||
.addSelect('u.nombre', 'nombre')
|
||||
.addSelect('u.usuario', 'usuario')
|
||||
.addSelect('m.id_institucion', 'id_institucion')
|
||||
.addSelect('m.modulo', 'modulo')
|
||||
.addSelect('tc.tipo_carrito', 'tipo_carrito')
|
||||
.addSelect('i.institucion', 'institucion')
|
||||
.addSelect('ca.carrera', 'carrera')
|
||||
.addSelect('ic.id_institucion_carrera', 'id_institucion_carrera')
|
||||
.from(Prestamo, 'p')
|
||||
.innerJoin(Equipo, 'e', 'e.id_equipo = p.id_equipo')
|
||||
.innerJoin(Operador, 'oe', 'oe.id_operador = p.id_operador_regreso')
|
||||
.innerJoin(Operador, 'or', 'or.id_operador = p.id_operador_entrega')
|
||||
.innerJoin(Usuario, 'u', 'u.id_usuario = p.id_usuario')
|
||||
.innerJoin(
|
||||
InstitucionUsuario,
|
||||
'iu',
|
||||
'iu.id_institucion_usuario = p.id_institucion_usuario',
|
||||
)
|
||||
.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(InstitucionUsuario, 'iu', 'iu.id_usuario = u.id_usuario')
|
||||
.innerJoin(
|
||||
InstitucionCarrera,
|
||||
'ic',
|
||||
'ic.id_institucion_carrera = iu.id_institucion_carrera',
|
||||
)
|
||||
.innerJoin(Usuario, 'u', 'u.id_usuario = iu.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(Carrera, 'ca', 'ca.id_carrera = ic.id_carrera')
|
||||
.where('i.id_institucion = ic.id_institucion')
|
||||
.orderBy('i.institucion'),
|
||||
})
|
||||
export class FullInformacionPrestamoView {
|
||||
@ -72,15 +77,15 @@ export class FullInformacionPrestamoView {
|
||||
@ViewColumn()
|
||||
activo: number;
|
||||
|
||||
@ViewColumn()
|
||||
carrera: string;
|
||||
|
||||
@ViewColumn()
|
||||
cancelado_operador: number;
|
||||
|
||||
@ViewColumn()
|
||||
cancelado_usuario: number;
|
||||
|
||||
@ViewColumn()
|
||||
carrera: string;
|
||||
|
||||
@ViewColumn()
|
||||
carrito: string;
|
||||
|
||||
@ -102,6 +107,9 @@ export class FullInformacionPrestamoView {
|
||||
@ViewColumn()
|
||||
hora_max_recoger: Date;
|
||||
|
||||
@ViewColumn()
|
||||
id_carrera: number;
|
||||
|
||||
@ViewColumn()
|
||||
id_carrito: number;
|
||||
|
||||
@ -114,6 +122,9 @@ export class FullInformacionPrestamoView {
|
||||
@ViewColumn()
|
||||
id_institucion_carrera: number;
|
||||
|
||||
@ViewColumn()
|
||||
id_institucion_usuario: number;
|
||||
|
||||
@ViewColumn()
|
||||
id_modulo: number;
|
||||
|
||||
|
@ -1,6 +1,7 @@
|
||||
import { DataSource, ViewEntity, ViewColumn } from 'typeorm';
|
||||
import { Carrito } from '../../../carrito/entity/carrito.entity';
|
||||
import { Equipo } from '../../../equipo/entity/equipo.entity';
|
||||
import { InstitucionUsuario } from '../../../institucion-usuario/entity/institucion-usuario.entity';
|
||||
import { Modulo } from '../../../modulo/entity/modulo.entity';
|
||||
import { Prestamo } from '../prestamo.entity';
|
||||
import { Status } from '../../../status/entity/status.entity';
|
||||
@ -23,12 +24,13 @@ import { TipoCarrito } from '../../../institucion-tipo-carrito/entity/tipo-carri
|
||||
.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')
|
||||
.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')
|
||||
.addSelect('e.u', 'u')
|
||||
.addSelect('iu.id_institucion_carrera', 'id_institucion_carrera')
|
||||
.addSelect('iu.id_usuario', 'id_usuario')
|
||||
.addSelect('c.carrito', 'carrito')
|
||||
.addSelect('c.id_modulo', 'id_modulo')
|
||||
.addSelect('c.id_tipo_carrito', 'id_tipo_carrito')
|
||||
@ -36,6 +38,11 @@ import { TipoCarrito } from '../../../institucion-tipo-carrito/entity/tipo-carri
|
||||
.addSelect('tc.tipo_carrito', 'tipo_carrito')
|
||||
.from(Prestamo, 'p')
|
||||
.innerJoin(Equipo, 'e', 'e.id_equipo = p.id_equipo')
|
||||
.innerJoin(
|
||||
InstitucionUsuario,
|
||||
'iu',
|
||||
'iu.id_institucion_usuario = p.id_institucion_usuario',
|
||||
)
|
||||
.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')
|
||||
@ -84,6 +91,9 @@ export class InformacionPrestamoView {
|
||||
@ViewColumn()
|
||||
id_institucion: number;
|
||||
|
||||
@ViewColumn()
|
||||
id_institucion_carrera: number;
|
||||
|
||||
@ViewColumn()
|
||||
id_institucion_usuario: number;
|
||||
|
||||
|
@ -2,6 +2,7 @@ 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 { InstitucionUsuario } from '../../../institucion-usuario/entity/institucion-usuario.entity';
|
||||
import { Modulo } from '../../../modulo/entity/modulo.entity';
|
||||
import { Prestamo } from '../prestamo.entity';
|
||||
import { TipoCarrito } from '../../../institucion-tipo-carrito/entity/tipo-carrito.entity';
|
||||
@ -21,26 +22,33 @@ import { Usuario } from '../../../usuario/entity/usuario.entity';
|
||||
.addSelect('p.hora_inicio', 'hora_inicio')
|
||||
.addSelect('p.hora_max_recoger', 'hora_max_recoger')
|
||||
.addSelect('p.id_equipo', 'id_equipo')
|
||||
.addSelect('p.id_usuario', 'id_usuario')
|
||||
.addSelect('p.id_institucion_usuario', 'id_institucion_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')
|
||||
.addSelect('u.id_tipo_usuario', 'id_tipo_usuario')
|
||||
.addSelect('u.nombre', 'nombre')
|
||||
.addSelect('u.usuario', 'usuario')
|
||||
.addSelect('iu.id_institucion_carrera', 'id_institucion_carrera')
|
||||
.addSelect('iu.id_usuario', 'id_usuario')
|
||||
.addSelect('c.carrito', 'carrito')
|
||||
.addSelect('c.id_modulo', 'id_modulo')
|
||||
.addSelect('c.id_tipo_carrito', 'id_tipo_carrito')
|
||||
.addSelect('u.id_tipo_usuario', 'id_tipo_usuario')
|
||||
.addSelect('u.nombre', 'nombre')
|
||||
.addSelect('u.usuario', 'usuario')
|
||||
.addSelect('m.id_institucion', 'id_institucion')
|
||||
.addSelect('m.modulo', 'modulo')
|
||||
.addSelect('tc.tipo_carrito', 'tipo_carrito')
|
||||
.addSelect('i.institucion', 'institucion')
|
||||
.from(Prestamo, 'p')
|
||||
.innerJoin(Equipo, 'e', 'e.id_equipo = p.id_equipo')
|
||||
.innerJoin(Usuario, 'u', 'u.id_usuario = p.id_usuario')
|
||||
.innerJoin(
|
||||
InstitucionUsuario,
|
||||
'iu',
|
||||
'iu.id_institucion_usuario = p.id_institucion_usuario',
|
||||
)
|
||||
.innerJoin(Carrito, 'c', 'c.id_carrito = e.id_carrito')
|
||||
.innerJoin(Usuario, 'u', 'u.id_usuario = iu.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'),
|
||||
@ -88,6 +96,12 @@ export class PrestamoInformacionView {
|
||||
@ViewColumn()
|
||||
id_institucion: number;
|
||||
|
||||
@ViewColumn()
|
||||
id_institucion_carrera: number;
|
||||
|
||||
@ViewColumn()
|
||||
id_institucion_usuario: number;
|
||||
|
||||
@ViewColumn()
|
||||
id_modulo: number;
|
||||
|
||||
|
@ -359,6 +359,7 @@ export class PrestamoController {
|
||||
ejemplo: {
|
||||
value: {
|
||||
id_modulo: 1,
|
||||
id_institucion_usuario: 1,
|
||||
id_tipo_carrito: 1,
|
||||
_id_programa: 1,
|
||||
_id_tipo_entrada: 1,
|
||||
@ -372,6 +373,7 @@ export class PrestamoController {
|
||||
this.validarUsuarioService.validarUsuario(usuario);
|
||||
return this.prestamoService.create(
|
||||
usuario,
|
||||
body.id_institucion_usuario,
|
||||
body.id_modulo,
|
||||
body.id_tipo_carrito,
|
||||
body.id_programa,
|
||||
|
@ -1,6 +1,5 @@
|
||||
import * as moment from 'moment';
|
||||
import {
|
||||
BadRequestException,
|
||||
ConflictException,
|
||||
ForbiddenException,
|
||||
forwardRef,
|
||||
@ -13,7 +12,6 @@ import {
|
||||
Between,
|
||||
FindManyOptions,
|
||||
FindOptionsWhere,
|
||||
IsNull,
|
||||
LessThanOrEqual,
|
||||
Like,
|
||||
MoreThanOrEqual,
|
||||
@ -21,7 +19,6 @@ import {
|
||||
} from 'typeorm';
|
||||
import { AppGateway } from '../app.gateway';
|
||||
import { Institucion } from '../institucion/entity/institucion.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 './entity/prestamo.entity';
|
||||
@ -91,7 +88,7 @@ export class PrestamoService {
|
||||
prestamo.cancelado_operador = true;
|
||||
prestamo.operadorRegreso = operadorRegreso;
|
||||
// Validamos que el equipo si se la haya asignado al usuario del registro
|
||||
if (prestamo.equipo.u === prestamo.usuario.id_usuario) {
|
||||
if (prestamo.equipo.u === prestamo.institucionUsuario.usuario.id_usuario) {
|
||||
// Reseteamos datos del equipo
|
||||
prestamo.equipo.u = null;
|
||||
prestamo.equipo.status.id_status = 6;
|
||||
@ -105,7 +102,9 @@ export class PrestamoService {
|
||||
// Guardamos cambios en el préstamo
|
||||
return this.repository.save(prestamo).then((_) => {
|
||||
// Actualizamos la interfaz del usaurio
|
||||
this.appGateway.actualizarUsuario(prestamo.usuario.id_usuario);
|
||||
this.appGateway.actualizarUsuario(
|
||||
prestamo.institucionUsuario.usuario.id_usuario,
|
||||
);
|
||||
return { message: 'Se canceló correctamente este préstamo.' };
|
||||
});
|
||||
}
|
||||
@ -149,6 +148,7 @@ export class PrestamoService {
|
||||
|
||||
async create(
|
||||
usuario: Usuario,
|
||||
id_institucion_usuario: number,
|
||||
id_modulo: number,
|
||||
id_tipo_carrito: number,
|
||||
id_programa?: number,
|
||||
@ -161,6 +161,9 @@ export class PrestamoService {
|
||||
await this.institucionTipoCarritoService.findTipoCarritoById(
|
||||
id_tipo_carrito,
|
||||
);
|
||||
const institucionUsuario = await this.institucionUsuarioService.findById(
|
||||
id_institucion_usuario,
|
||||
);
|
||||
const institucionDia = await this.institucionDiaService.hoy(
|
||||
modulo.institucion,
|
||||
);
|
||||
@ -179,6 +182,19 @@ export class PrestamoService {
|
||||
)
|
||||
: null;
|
||||
|
||||
// Validamos que el id_institucion_usuario le pertenezca al usuario
|
||||
if (institucionUsuario.usuario.id_usuario != usuario.id_usuario)
|
||||
throw new ConflictException('No te pertenece esta información.');
|
||||
// Validamos que este activo
|
||||
if (!institucionUsuario.activo)
|
||||
throw new ForbiddenException(
|
||||
`${this.mensajeNoPoderPedir()} tu cuenta esta desactivada en esta institución.`,
|
||||
);
|
||||
// Validamos que no tenga multa
|
||||
if (institucionUsuario.multa)
|
||||
throw new ForbiddenException(
|
||||
`${this.mensajeNoPoderPedir()} tienes una multa activa.`,
|
||||
);
|
||||
// Validamos si ese día se encuentra activo
|
||||
if (!institucionDia.activo)
|
||||
throw new ConflictException(
|
||||
@ -209,21 +225,14 @@ export class PrestamoService {
|
||||
`Se suspendió el servicio de préstamo temporalmente de ${institucionDia.horasExcepcion[i].hora_inicio} a ${institucionDia.horasExcepcion[i].hora_fin}.`,
|
||||
);
|
||||
}
|
||||
// Buscamos las instituciones usuario de este usuario
|
||||
return this.institucionUsuarioService
|
||||
.findFullInfoAllByIdUsuario(usuario, false)
|
||||
.then((instituciones) => {
|
||||
this.validarInstitucionUsuario(instituciones, modulo);
|
||||
// Buscamos un prestamo activo con el id del usuario que realiza la acción
|
||||
return this.informacionPrestamoView.findOne({
|
||||
where: { activo: 1, id_usuario: usuario.id_usuario },
|
||||
});
|
||||
})
|
||||
// Buscamos un prestamo activo con el id del usuario que realiza la acción
|
||||
return this.informacionPrestamoView
|
||||
.findOne({ where: { activo: 1, id_usuario: usuario.id_usuario } })
|
||||
.then((existePrestamo) => {
|
||||
// Sacamos error si lo encuentra
|
||||
if (existePrestamo)
|
||||
throw new ConflictException(
|
||||
'Este usuario ya tiene un préstamo activo.',
|
||||
`${this.mensajeNoPoderPedir()} ya cuentas con un préstamo activo.`,
|
||||
);
|
||||
// Buscamos un equipo con las caracteríasticas solicitadas
|
||||
return this.equipoService.findEquipo(
|
||||
@ -243,7 +252,7 @@ export class PrestamoService {
|
||||
.add(modulo.institucion.tiempo_recoger, 'm')
|
||||
.toDate(),
|
||||
equipo,
|
||||
usuario,
|
||||
institucionUsuario,
|
||||
}),
|
||||
),
|
||||
)
|
||||
@ -256,9 +265,10 @@ export class PrestamoService {
|
||||
prestamo.equipo.carrito.tipoCarrito.id_tipo_carrito === 5
|
||||
)
|
||||
// Creamos un passcode
|
||||
return this.passcodeService
|
||||
.create(prestamo)
|
||||
.then((passcode) => ({ ...prestamo, passcode: passcode.passcode }));
|
||||
return this.passcodeService.create(prestamo).then((passcode) => {
|
||||
Object.assign(prestamo, passcode);
|
||||
return prestamo;
|
||||
});
|
||||
return prestamo;
|
||||
});
|
||||
}
|
||||
@ -302,7 +312,7 @@ export class PrestamoService {
|
||||
throw new ConflictException(
|
||||
'Hubo un error, comunicate con los desarrolladores.',
|
||||
);
|
||||
if (prestamo.usuario.id_usuario != prestamo.equipo.u)
|
||||
if (prestamo.institucionUsuario.usuario.id_usuario != prestamo.equipo.u)
|
||||
throw new ConflictException(
|
||||
'Este equipo fue asignado más de una vez y este es el préstamo incorrecto, espere unos segundos y se desactivará este préstamo o tanto el usario como el opeardor pueden cancelarlo manualmente.',
|
||||
);
|
||||
@ -320,7 +330,9 @@ export class PrestamoService {
|
||||
.then((_) => this.repository.save(prestamo)) // Guardo los cambios del préstamo
|
||||
.then((_) => {
|
||||
// Actualizamos la interfaz del usuario
|
||||
this.appGateway.actualizarUsuario(prestamo.usuario.id_usuario);
|
||||
this.appGateway.actualizarUsuario(
|
||||
prestamo.institucionUsuario.usuario.id_usuario,
|
||||
);
|
||||
return prestamo.equipo;
|
||||
});
|
||||
}
|
||||
@ -582,6 +594,24 @@ export class PrestamoService {
|
||||
},
|
||||
status: { id_status: infoPrestamo.id_status },
|
||||
},
|
||||
institucionUsuario: {
|
||||
id_institucion_usuario: infoPrestamo.id_institucion_usuario,
|
||||
institucionCarrera: {
|
||||
id_institucion_carrera: infoPrestamo.id_institucion_carrera,
|
||||
carrera: {
|
||||
id_carrera: infoPrestamo.id_carrera,
|
||||
carrera: infoPrestamo.carrera,
|
||||
},
|
||||
},
|
||||
usuario: {
|
||||
id_usuario: infoPrestamo.id_usuario,
|
||||
nombre: infoPrestamo.nombre,
|
||||
usuario: infoPrestamo.usuario,
|
||||
tipoUsuario: {
|
||||
id_tipo_usuario: infoPrestamo.id_tipo_usuario,
|
||||
},
|
||||
},
|
||||
},
|
||||
operadorEntrega: {
|
||||
id_operador: infoPrestamo.id_operador_entrega,
|
||||
operador: infoPrestamo.operador_entrega,
|
||||
@ -590,14 +620,6 @@ export class PrestamoService {
|
||||
id_operador: infoPrestamo.id_operador_regreso,
|
||||
operador: infoPrestamo.operador_regreso,
|
||||
},
|
||||
usuario: {
|
||||
id_usuario: infoPrestamo.id_usuario,
|
||||
nombre: infoPrestamo.nombre,
|
||||
usuario: infoPrestamo.usuario,
|
||||
tipoUsuario: {
|
||||
id_tipo_usuario: infoPrestamo.id_tipo_usuario,
|
||||
},
|
||||
},
|
||||
});
|
||||
}
|
||||
|
||||
@ -692,25 +714,32 @@ export class PrestamoService {
|
||||
},
|
||||
status: { id_status: infoPrestamo.id_status },
|
||||
},
|
||||
usuario: {
|
||||
id_usuario: infoPrestamo.id_usuario,
|
||||
usuario: infoPrestamo.usuario,
|
||||
nombre: infoPrestamo.nombre,
|
||||
tipoUsuario: { id_tipo_usuario: infoPrestamo.id_tipo_usuario },
|
||||
institucionUsuario: {
|
||||
id_institucion_usuario: infoPrestamo.id_institucion_usuario,
|
||||
institucionCarrera: {
|
||||
id_institucion_carrera: infoPrestamo.id_institucion_carrera,
|
||||
},
|
||||
usuario: {
|
||||
id_usuario: infoPrestamo.id_usuario,
|
||||
usuario: infoPrestamo.usuario,
|
||||
nombre: infoPrestamo.nombre,
|
||||
tipoUsuario: { id_tipo_usuario: infoPrestamo.id_tipo_usuario },
|
||||
},
|
||||
},
|
||||
});
|
||||
}
|
||||
|
||||
private prestamoPasscode(prestamo: Prestamo) {
|
||||
private prestamoPasscode(prestamo: Prestamo): Promise<Prestamo> | Prestamo {
|
||||
// Si es locker
|
||||
if (
|
||||
prestamo.equipo.carrito.tipoCarrito.id_tipo_carrito === 4 ||
|
||||
prestamo.equipo.carrito.tipoCarrito.id_tipo_carrito === 5
|
||||
)
|
||||
// Buscamos el passcode y se lo agregamos al préstamo
|
||||
return this.passcodeService
|
||||
.findByPrestamo(prestamo)
|
||||
.then((passcode) => ({ ...prestamo, passcode: passcode.passcode }));
|
||||
return this.passcodeService.findByPrestamo(prestamo).then((passcode) => {
|
||||
Object.assign(prestamo, passcode);
|
||||
return prestamo;
|
||||
});
|
||||
return prestamo;
|
||||
}
|
||||
|
||||
@ -799,7 +828,9 @@ export class PrestamoService {
|
||||
.then((_) => this.repository.save(prestamo)) // Guardamos cambios en el préstamo
|
||||
.then((_) => {
|
||||
// Actualizamos la interfaz del usuario
|
||||
this.appGateway.actualizarUsuario(prestamo.usuario.id_usuario);
|
||||
this.appGateway.actualizarUsuario(
|
||||
prestamo.institucionUsuario.usuario.id_usuario,
|
||||
);
|
||||
return { message: 'Se regresó el equipo de cómputo correctamente.' };
|
||||
});
|
||||
}
|
||||
@ -855,35 +886,6 @@ export class PrestamoService {
|
||||
return this.repository.save(prestamo);
|
||||
}
|
||||
|
||||
private validarInstitucionUsuario(
|
||||
instituciones: InstitucionUsuario[],
|
||||
modulo: Modulo,
|
||||
): InstitucionUsuario {
|
||||
// Recorremos array de instituciones usuario
|
||||
for (let i = 0; i < instituciones.length; i++) {
|
||||
const institucion = instituciones[i].institucionCarrera.institucion;
|
||||
|
||||
// Si encontramos una institución usuario cuyo id institución sea igual al del módulo enviado
|
||||
if (institucion.id_institucion === modulo.institucion.id_institucion) {
|
||||
// Validamos que este activo
|
||||
if (!instituciones[i].activo)
|
||||
throw new ForbiddenException(
|
||||
`${this.mensajeNoPoderPedir()} tu cuenta esta desactivada en esta institución.`,
|
||||
);
|
||||
// Validamos que no tenga multa
|
||||
if (instituciones[i].multa)
|
||||
throw new ForbiddenException(
|
||||
`${this.mensajeNoPoderPedir()} tienes una multa activa.`,
|
||||
);
|
||||
return instituciones[i];
|
||||
}
|
||||
}
|
||||
// Si no se encuentra una institución usuario que sea igual que la del módulo enviado sacamos error
|
||||
throw new BadRequestException(
|
||||
`${this.mensajeNoPoderPedir()} no perteneces a la institución del módulo seleccionado.`,
|
||||
);
|
||||
}
|
||||
|
||||
private validacionBasicaPrestamo(prestamo: Prestamo): void {
|
||||
// Validamos si el préstamo ya fue cancelado por el usuario
|
||||
if (prestamo.cancelado_usuario)
|
||||
@ -950,7 +952,13 @@ export class PrestamoService {
|
||||
},
|
||||
operadorEntrega: { id_operador: infoPrestamo.id_operador_entrega },
|
||||
operadorRegreso: { id_operador: infoPrestamo.id_operador_regreso },
|
||||
usuario: { id_usuario: infoPrestamo.id_usuario },
|
||||
institucionUsuario: {
|
||||
id_institucion_usuario: infoPrestamo.id_institucion_usuario,
|
||||
institucionCarrera: {
|
||||
id_institucion_carrera: infoPrestamo.id_institucion_carrera,
|
||||
},
|
||||
usuario: { id_usuario: infoPrestamo.id_usuario },
|
||||
},
|
||||
});
|
||||
}
|
||||
}
|
||||
|
@ -7,7 +7,6 @@ import {
|
||||
PrimaryGeneratedColumn,
|
||||
} from 'typeorm';
|
||||
import { InstitucionUsuario } from '../../institucion-usuario/entity/institucion-usuario.entity';
|
||||
import { Prestamo } from '../../prestamo/entity/prestamo.entity';
|
||||
import { TipoUsuario } from '../../tipo-usuario/entity/tipo-usuario.entity';
|
||||
|
||||
@Entity()
|
||||
@ -47,7 +46,4 @@ export class Usuario {
|
||||
(institucionUsuario) => institucionUsuario.usuario,
|
||||
)
|
||||
instituciones: InstitucionUsuario[];
|
||||
|
||||
@OneToMany(() => Prestamo, (prestamo) => prestamo.usuario)
|
||||
prestamos: Prestamo[];
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user