dejando de usar repository y usando views

This commit is contained in:
xXpuma99Xx 2022-10-02 17:52:42 -05:00
parent 5c06efb3b3
commit eb792ed281
3 changed files with 171 additions and 259 deletions

View File

@ -10,15 +10,15 @@ import { Socket, Server } from 'socket.io';
@WebSocketGateway({ @WebSocketGateway({
cors: { cors: {
origin: [ origin: [
// 'http://localhost:3176', 'http://localhost:3176',
// 'http://localhost:3186', 'http://localhost:3186',
// 'http://132.248.80.196:3155', // 'http://132.248.80.196:3155',
// 'http://132.248.80.196:3185', // 'http://132.248.80.196:3185',
// 'https://pmodulospcpuma.unam.mx', // 'https://pmodulospcpuma.unam.mx',
// 'https://pmodulospcpuma.unam.mx:3015', // 'https://pmodulospcpuma.unam.mx:3015',
'https://modulospcpuma.unam.mx', // 'https://modulospcpuma.unam.mx',
'https://modulospcpuma.unam.mx:3015', // 'https://modulospcpuma.unam.mx:3015',
'https://betelgeuse.acatlan.unam.mx:3180', // 'https://betelgeuse.acatlan.unam.mx:3180',
], ],
}, },
}) })

View File

@ -115,8 +115,7 @@ export class PrestamoController {
const operador: Operador = req.user.operador; const operador: Operador = req.user.operador;
this.validarUsuarioService.validarAdminOperador(operador); this.validarUsuarioService.validarAdminOperador(operador);
// return this.prestamoService.findAll(query); return this.prestamoService.findFullInfoPrestamoAll(query);
return this.prestamoService.findInfoPrestamoAll(query);
} }
@Put('cancelar-operador') @Put('cancelar-operador')
@ -254,8 +253,7 @@ export class PrestamoController {
const operador: Operador = req.user.operador; const operador: Operador = req.user.operador;
this.validarUsuarioService.validarOperador(operador); this.validarUsuarioService.validarOperador(operador);
// return this.prestamoService.findAll(query); return this.prestamoService.findFullInfoPrestamoAll(query);
return this.prestamoService.findInfoPrestamoAll(query);
} }
@Serealize(PrestamosEquipoOutputDto) @Serealize(PrestamosEquipoOutputDto)

View File

