127 lines
4.3 KiB
JavaScript
127 lines
4.3 KiB
JavaScript
const csv = require('csvtojson');
|
|
const helperPath = '../../helper';
|
|
const { validarObjetoVacio } = require(`${helperPath}/validar`);
|
|
const { eliminarArchivo } = require(`${helperPath}/helper`);
|
|
const dbPath = '../../db/tablas';
|
|
const Carrera = require(`${dbPath}/Carrera`);
|
|
const Usuario = require(`${dbPath}/Usuario`);
|
|
const TipoUsuario = require(`${dbPath}/TipoUsuario`);
|
|
|
|
const cargaMasiva = async (file) => {
|
|
const path = `server/uploads/${file}`;
|
|
const alumnosNuevos = [];
|
|
const alumnosUpdate = [];
|
|
const errores = [];
|
|
const avisos = [];
|
|
|
|
await csv()
|
|
.fromFile(path)
|
|
.then(async (alumnos) => {
|
|
for (let i = 0; i < alumnos.length; i++) {
|
|
if (alumnos[i].cuenta.length === 8)
|
|
alumnos[i].cuenta = '0' + alumnos[i].cuenta;
|
|
await Usuario.findOne({
|
|
where: { usuario: alumnos[i].cuenta },
|
|
include: [{ model: Carrera }],
|
|
}).then(async (res) => {
|
|
let usuario = res;
|
|
|
|
if (!usuario) {
|
|
await Carrera.findOne({
|
|
where: { carrera: alumnos[i].nomplan },
|
|
})
|
|
.then((res) => {
|
|
if (!res) {
|
|
avisos.push(
|
|
`Se añadio el posgrado ${alumnos[i].nomplan} al catalogo.`
|
|
);
|
|
return Carrera.create({ carrera: alumnos[i].nomplan });
|
|
}
|
|
return res;
|
|
})
|
|
.then((res) =>
|
|
Usuario.create({
|
|
usuario: alumnos[i].cuenta,
|
|
nombre: `${alumnos[i].apellidop} ${alumnos[i].apellidom} ${alumnos[i].nombrew}`,
|
|
idCarrera: res.idCarrera,
|
|
idTipoUsuario: 5,
|
|
})
|
|
)
|
|
.then((res) =>
|
|
Usuario.findOne({
|
|
where: { idUsuario: res.idUsuario },
|
|
include: [{ model: Carrera }, { model: TipoUsuario }],
|
|
})
|
|
)
|
|
.then((res) => {
|
|
alumnosNuevos.push({
|
|
idUsuario: res.idUsuario,
|
|
usuario: res.usuario,
|
|
nombre: res.nombre,
|
|
Carrera: {
|
|
idCarrera: res.Carrera.idCarrera,
|
|
carrera: res.Carrera.carrera,
|
|
},
|
|
TipoUsuario: {
|
|
idTipoUsuario: res.TipoUsuario.idTipoUsuario,
|
|
tipoUsuario: res.TipoUsuario.tipoUsuario,
|
|
},
|
|
});
|
|
});
|
|
} else {
|
|
let update = {};
|
|
|
|
if (!usuario.activo) {
|
|
update.activo = true;
|
|
alumnosUpdate.push(`El alumno ${usuario.usuario} fue activado.`);
|
|
}
|
|
if (usuario.Carrera.carrera != alumnos[i].nomplan) {
|
|
await Carrera.findOne({
|
|
where: { carrera: alumnos[i].nomplan },
|
|
})
|
|
.then((res) => {
|
|
if (!res) {
|
|
avisos.push(
|
|
`Se añadio el posgrado ${alumnos[i].nomplan} al catalogo.`
|
|
);
|
|
return Carrera.create({ carrera: alumnos[i].nomplan });
|
|
}
|
|
return res;
|
|
})
|
|
.then((res) => {
|
|
update.idCarrera = res.idCarrera;
|
|
alumnosUpdate.push(
|
|
`Se cambio la carrera del alumno ${usuario.usuario} de ${usuario.Carrera.carrera} por ${res.carrera}.`
|
|
);
|
|
});
|
|
}
|
|
if (usuario.idTipoUsuario === 3)
|
|
avisos.push(
|
|
`El alumno con id ${usuario.idUsuario} y numero de cuenta ${usuario.usuario} tambien es profesor.`
|
|
);
|
|
if (usuario.idTipoUsuario === 4) {
|
|
update.idTipoUsuario = 5;
|
|
alumnosUpdate.push(
|
|
`Se cambio el tipo de usuario alumno con id ${usuario.idUsuario} y numero de cuenta ${usuario.usuario}.`
|
|
);
|
|
}
|
|
if (!validarObjetoVacio)
|
|
await Usuario.update(update, {
|
|
where: { idUsuario: usuario.idUsuario },
|
|
});
|
|
}
|
|
});
|
|
}
|
|
await eliminarArchivo(path);
|
|
});
|
|
return {
|
|
message: 'Se subio correctamente el archivo csv.',
|
|
alumnosNuevos,
|
|
alumnosUpdate,
|
|
errores,
|
|
avisos,
|
|
};
|
|
};
|
|
|
|
module.exports = cargaMasiva;
|