const xlsx = require('node-xlsx'); const UResponsable = require('../../models/tablas/UResponsable'); const Ubicacion = require('../../models/tablas/Ubicacion'); const Uso = require('../../models/tablas/Uso'); const ActivoFijo = require('../../models/tablas/ActivoFijo'); const OS = require('../../models/tablas/OS'); const Marca = require('../../models/tablas/Marca'); const Inventario = require('../../models/tablas/Inventario'); const Equipo = require('../../models/tablas/Equipo'); const post = async(req, res) => { const file = req.files.equipos; let equipos = []; let ubicaciones = []; let unidades = []; let usos = []; let activos = []; let os = []; let marcas = []; await Ubicacion.findAll({ attributes: ['ubicacion'], order: ['idUbicacion'] }) .then(resultado => { resultado.forEach(el => ubicaciones.push(Object.entries(el.dataValues))); resultado = ubicaciones.flat(2); ubicaciones = resultado.filter(ubicacion => ubicacion != 'ubicacion') }) .catch(err => res.status(500).json({ ok: false, error: err })); await UResponsable.findAll({ attributes: ['uResponsable'], order: ['idUnidadResponsable'] }) .then((result) => { result.forEach(el => unidades.push(Object.entries(el.dataValues))); unidades = unidades.flat(2); unidades = unidades.filter(filtro => filtro != 'uResponsable') }).catch((err) => res.status(500).json({ ok: false, error: err })); await Uso.findAll({ attributes: ['uso'], order: ['idUso'] }) .then((result) => { result.forEach(el => usos.push(Object.entries(el.dataValues))); usos = usos.flat(2); usos = usos.filter(filtro => filtro != 'uso') }).catch((err) => res.status(500).json({ ok: false, error: err })); await ActivoFijo.findAll({ attributes: ['activoFijo'], order: ['idActivoFijo'] }) .then((result) => { result.forEach(el => activos.push(Object.entries(el.dataValues))); activos = activos.flat(2); activos = activos.filter(filtro => filtro != 'activoFijo') }).catch((err) => res.status(500).json({ ok: false, error: err })); await OS.findAll({ attributes: ['osname'], order: ['idOS'] }) .then((result) => { result.forEach(el => os.push(Object.entries(el.dataValues))); os = os.flat(2); os = os.filter(filtro => filtro != 'osname') }).catch((err) => res.status(500).json({ ok: false, error: err })); await Marca.findAll({ attributes: ['marca'], order: ['idMarca'] }) .then((result) => { result.forEach(el => marcas.push(Object.entries(el.dataValues))); marcas = marcas.flat(2); marcas = marcas.filter(filtro => filtro != 'marca') }).catch((err) => res.status(500).json({ ok: false, error: err })); let data = await xlsx.parse(file.tempFilePath); data = Object.entries(data[0]); data.shift(); data = data[0][1] data.shift(); data.forEach(row => { let equipo = { noInventario: row[0], activoFijo: activos.indexOf(row[1]) + 1, modelo: row[2], marca: marcas.indexOf(row[3]) + 1, noSerie: row[4], procesador: row[5], vProcesador: row[6], hdd: row[7], memoriasz: row[8], memoria: row[9], vMemoria: row[10], graficos: row[11], osname: os.indexOf(row[12]) + 1, noResguardo: row[13], uResponsable: unidades.indexOf(row[14]) + 1, ubicacion: ubicaciones.indexOf(row[16]) + 1, uso: usos.indexOf(row[17]) + 1, } equipos.push(equipo); }); let count = 0; for (equipo of equipos) { count++; await Inventario.create({ noInventario: equipo.noInventario, noResguardo: equipo.noResguardo, idActivoFijo: equipo.activoFijo, idUnidadResponsable: equipo.uResponsable, idUbicacion: equipo.ubicacion, idUso: equipo.uso }) .then(async() => { await Equipo.create({ noInventario: equipo.noInventario, idActivoFijo: equipo.activoFijo, idMarca: equipo.marca, idOS: equipo.osname, modelo: equipo.modelo, noSerie: equipo.noSerie, procesador: equipo.procesador, vProcesador: equipo.vProcesador, memoria: equipo.memoria, vMemoria: equipo.vMemoria, memoriasz: equipo.memoriasz, graficos: equipo.graficos, hdd: equipo.hdd }) .catch(async(err) => { await Inventario.destroy({ where: { noInventario: equipo.noInventario } }); return res.status(500).json({ ok: false, err }) }) }) .catch((e) => res.status(500).json({ ok: false, e })) } res.json({ ok: true, message: `${ count } records created successfully.` }) } module.exports = post