@ -105,10 +105,10 @@ export class PrestamoService {
.update(prestamo.equipo, null, 1) .update(prestamo.equipo, null, 1)
.then((_) => this.repository.save(prestamo)) .then((_) => this.repository.save(prestamo))
.then((_) => { .then((_) => {
this.appGateway.actualizarUsuario(prestamo.usuario.id_usuario);
this.appGateway.actualizarOperador( this.appGateway.actualizarOperador(
prestamo.equipo.carrito.modulo.institucion.id_institucion, prestamo.equipo.carrito.modulo.institucion.id_institucion,
); );
this.appGateway.actualizarUsuario(prestamo.usuario.id_usuario);
return { message: 'Se canceló correctamente este préstamo.' }; return { message: 'Se canceló correctamente este préstamo.' };
}); });
} }
@ -148,36 +148,37 @@ export class PrestamoService {
) )
: null; : null;
if (ahora.weekday() === 0) // if (ahora.weekday() === 0)
throw new ConflictException('No hay servicio los días domingo.'); // throw new ConflictException('No hay servicio los días domingo.');
this.validarInstitucionUsuario(usuario.instituciones, modulo); // this.validarInstitucionUsuario(usuario.instituciones, modulo);
if (!institucionDia.activo) // if (!institucionDia.activo)
throw new ConflictException( // throw new ConflictException(
'El día de hoy no hay servicio de préstamo de equipos.', // 'El día de hoy no hay servicio de préstamo de equipos.',
); // );
if (ahora < horaMin) // if (ahora < horaMin)
throw new ConflictException( // throw new ConflictException(
`El servicio inicia a las ${institucionDia.hora_inicio} el día de hoy.`, // `El servicio inicia a las ${institucionDia.hora_inicio} el día de hoy.`,
); // );
if (ahora >= horaExtra) // if (ahora >= horaExtra)
throw new ConflictException( // throw new ConflictException(
`El servicio terminó a las ${institucionDia.hora_extra} el día de hoy.`, // `El servicio terminó a las ${institucionDia.hora_extra} el día de hoy.`,
); // );
for (let i = 0; i < institucionDia.horasExcepcion.length; i++) { // for (let i = 0; i < institucionDia.horasExcepcion.length; i++) {
const horaFin = moment( // const horaFin = moment(
`${ahoraStr} ${institucionDia.horasExcepcion[i].hora_fin}`, // `${ahoraStr} ${institucionDia.horasExcepcion[i].hora_fin}`,
); // );
const horaInicio = moment( // const horaInicio = moment(
`${ahoraStr} ${institucionDia.horasExcepcion[i].hora_inicio}`, // `${ahoraStr} ${institucionDia.horasExcepcion[i].hora_inicio}`,
); // );
if (ahora > horaInicio && ahora < horaFin) // if (ahora > horaInicio && ahora < horaFin)
throw new ConflictException( // throw new ConflictException(
`Se suspendió temporalmente el servicio de ${institucionDia.horasExcepcion[i].hora_inicio} a ${institucionDia.horasExcepcion[i].hora_fin}.`, // `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 } }) return this.informacionPrestamoView
.findOne({ where: { activo: 1, id_usuario: usuario.id_usuario } })
.then((existePrestamo) => { .then((existePrestamo) => {
if (existePrestamo) if (existePrestamo)
throw new ConflictException( throw new ConflictException(
@ -249,12 +250,7 @@ export class PrestamoService {
async desactivarPrestamos() { async desactivarPrestamos() {
const ahora = moment(); const ahora = moment();
return this.repository return this.findInfoPrestamoDesactivables().then(async (prestamos) => {
.find({
join: { alias: 'p', innerJoin: { e: 'p.equipo', s: 'e.status' } },
where: { activo: true, equipo: { status: { id_status: 2 } } },
})
.then(async (prestamos) => {
for (let i = 0; i < prestamos.length; i++) for (let i = 0; i < prestamos.length; i++)
if (ahora.diff(moment(prestamos[i].hora_max_recoger)) > 0) { if (ahora.diff(moment(prestamos[i].hora_max_recoger)) > 0) {
prestamos[i].activo = false; prestamos[i].activo = false;
@ -309,207 +305,113 @@ export class PrestamoService {
.then((_) => this.equipoService.update(prestamo.equipo, null, 3)) .then((_) => this.equipoService.update(prestamo.equipo, null, 3))
.then((_) => { .then((_) => {
this.appGateway.actualizarUsuario(prestamo.usuario.id_usuario); this.appGateway.actualizarUsuario(prestamo.usuario.id_usuario);
return { this.appGateway.actualizarOperador(
message: 'Se entregó el equipo de cómputo al usuario.', prestamo.equipo.carrito.modulo.institucion.id_institucion,
equipo: prestamo.equipo, );
}; return prestamo.equipo;
}); });
} }
async findAll(filtros: {
pagina?: string;
activo?: string | boolean;
cancelado_operador?: string;
cancelado_usuario?: string;
carrito?: string;
equipo?: string;
fechaFin?: string;
fechaInicio?: string;
id_institucion?: string;
id_modulo?: string;
id_operador_entrega?: string;
id_operador_regreso?: string;
id_prestamo?: string;
id_tipo_carrito?: string;
id_tipo_usuario?: string;
usuario?: string;
}) {
const institucion = filtros.id_institucion
? await this.institucionService.findInfoInstitucionById(
parseInt(filtros.id_institucion),
)
: null;
const modulo = filtros.id_modulo
? await this.moduloService.findInfoModuloById(parseInt(filtros.id_modulo))
: null;
const operadorEntrega = filtros.id_operador_entrega
? await this.operadorService.findById(
parseInt(filtros.id_operador_entrega),
)
: null;
const operadorRegreso = filtros.id_operador_regreso
? await this.operadorService.findById(
parseInt(filtros.id_operador_regreso),
)
: null;
const tipoCarrito = filtros.id_tipo_carrito
? await this.institucionTipoCarritoService.findTipoCarritoById(
parseInt(filtros.id_tipo_carrito),
)
: null;
const tipoUsuario = filtros.id_tipo_usuario
? await this.tipoUsuarioService.findById(
parseInt(filtros.id_tipo_usuario),
)
: null;
const query = this.repository
.createQueryBuilder('p')
.innerJoinAndSelect('p.equipo', 'e')
.innerJoinAndSelect('p.operadorEntrega', 'oe')
.innerJoinAndSelect('p.operadorRegreso', 'or')
.innerJoinAndSelect('p.usuario', 'u')
.innerJoinAndSelect('e.carrito', 'c')
.innerJoinAndSelect('e.status', 's')
.innerJoinAndSelect('oe.tipoUsuario', 'tuoe')
.innerJoinAndSelect('or.tipoUsuario', 'tuor')
.innerJoinAndSelect('u.tipoUsuario', 'tu')
.innerJoinAndSelect('u.instituciones', 'is')
.innerJoinAndSelect('c.modulo', 'm')
.innerJoinAndSelect('c.tipoCarrito', 'tc')
.innerJoinAndSelect('is.institucionCarrera', 'ic')
.innerJoinAndSelect('m.institucion', 'i')
.innerJoinAndSelect('ic.carrera', 'ca')
.innerJoinAndSelect('ic.institucion', 'in')
.orderBy(
'p.id_prestamo',
filtros.activo && typeof filtros.activo === 'boolean' ? 'ASC' : 'DESC',
)
.addOrderBy('i.institucion')
.addOrderBy('m.modulo')
.addOrderBy('tc.tipo_carrito')
.addOrderBy('c.carrito')
.addOrderBy('e.equipo');
if (filtros.pagina)
query.skip((parseInt(filtros.pagina) - 1) * 25).take(25);
if (filtros.activo) {
if (typeof filtros.activo === 'boolean')
query.andWhere('p.activo = :activo', { activo: filtros.activo });
else
query.andWhere('p.activo = :activo', {
activo: filtros.activo === 'true',
});
}
if (filtros.cancelado_operador)
query.andWhere('p.cancelado_operador = :cancelado_operador', {
cancelado_operador: filtros.cancelado_operador === 'true',
});
if (filtros.cancelado_usuario)
query.andWhere('p.cancelado_usuario = :cancelado_usuario', {
cancelado_usuario: filtros.cancelado_usuario === 'true',
});
if (filtros.fechaInicio)
query.andWhere('p.fecha_inicio >= :fechaInicio', {
fechaInicio: filtros.fechaInicio,
});
if (filtros.fechaFin)
query.andWhere('p.fecha_inicio <= :fechaFin', {
fechaFin: filtros.fechaFin,
});
if (filtros.id_prestamo)
query.andWhere('p.id_prestamo LIKE :id_prestamo', {
id_prestamo: `%${filtros.id_prestamo}%`,
});
if (filtros.carrito)
query.andWhere('c.carrito LIKE :carrito', {
carrito: `%${filtros.carrito}%`,
});
if (filtros.equipo)
query.andWhere('e.equipo LIKE :equipo', {
equipo: `%${filtros.equipo}%`,
});
if (filtros.usuario)
query.andWhere('u.usuario LIKE :usuario', {
usuario: `%${filtros.usuario}%`,
});
if (institucion)
query.andWhere('i.id_institucion = :id_institucion', {
id_institucion: institucion.id_institucion,
});
if (modulo)
query.andWhere('m.id_modulo = :id_modulo', {
id_modulo: modulo.id_modulo,
});
if (tipoCarrito)
query.andWhere('tc.id_tipo_carrito = :id_tipo_carrito', {
id_tipo_carrito: tipoCarrito.id_tipo_carrito,
});
if (tipoUsuario)
query.andWhere('tu.id_tipo_usuario = :id_tipo_usuario', {
id_tipo_usuario: tipoUsuario.id_tipo_usuario,
});
if (operadorEntrega)
query.andWhere('p.id_operador_entrega = :id_operador_entrega', {
id_operador_entrega: operadorEntrega.id_operador,
});
if (operadorRegreso)
query.andWhere('p.id_operador_regreso = :id_operador_regreso', {
id_operador_regreso: operadorRegreso.id_operador,
});
return query.getManyAndCount();
}
findAllByIdUsuario(id_usuario: number, pagina: number) { findAllByIdUsuario(id_usuario: number, pagina: number) {
return this.usuarioService return this.fullInformacionPrestamoView
.findById(id_usuario, true, true) .findAndCount({
.then((usuario) => where: { id_usuario },
this.repository order: { id_prestamo: 'DESC' },
.createQueryBuilder('p') skip: (pagina - 1) * 25,
.innerJoinAndSelect('p.equipo', 'e') take: 25,
.innerJoinAndSelect('p.operadorEntrega', 'oe')
.innerJoinAndSelect('p.operadorRegreso', 'or')
.innerJoinAndSelect('p.usuario', 'u', 'u.id_usuario = :id_usuario', {
id_usuario: usuario.id_usuario,
}) })
.innerJoinAndSelect('e.carrito', 'c') .then((infoPrestamos) => {
.innerJoinAndSelect('e.status', 's') const prestamos: Prestamo[] = [];
.innerJoinAndSelect('oe.tipoUsuario', 'tuoe')
.innerJoinAndSelect('or.tipoUsuario', 'tuor') for (let i = 0; i < infoPrestamos[0].length; i++)
.innerJoinAndSelect('c.tipoCarrito', 'tc') prestamos.push(
.innerJoinAndSelect('c.modulo', 'm') this.repository.create({
.innerJoinAndSelect('m.institucion', 'i') id_prestamo: infoPrestamos[0][i].id_prestamo,
.skip((pagina - 1) * 25) activo: infoPrestamos[0][i].activo === 1,
.take(25) cancelado_operador: infoPrestamos[0][i].cancelado_operador === 1,
.getManyAndCount(), cancelado_usuario: infoPrestamos[0][i].cancelado_usuario === 1,
fecha_entrega: infoPrestamos[0][i].fecha_entrega,
fecha_inicio: infoPrestamos[0][i].fecha_inicio,
hora_fin: infoPrestamos[0][i].hora_fin,
hora_inicio: infoPrestamos[0][i].hora_inicio,
hora_max_recoger: infoPrestamos[0][i].hora_max_recoger,
equipo: {
id_equipo: infoPrestamos[0][i].id_equipo,
equipo: infoPrestamos[0][i].equipo,
numero_inventario: infoPrestamos[0][i].numero_inventario,
carrito: {
id_carrito: infoPrestamos[0][i].id_carrito,
carrito: infoPrestamos[0][i].carrito,
modulo: {
id_modulo: infoPrestamos[0][i].id_modulo,
modulo: infoPrestamos[0][i].modulo,
institucion: {
id_institucion: infoPrestamos[0][i].id_institucion,
institucion: infoPrestamos[0][i].institucion,
},
},
tipoCarrito: {
id_tipo_carrito: infoPrestamos[0][i].id_tipo_carrito,
tipo_carrito: infoPrestamos[0][i].tipo_carrito,
},
},
},
operadorEntrega: {
id_operador: infoPrestamos[0][i].id_operador_entrega,
operador: infoPrestamos[0][i].operador_entrega,
},
operadorRegreso: {
id_operador: infoPrestamos[0][i].id_operador_regreso,
operador: infoPrestamos[0][i].operador_regreso,
},
}),
); );
return [prestamos, infoPrestamos[1]];
});
} }
async findAllByIdEquipo(id_equipo: number, pagina: number) { async findAllByIdEquipo(id_equipo: number, pagina: number) {
return this.equipoService.findInfoEquipoById(id_equipo).then((equipo) => return this.fullInformacionPrestamoView
this.repository .findAndCount({
.createQueryBuilder('p') where: { id_equipo },
.innerJoinAndSelect('p.equipo', 'e', 'e.id_equipo = :id_equipo', { order: { id_prestamo: 'DESC' },
id_equipo: equipo.id_equipo, skip: (pagina - 1) * 25,
take: 25,
}) })
.innerJoinAndSelect('p.operadorEntrega', 'oe') .then((infoPrestamos) => {
.innerJoinAndSelect('p.operadorRegreso', 'or') const prestamos: Prestamo[] = [];
.innerJoinAndSelect('p.usuario', 'u') for (let i = 0; i < infoPrestamos[0].length; i++)
.innerJoinAndSelect('e.carrito', 'c') prestamos.push(
.innerJoinAndSelect('e.status', 's') this.repository.create({
.innerJoinAndSelect('oe.tipoUsuario', 'tuoe') id_prestamo: infoPrestamos[0][i].id_prestamo,
.innerJoinAndSelect('or.tipoUsuario', 'tuor') activo: infoPrestamos[0][i].activo === 1,
.innerJoinAndSelect('u.instituciones', 'is') cancelado_operador: infoPrestamos[0][i].cancelado_operador === 1,
.innerJoinAndSelect('c.modulo', 'm') cancelado_usuario: infoPrestamos[0][i].cancelado_usuario === 1,
.innerJoinAndSelect('c.tipoCarrito', 'tc') fecha_entrega: infoPrestamos[0][i].fecha_entrega,
.innerJoinAndSelect('is.institucionCarrera', 'ic') fecha_inicio: infoPrestamos[0][i].fecha_inicio,
.innerJoinAndSelect('m.institucion', 'i') hora_fin: infoPrestamos[0][i].hora_fin,
.innerJoinAndSelect('ic.carrera', 'ca') hora_inicio: infoPrestamos[0][i].hora_inicio,
.innerJoinAndSelect('ic.institucion', 'in') hora_max_recoger: infoPrestamos[0][i].hora_max_recoger,
.orderBy('p.id_prestamo', 'DESC') usuario: {
.skip((pagina - 1) * 25) id_usuario: infoPrestamos[0][i].id_usuario,
.take(25) nombre: infoPrestamos[0][i].nombre,
.getManyAndCount(), usuario: infoPrestamos[0][i].usuario,
tipoUsuario: {
id_tipo_usuario: infoPrestamos[0][i].id_tipo_usuario,
},
},
operadorEntrega: {
id_operador: infoPrestamos[0][i].id_operador_entrega,
operador: infoPrestamos[0][i].operador_entrega,
},
operadorRegreso: {
id_operador: infoPrestamos[0][i].id_operador_regreso,
operador: infoPrestamos[0][i].operador_regreso,
},
}),
); );
return [prestamos, infoPrestamos[1]];
});
} }
findById(id_prestamo: number) { findById(id_prestamo: number) {
@ -540,7 +442,7 @@ export class PrestamoService {
}); });
} }
async findInfoPrestamoAll(filtros: { async findFullInfoPrestamoAll(filtros: {
pagina?: string; pagina?: string;
activo?: string | boolean; activo?: string | boolean;
cancelado_operador?: string; cancelado_operador?: string;
@ -693,6 +595,18 @@ export class PrestamoService {
}); });
} }
findInfoPrestamoDesactivables() {
return this.informacionPrestamoView
.find({ where: { activo: 1, id_status: 2 } })
.then((infoPrestamo) => {
const prstamos: Prestamo[] = [];
for (let i = 0; i < infoPrestamo.length; i++)
this.viewToPrestamo(infoPrestamo[i]);
return prstamos;
});
}
async findInfoPrestamoByNumeroInventario( async findInfoPrestamoByNumeroInventario(
institucion: Institucion, institucion: Institucion,
numero_inventario: string, numero_inventario: string,