carga masiva
This commit is contained in:
@@ -9,7 +9,8 @@ const Programa = require('../../db/tablas/Programa');
|
||||
const Usuario = require('../../db/tablas/Usuario');
|
||||
|
||||
const cargaMasiva = async (file) => {
|
||||
let path = `server/uploads/${file}`;
|
||||
const path = `server/uploads/${file}`;
|
||||
const today = moment();
|
||||
|
||||
csv()
|
||||
.fromFile(path)
|
||||
@@ -17,88 +18,113 @@ const cargaMasiva = async (file) => {
|
||||
let mensaje = '';
|
||||
|
||||
for (let i = 0; i < programas.length; i++) {
|
||||
let usuario = '';
|
||||
let clavePrograma = programas[i].clave;
|
||||
let acatlan = false;
|
||||
let busquedaPrograma = {
|
||||
where: { clavePrograma: programas[i].clave },
|
||||
include: [{ model: Usuario }],
|
||||
};
|
||||
|
||||
mensaje += `Linea ${i + 2}\n`;
|
||||
try {
|
||||
usuario = validar.validarCorreo(programas[i].correo);
|
||||
} catch (error) {
|
||||
mensaje += 'Correo no valido, se salto esta linea.\n\n';
|
||||
if (
|
||||
!programas[i].correo ||
|
||||
!programas[i].nombre ||
|
||||
!programas[i].institucion ||
|
||||
!programas[i].dependencia ||
|
||||
!programas[i].programa ||
|
||||
!programas[i].clave
|
||||
) {
|
||||
mensaje +=
|
||||
'Esta liena fue saltada por falta de datos en alguno de sus campos.\n\n';
|
||||
continue;
|
||||
}
|
||||
|
||||
await Usuario.findOne({
|
||||
where: { usuario },
|
||||
try {
|
||||
validar.validarCorreo(programas[i].correo);
|
||||
} catch (err) {
|
||||
console.log(err);
|
||||
mensaje += 'Esta linea contiene un correo no valido.\n\n';
|
||||
continue;
|
||||
}
|
||||
const acatlan = programas[i].clave.substr(4, 7) === '-12/20-';
|
||||
const activo = Number(programas[i].clave.substr(0, 4)) === today.year();
|
||||
const usuario = await Usuario.findOne({
|
||||
where: { usuario: programas[i].correo },
|
||||
}).then(async (res) => {
|
||||
let dataUsuario = res;
|
||||
|
||||
if (!dataUsuario) {
|
||||
let password = encriptar.generarPassword();
|
||||
let correo = correos.enviarSec(
|
||||
if (!res) {
|
||||
const password = encriptar.generarPassword();
|
||||
const correo = correos.enviarSec(
|
||||
password,
|
||||
usuario,
|
||||
programas[i].correo,
|
||||
programas[i].nombre
|
||||
);
|
||||
|
||||
await Usuario.create({
|
||||
usuario,
|
||||
await gmail(correo.subject, programas[i].correo, correo.msj);
|
||||
return Usuario.create({
|
||||
usuario: programas[i].correo,
|
||||
password: encriptar.encriptar(password),
|
||||
nombre: programas[i].nombre,
|
||||
activo: true,
|
||||
idTipoUsuario: 2,
|
||||
}).then((res) => {
|
||||
dataUsuario = res.dataValues;
|
||||
mensaje += `Se creo un responsable de programa con correo: ${dataUsuario.usuario} e id: ${dataUsuario.idUsuario}\n`;
|
||||
mensaje += `Se creo el responsable con id ${res.idUsuario} y correo ${res.usuario}\n`;
|
||||
return res;
|
||||
});
|
||||
await gmail(correo.subject, usuario, correo.msj);
|
||||
}
|
||||
if (clavePrograma.substr(4, 7) === '-12/20-') acatlan = true;
|
||||
if (acatlan) busquedaPrograma.where.idUsuario = dataUsuario.idUsuario;
|
||||
await Programa.findOne(busquedaPrograma).then(async (res) => {
|
||||
let dataPrograma = res;
|
||||
return res;
|
||||
});
|
||||
|
||||
if (!dataPrograma) {
|
||||
let activo = true;
|
||||
|
||||
if (clavePrograma.substr(0, 4) < moment().year()) activo = false;
|
||||
if (clavePrograma.substr(0, 4) > moment().year())
|
||||
mensaje += `El año de esta clave de programa no es valido\n\n`;
|
||||
else {
|
||||
await Programa.create({
|
||||
if (!acatlan) {
|
||||
await Programa.findOne({
|
||||
where: { clavePrograma: programas[i].clave },
|
||||
include: [{ model: Usuario }],
|
||||
})
|
||||
.then((res) => {
|
||||
if (!res) {
|
||||
return Programa.create({
|
||||
institucion: programas[i].institucion,
|
||||
dependencia: programas[i].dependencia,
|
||||
programa: programas[i].programa,
|
||||
clavePrograma,
|
||||
acatlan,
|
||||
clavePrograma: programas[i].clave,
|
||||
activo,
|
||||
idUsuario: dataUsuario.idUsuario,
|
||||
}).then((res) => {
|
||||
dataPrograma = res.dataValues;
|
||||
mensaje += `Se agrego el programa: ${
|
||||
dataPrograma.programa
|
||||
} con clave: ${dataPrograma.clavePrograma} al responsable ${
|
||||
dataUsuario.usuario
|
||||
} ${
|
||||
dataPrograma.activo ? 'se encuentra' : 'no se encuentra'
|
||||
} activo y ${
|
||||
dataPrograma.acatlan ? 'pertenece' : 'no pertenece'
|
||||
} a Acatlán\n\n`;
|
||||
idUsuario: usuario.idUsuario,
|
||||
});
|
||||
}
|
||||
} else
|
||||
mensaje += `Ya existe el programa con clave de programa: ${dataPrograma.clavePrograma} que pertenece al responsable con correo: ${dataPrograma.Usuario.usuario}\n\n`;
|
||||
});
|
||||
});
|
||||
mensaje += `El programa ${res.clavePrograma} ya ${
|
||||
programas[i].correo === res.Usuario.usuario
|
||||
? 'le pertenece a este responsable'
|
||||
: 'fue asignado a otro responsable'
|
||||
} con id ${res.Usuario.idUsuario} y correo ${
|
||||
res.Usuario.usuario
|
||||
}.\n`;
|
||||
return false;
|
||||
})
|
||||
.then((res) => {
|
||||
if (res)
|
||||
mensaje += `Se asigno el programa ${res.clavePrograma} con id ${res.idPrograma} al usuario con correo ${usuario.idUsuario} y correo ${usuario.usuario}\n`;
|
||||
});
|
||||
} else {
|
||||
await Programa.findOne({
|
||||
where: {
|
||||
clavePrograma: programas[i].clave,
|
||||
idUsuario: usuario.idUsuario,
|
||||
},
|
||||
})
|
||||
.then((res) => {
|
||||
if (!res) {
|
||||
return Programa.create({
|
||||
institucion: programas[i].institucion,
|
||||
dependencia: programas[i].dependencia,
|
||||
programa: programas[i].programa,
|
||||
clavePrograma: programas[i].clave,
|
||||
activo,
|
||||
acatlan,
|
||||
idUsuario: usuario.idUsuario,
|
||||
});
|
||||
}
|
||||
mensaje += `El programa ${res.clavePrograma} ya pertenece al responsable con id ${usuario.idUsuario} y correo ${usuario.usuario}\n`;
|
||||
return false;
|
||||
})
|
||||
.then((res) => {
|
||||
if (res)
|
||||
mensaje += `Se asigno el programa ${res.clavePrograma} con id ${res.idPrograma} al usuario con correo ${usuario.idUsuario} y correo ${usuario.usuario}\n`;
|
||||
});
|
||||
}
|
||||
mensaje += '\n';
|
||||
}
|
||||
await gmail('Informe de carga masiva', 'lemuel@acatlan.unam.mx', mensaje);
|
||||
await gmail('Informe de carga masiva', 'dscad@acatlan.unam.mx', mensaje);
|
||||
// await gmail('Informe de carga masiva', 'tramites.ss@acatlan.unam.mx', mensaje);
|
||||
await gmail('Reporte carga masiva', 'lemuel@acatlan.unam.mx', mensaje);
|
||||
fs.unlinkSync(path);
|
||||
});
|
||||
return {
|
||||
|
||||
Reference in New Issue
Block a user