Fill from excel added
This commit is contained in:
@@ -0,0 +1,154 @@
|
||||
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
|
||||
Reference in New Issue
Block a user