Files
censo2020Back/server/controller/upload/postP.js
T
2020-09-25 19:13:47 -05:00

154 lines
4.9 KiB
JavaScript

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