cambiar status de equipoal regresar

This commit is contained in:
xXpuma99Xx 2022-09-29 02:51:27 -05:00
parent 6c16999cc6
commit a1bccaf135
10 changed files with 561 additions and 46 deletions

View File

@ -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,
],

View File

@ -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;

View File

@ -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;

View File

@ -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;
}

View File

@ -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;
}

View File

@ -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;

View File

@ -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;

View File

@ -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,
);

View File

@ -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,

View File

@ -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<Prestamo>,
@InjectRepository(FullInformacionPrestamoView)
private fullInformacionPrestamoView: Repository<FullInformacionPrestamoView>,
@InjectRepository(FullInformacionPrestamoEquipoView)
private fullInformacionPrestamoEquipoView: Repository<FullInformacionPrestamoEquipoView>,
@InjectRepository(FullInformacionPrestamoUsuarioView)
private fullInformacionPrestamoUsuarioView: Repository<FullInformacionPrestamoUsuarioView>,
@InjectRepository(InformacionPrestamoView)
private informacionPrestamoView: Repository<InformacionPrestamoView>,
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,
),
);
}