carga masiva
This commit is contained in:
@@ -0,0 +1,95 @@
|
||||
const fs = require('fs');
|
||||
const csv = require('csvtojson');
|
||||
const { Op } = require('sequelize');
|
||||
const Equipo = require('./../../db/tablas/Equipo');
|
||||
const Carrito = require('./../../db/tablas/Carrito');
|
||||
const TipoCarrito = require('./../../db/tablas/TipoCarrito');
|
||||
const Programa = require('./../../db/tablas/Programa');
|
||||
const Modulo = require('./../../db/tablas/Modulo');
|
||||
|
||||
const cargaMasiva = async (file) => {
|
||||
const path = `server/uploads/${file}`;
|
||||
const equiposNuevos = [];
|
||||
const errores = [];
|
||||
|
||||
await csv()
|
||||
.fromFile(path)
|
||||
.then(async (equipos) => {
|
||||
for (let i = 0; i < equipos.length; i++) {
|
||||
const existeModulo = await Modulo.findOne({
|
||||
where: { idModulo: Number(equipos[i].modulo) },
|
||||
});
|
||||
const existeTipoCarrito = await TipoCarrito.findOne({
|
||||
where: { tipoCarrito: equipos[i].tipo },
|
||||
});
|
||||
const existePrograma = equipos[i].programa
|
||||
? await Programa.findOne({ where: { programa: equipos[i].programa } })
|
||||
: {};
|
||||
let existeCarrito = await Carrito.findOne({
|
||||
where: { sobrenombre: equipos[i].carritoSobrenombre },
|
||||
});
|
||||
let existeEquipo = await Equipo.findOne({
|
||||
where: {
|
||||
[Op.or]: [
|
||||
{ numeroSerie: equipos[i].numeroSerie },
|
||||
{ numeroInventario: equipos[i].numeroInventario },
|
||||
],
|
||||
},
|
||||
});
|
||||
|
||||
if (
|
||||
existeEquipo ||
|
||||
!existeModulo ||
|
||||
!existeTipoCarrito ||
|
||||
(equipos[i].programa && !existePrograma)
|
||||
) {
|
||||
let error = '';
|
||||
|
||||
if (existeEquipo)
|
||||
error += `El equipo con numero de serie ${existeEquipo.numeroSerie} ya existe. `;
|
||||
else if (!existeModulo)
|
||||
error += `El modulo ${equipos[i].modulo} no existe. `;
|
||||
else if (!existeTipoCarrito)
|
||||
error += `El tipo de equipo ${equipos[i].tipo} no existe. `;
|
||||
else error += `El programa ${equipos[i].programa} no existe. `;
|
||||
error += `Se salto esta linea.\n`;
|
||||
errores.push(error);
|
||||
continue;
|
||||
}
|
||||
if (!existeCarrito) {
|
||||
existeCarrito = await Carrito.findAll({
|
||||
where: { idModulo: existeModulo.idModulo },
|
||||
}).then((res) =>
|
||||
Carrito.create({
|
||||
carrito: res.length + 1,
|
||||
sobrenombre: equipos[i].carritoSobrenombre,
|
||||
idTipoCarrito: existeTipoCarrito.idTipoCarrito,
|
||||
idModulo: existeModulo.idModulo,
|
||||
})
|
||||
);
|
||||
}
|
||||
existeEquipo = await Equipo.findAll({
|
||||
where: { idCarrito: existeCarrito.idCarrito },
|
||||
}).then((res) =>
|
||||
Equipo.create({
|
||||
numeroSerie: equipos[i].numeroSerie,
|
||||
numeroInventario: equipos[i].numeroInventario,
|
||||
sobrenombre: res.length + 1,
|
||||
idCarrito: existeCarrito.idCarrito,
|
||||
idPrograma: existePrograma.idPrograma
|
||||
? existePrograma.idPrograma
|
||||
: null,
|
||||
})
|
||||
);
|
||||
equiposNuevos.push(existeEquipo);
|
||||
}
|
||||
fs.unlinkSync(path);
|
||||
});
|
||||
return {
|
||||
message: 'Se subio correctamente el archivo csv.',
|
||||
equiposNuevos,
|
||||
errores,
|
||||
};
|
||||
};
|
||||
|
||||
module.exports = cargaMasiva;
|
||||
Reference in New Issue
Block a user