Files
servicio_social_api/server/controller/Programa/cargaMasiva.js
T

119 lines
4.2 KiB
JavaScript
Raw Normal View History

2020-12-27 21:05:36 -06:00
const fs = require('fs');
const moment = require('moment');
const csv = require('csvtojson');
const gmail = require('../../helper/gmail');
const correos = require('../../helper/correos');
const encriptar = require('../../helper/encriptar');
const validar = require('../../helper/validar');
const Programa = require('../../db/tablas/Programa');
const Usuario = require('../../db/tablas/Usuario');
const cargaMasiva = async (file) => {
let path = `server/uploads/${file}`;
csv()
.fromFile(path)
.then(async (programas) => {
let mensaje = '';
for (let i = 0; i < programas.length; i++) {
let usuario = '';
let clavePrograma = programas[i].clave;
let acatlan = false;
let busquedaPrograma = {};
mensaje += `Linea ${i + 2}\n`;
try {
usuario = validar.validarCorreo(programas[i].correo);
} catch (error) {
mensaje += 'Correo no valido, se salto esta linea.\n\n';
continue;
}
await Usuario.findOne({
where: { usuario },
}).then(async (res) => {
let dataUsuario = res;
if (!dataUsuario) {
let password = encriptar.generarPassword();
let correo = correos.enviarSec(
password,
usuario,
programas[i].nombre
);
await Usuario.create({
usuario,
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`;
});
// await gmail(correo.subject, usuario, correo.msj);
}
if (clavePrograma.substr(4) === '-12/20-91') acatlan = true;
if (acatlan) {
busquedaPrograma = {
where: {
clavePrograma: programas[i].clave,
idUsuario: dataUsuario.idUsuario,
},
include: [{ model: Usuario }],
};
} else {
busquedaPrograma = {
where: { clavePrograma: programas[i].clave },
include: [{ model: Usuario }],
};
}
await Programa.findOne(busquedaPrograma).then(async (res) => {
let dataPrograma = res;
if (!dataPrograma) {
let activo = true;
if (clavePrograma.substr(0, 4) < moment().year()) activo = false;
2020-12-29 00:12:32 -06:00
if (clavePrograma.substr(0, 4) > moment().year())
2020-12-27 21:05:36 -06:00
mensaje += `El año de esta clave de programa no es valido\n\n`;
2020-12-29 00:12:32 -06:00
else {
2020-12-27 21:05:36 -06:00
await Programa.create({
institucion: programas[i].institucion,
dependencia: programas[i].dependencia,
programa: programas[i].programa,
clavePrograma,
acatlan,
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`;
});
}
2020-12-29 00:12:32 -06:00
} else
2020-12-27 21:05:36 -06:00
mensaje += `Ya existe el programa con clave de programa: ${dataPrograma.clavePrograma} que pertenece al responsable con correo: ${dataPrograma.Usuario.usuario}\n\n`;
});
});
}
2020-12-27 21:17:34 -06:00
gmail('Informe de carga masiva', 'lemuel@acatlan.unam.mx', mensaje);
2020-12-27 21:05:36 -06:00
fs.unlinkSync(path);
});
return {
message:
'Se subio correctamente el archivo csv, se enviará un correo a tramites.ss@acatlan.unam.mx con los detalles de la carga masiva.',
};
};
module.exports = cargaMasiva;