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

183 lines
5.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 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