const xlsx = require('node-xlsx'); const UResponsable = require('../../models/tablas/UResponsable'); const Ubicacion = require('../../models/tablas/Ubicacion'); const Uso = require('../../models/tablas/Uso'); const Marca = require('../../models/tablas/Marca'); const Tipo = require('../../models/tablas/Tipo'); const Inventario = require('../../models/tablas/Inventario'); const Printers = require('../../models/tablas/Printers'); const post = async(req, res) => { const file = req.files.printers; let printers = []; let ubicaciones = []; let unidades = []; let usos = []; let tipos = []; 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 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 })); await Tipo.findAll({ attributes: ['tipo'], order: ['idTipo'] }) .then((result) => { result.forEach(el => tipos.push(Object.entries(el.dataValues))); tipos = tipos.flat(2); tipos = tipos.filter(filtro => filtro != 'tipo') }).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 printer = { noInventario: row[0], idTipo: tipos.indexOf(row[1]) + 1, modelo: row[2], idMarca: marcas.indexOf(row[3]) + 1, noSerie: row[4], descripcion: row[5], idActivoFijo: 6, noResguardo: row[6], idUnidadResponsable: unidades.indexOf(row[7]) + 1, idUbicacion: ubicaciones.indexOf(row[9]) + 1, idUso: usos.indexOf(row[10]) + 1 } printers.push(printer); }); let count = 0; for (printer of printers) { count++; await Inventario.create({ noInventario: printer.noInventario, noResguardo: printer.noResguardo, idActivoFijo: 6, idUnidadResponsable: printer.idUnidadResponsable, idUbicacion: printer.idUbicacion, idUso: printer.idUso }) .then(async() => { await Printers.create({ noInventario: printer.noInventario, idMarca: printer.idMarca, modelo: printer.modelo, noSerie: printer.noSerie, idTipo: printer.idTipo, descripcion: printer.descripcion, idActivoFijo: 6 }) .catch(async(err) => { await Inventario.destroy({ where: { noInventario: printer.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