const { Op } = require('sequelize'); const validar = require('../../helper/validar'); const dbPath = '../../db/tablas'; const Carrera = require(`${dbPath}/Carrera`); const Carrito = require(`${dbPath}/Carrito`); const Equipo = require(`${dbPath}/Equipo`); const Modulo = require(`${dbPath}/Modulo`); const Prestamo = require(`${dbPath}/Prestamo`); const TipoCarrito = require(`${dbPath}/TipoCarrito`); const TipoUsuario = require(`${dbPath}/TipoUsuario`); const Usuario = require(`${dbPath}/Usuario`); const activos = async (body) => { const idModulo = validar.validarId(body.idModulo); const pagina = validar.validarNumero(body.pagina, true); const usuario = body.usuario ? validar.validarNumeroCuenta(body.usuario) : ''; const idPrestamo = body.idPrestamo ? validar.validarId(body.idPrestamo) : ''; const numeroInventario = body.numeroInventario ? validar.validarAlfanumerico( body.numeroInventario, 'El numero de inventario', 20 ) : ''; const idTipoCarrito = body.idTipoCarrito ? validar.validarId(body.idTipoCarrito) : null; let whereCarrito = [{ idModulo }]; if (idTipoCarrito) whereCarrito.push({ idTipoCarrito }); return Modulo.findOne({ where: { idModulo } }) .then((res) => { if (!res) throw new Error('No existe este modulo.'); return Prestamo.findAndCountAll({ where: { activo: true, idPrestamo: { [Op.like]: `%${idPrestamo}%` } }, include: [ { model: Equipo, where: { numeroInventario: { [Op.like]: `%${numeroInventario}%` } }, include: [ { model: Carrito, where: { [Op.and]: whereCarrito }, include: [{ model: TipoCarrito }, { model: Modulo }], }, ], }, { model: Usuario, where: { usuario: { [Op.like]: `%${usuario}%` } }, include: [{ model: TipoUsuario }, { model: Carrera }], }, ], limit: 25, offset: 25 * (pagina - 1), order: [['createdAt', 'DESC']], }); }) .then((res) => { for (let i = 0; i < res.rows.length; i++) { delete res.rows[i].dataValues.idUsuario; delete res.rows[i].dataValues.idOperadorEntrega; delete res.rows[i].dataValues.idOperadorRegreso; delete res.rows[i].dataValues.idOperadorCancelacion; delete res.rows[i].dataValues.idEquipo; delete res.rows[i].dataValues.Equipo.dataValues.idPrograma; delete res.rows[i].dataValues.Equipo.dataValues.idStatus; delete res.rows[i].dataValues.Equipo.dataValues.idCarrito; delete res.rows[i].dataValues.Equipo.dataValues.Carrito.dataValues .idTipoCarrito; delete res.rows[i].dataValues.Equipo.dataValues.Carrito.dataValues .idModulo; delete res.rows[i].dataValues.Equipo.dataValues.Carrito.dataValues .activo; delete res.rows[i].dataValues.Usuario.dataValues.idTipoUsuario; delete res.rows[i].dataValues.Usuario.dataValues.multa; delete res.rows[i].dataValues.Usuario.dataValues.activo; delete res.rows[i].dataValues.Usuario.dataValues.idCarrera; delete res.rows[i].dataValues.Usuario.dataValues.password; } return { count: res.count, activos: res.rows }; }); }; module.exports = activos;