Files
pcpuma_acatlan_api/server/controller/Usuario/cargaMasivaPosgrados.js
T
2021-05-24 01:02:43 -05:00

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;