carga masiva usuarios
This commit is contained in:
@@ -15,6 +15,7 @@ const equipos = async () =>
|
||||
where: { idCarrito: res[i].idCarrito },
|
||||
include: [{ model: Status }],
|
||||
attributes: ['idEquipo', 'numeroSerie', 'numeroInventario', 'equipo'],
|
||||
order: [['equipo', 'ASC']],
|
||||
});
|
||||
return res;
|
||||
});
|
||||
|
||||
@@ -0,0 +1,145 @@
|
||||
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 TipoUsuario = require(`${dbPath}/TipoUsuario`);
|
||||
const Usuario = require(`${dbPath}/Usuario`);
|
||||
|
||||
const cargaMasiva = async (file) => {
|
||||
const path = `server/uploads/${file}`;
|
||||
const usuariosNuevos = [];
|
||||
const usuariosUpdate = [];
|
||||
const errores = [];
|
||||
const avisos = [];
|
||||
|
||||
return csv()
|
||||
.fromFile(path)
|
||||
.then(async (usuarios) => {
|
||||
for (let i = 0; i < usuarios.length; i++) {
|
||||
const mensajeErrBase = `Se salto la linea ${i + 2} por:`;
|
||||
|
||||
if (
|
||||
!usuarios[i].cuenta ||
|
||||
!usuarios[i].apellidop ||
|
||||
!usuarios[i].apellidom ||
|
||||
!usuarios[i].nombrew ||
|
||||
!usuarios[i].tipoUsuario
|
||||
) {
|
||||
if (!usuarios[i].cuenta)
|
||||
errores.push(`${mensajeErrBase} falta variable cuenta.`);
|
||||
if (!usuarios[i].apellidop)
|
||||
errores.push(`${mensajeErrBase} falta variable apellidop.`);
|
||||
if (!usuarios[i].apellidom)
|
||||
errores.push(`${mensajeErrBase} falta variable apellidom.`);
|
||||
if (!usuarios[i].nombrew)
|
||||
errores.push(`${mensajeErrBase} falta variable nombrew.`);
|
||||
if (!usuarios[i].tipoUsuario)
|
||||
errores.push(`${mensajeErrBase} falta variable tipoUsuario.`);
|
||||
continue;
|
||||
}
|
||||
|
||||
const idTipoUsuario = await TipoUsuario.findOne({
|
||||
where: { tipoUsuario: usuarios[i].tipoUsuario },
|
||||
}).then((res) => {
|
||||
if (!res) {
|
||||
errores.push(`${mensajeErrBase} tipo de usuario no valido.`);
|
||||
return null;
|
||||
}
|
||||
return res.idTipoUsuario;
|
||||
});
|
||||
let idCarrera = null;
|
||||
|
||||
if (!idTipoUsuario) continue;
|
||||
if (idTipoUsuario != 3) {
|
||||
if (!usuarios[i].nomplan) {
|
||||
errores.push(`${mensajeErrBase} falta variable nomplan.`);
|
||||
continue;
|
||||
}
|
||||
idCarrera = await Carrera.findOne({
|
||||
where: { carrera: usuarios[i].nomplan },
|
||||
})
|
||||
.then((res) => {
|
||||
if (!res) {
|
||||
avisos.push(
|
||||
`Se añadio el posgrado/la carrera ${usuarios[i].nomplan} al catálogo.`
|
||||
);
|
||||
return Carrera.create({ carrera: usuarios[i].nomplan });
|
||||
}
|
||||
return res;
|
||||
})
|
||||
.then((res) => res.idCarrera);
|
||||
}
|
||||
if (usuarios[i].cuenta.length === 8)
|
||||
usuarios[i].cuenta = `0${usuarios[i].cuenta}`;
|
||||
await Usuario.findOne({
|
||||
where: { usuario: usuarios[i].cuenta },
|
||||
include: [{ model: Carrera }],
|
||||
}).then(async (res) => {
|
||||
let usuario = res;
|
||||
|
||||
if (!usuario) {
|
||||
const data = {
|
||||
usuario: usuarios[i].cuenta,
|
||||
nombre: `${usuarios[i].apellidop} ${usuarios[i].apellidom} ${usuarios[i].nombrew}`,
|
||||
idTipoUsuario,
|
||||
};
|
||||
|
||||
if (data.idTipoUsuario != 3) data.idCarrera = idCarrera;
|
||||
await Usuario.create(data)
|
||||
.then((res) =>
|
||||
Usuario.findOne({
|
||||
where: { idUsuario: res.idUsuario },
|
||||
include: [{ model: Carrera }, { model: TipoUsuario }],
|
||||
attributes: ['idUsuario', 'usuario', 'nombre'],
|
||||
})
|
||||
)
|
||||
.then((res) => usuariosNuevos.push(res));
|
||||
} else {
|
||||
let update = {};
|
||||
|
||||
if (!usuario.activo) {
|
||||
update.activo = true;
|
||||
usuariosUpdate.push(
|
||||
`La cuenta del usuario: ${usuario.usuario} fue activada.`
|
||||
);
|
||||
}
|
||||
if (
|
||||
usuario.Carrera &&
|
||||
usuario.Carrera.carrera != usuarios[i].nomplan
|
||||
) {
|
||||
update.idCarrera = idCarrera;
|
||||
usuariosUpdate.push(
|
||||
`Se cambio la carrera del usuario: ${usuario.usuario} de ${usuario.Carrera.carrera} por ${usuarios[i].nomplan}.`
|
||||
);
|
||||
}
|
||||
if (usuario.idTipoUsuario != idTipoUsuario) {
|
||||
update.idTipoUsuario = idTipoUsuario;
|
||||
usuariosUpdate.push(
|
||||
`Se cambio el tipo de usuario del usuario: ${usuario.usuario} de ${usuario.TipoUsuario.tipoUsuario} por ${usuarios[i].tipoUsuario}.`
|
||||
);
|
||||
}
|
||||
if (!validarObjetoVacio(update))
|
||||
await Usuario.update(update, {
|
||||
where: { idUsuario: usuario.idUsuario },
|
||||
});
|
||||
else
|
||||
errores.push(
|
||||
`${mensajeErrBase} no se mando nada para actualizar.`
|
||||
);
|
||||
}
|
||||
});
|
||||
}
|
||||
return eliminarArchivo(path);
|
||||
})
|
||||
.then(() => ({
|
||||
message: 'Se subió correctamente el archivo csv.',
|
||||
usuariosNuevos,
|
||||
usuariosUpdate,
|
||||
errores,
|
||||
avisos,
|
||||
}));
|
||||
};
|
||||
|
||||
module.exports = cargaMasiva;
|
||||
@@ -1,126 +0,0 @@
|
||||
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 TipoUsuario = require(`${dbPath}/TipoUsuario`);
|
||||
const Usuario = require(`${dbPath}/Usuario`);
|
||||
|
||||
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(update))
|
||||
await Usuario.update(update, {
|
||||
where: { idUsuario: usuario.idUsuario },
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
await eliminarArchivo(path);
|
||||
});
|
||||
return {
|
||||
message: 'Se subió correctamente el archivo csv.',
|
||||
alumnosNuevos,
|
||||
alumnosUpdate,
|
||||
errores,
|
||||
avisos,
|
||||
};
|
||||
};
|
||||
|
||||
module.exports = cargaMasiva;
|
||||
@@ -5,7 +5,7 @@ const upload = multer({ dest: 'server/uploads' });
|
||||
const { verificaToken } = require('../middleware/autentificacion');
|
||||
const route = '/usuario';
|
||||
const controllerPath = '../controller/Usuario';
|
||||
const cargaMasivaPosgrados = require(`${controllerPath}/cargaMasivaPosgrados`);
|
||||
const cargaMasiva = require(`${controllerPath}/cargaMasiva`);
|
||||
const crear = require(`${controllerPath}/crear`);
|
||||
const escolares = require(`${controllerPath}/escolares`);
|
||||
const login = require(`${controllerPath}/login`);
|
||||
@@ -19,7 +19,7 @@ app.post(
|
||||
upload.single('csv'),
|
||||
(req, res) => {
|
||||
if (req.file) {
|
||||
return cargaMasivaPosgrados(req.file.filename)
|
||||
return cargaMasiva(req.file.filename)
|
||||
.then((data) => {
|
||||
res.status(201).json(data);
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user