responder con el archivo en los reportes

This commit is contained in:
Lemuel Marquez
2021-05-12 19:08:28 -05:00
parent eb2313d671
commit f7c6b7a334
10 changed files with 187 additions and 146 deletions
+35
View File
@@ -0,0 +1,35 @@
TYPEDB = mariadb
DB = servicio_social
USERDB = root
PASSWORDDB = hola
HOSTDB = localhost
PORT = 3000
SALT_ROUNDS = 10
KEY = seed_de_pruebas
CADUCIDAD_TOKEN = 1800000
ESCOLARES = https://kalinga.acatlan.unam.mx/evaluacion/public_html/sybase/acceso.php?cuenta=
ESCOLARES_PASS = pass=c4rt3lgr1s
GMAIL = cidwa1@pcpuma.acatlan.unam.mx
GMAILPASSWORD = cidwaxd1
CARPETA = 1_1g8U13kIzLkKYBffgV4zV_7NOfg-2Uq
ADMIN = admin
ADMIN_PASSWORD = qwertyui
CASOS_ESPECIALES = sesocial@acatlan.unam.mx
CASOS_ESPECIALES_PASSWORD = qwertyui
+52 -54
View File
@@ -10,7 +10,7 @@ const Usuario = require(`${dbPath}/Usuario`);
const get = async (body) => {
const year = validar.validarNumero(body.year, 4);
const path = `csv/${year}_cuestionario_alumno.csv`;
const path = `server/uploads/${year}_cuestionario_alumno.csv`;
const data = [];
return Servicio.findAll({
@@ -22,61 +22,59 @@ const get = async (body) => {
{ model: Programa, where: { clavePrograma: { [Op.like]: `${year}%` } } },
{ model: Usuario },
],
}).then((res) => {
for (let i = 0; i < res.length; i++)
data.push({
idServicio: res[i].idServicio,
clavePrograma: res[i].Programa.clavePrograma,
usuario: res[i].Usuario.usuario,
nombre: res[i].Usuario.nombre,
idCuestionarioAlumno: res[i].CuestionarioAlumno.idCuestionarioAlumno,
sexo: res[i].CuestionarioAlumno.sexo,
edad: res[i].CuestionarioAlumno.edad,
servicioMedico: res[i].CuestionarioAlumno.servicioMedico,
p1: res[i].CuestionarioAlumno.p1,
p2: res[i].CuestionarioAlumno.p2,
p3: res[i].CuestionarioAlumno.p3,
p4: res[i].CuestionarioAlumno.p4,
p5: res[i].CuestionarioAlumno.p5,
p6: res[i].CuestionarioAlumno.p6,
p7: res[i].CuestionarioAlumno.p7,
p8: res[i].CuestionarioAlumno.p8,
p9: res[i].CuestionarioAlumno.p9,
p10: res[i].CuestionarioAlumno.p10,
p11: res[i].CuestionarioAlumno.p11,
p12: res[i].CuestionarioAlumno.p12,
p13: res[i].CuestionarioAlumno.p13,
p14: res[i].CuestionarioAlumno.p14,
p15: res[i].CuestionarioAlumno.p15,
p16: res[i].CuestionarioAlumno.p16,
p17: res[i].CuestionarioAlumno.p17,
p18: res[i].CuestionarioAlumno.p18,
p19: res[i].CuestionarioAlumno.p19,
p20: res[i].CuestionarioAlumno.p20,
p21: res[i].CuestionarioAlumno.p21,
p22: res[i].CuestionarioAlumno.p22,
p23: res[i].CuestionarioAlumno.p23,
p24: res[i].CuestionarioAlumno.p24,
p25: res[i].CuestionarioAlumno.p25,
p26: res[i].CuestionarioAlumno.p26,
p27: res[i].CuestionarioAlumno.p27,
p28: res[i].CuestionarioAlumno.p28,
p29: res[i].CuestionarioAlumno.p29,
p30: res[i].CuestionarioAlumno.p30,
createdAt: res[i].CuestionarioAlumno.createdAt,
order: [['createdAt']],
})
.then(async (res) => {
for (let i = 0; i < res.length; i++)
data.push({
idServicio: res[i].idServicio,
clavePrograma: res[i].Programa.clavePrograma,
usuario: res[i].Usuario.usuario,
nombre: res[i].Usuario.nombre,
idCuestionarioAlumno: res[i].CuestionarioAlumno.idCuestionarioAlumno,
sexo: res[i].CuestionarioAlumno.sexo,
edad: res[i].CuestionarioAlumno.edad,
servicioMedico: res[i].CuestionarioAlumno.servicioMedico,
p1: res[i].CuestionarioAlumno.p1,
p2: res[i].CuestionarioAlumno.p2,
p3: res[i].CuestionarioAlumno.p3,
p4: res[i].CuestionarioAlumno.p4,
p5: res[i].CuestionarioAlumno.p5,
p6: res[i].CuestionarioAlumno.p6,
p7: res[i].CuestionarioAlumno.p7,
p8: res[i].CuestionarioAlumno.p8,
p9: res[i].CuestionarioAlumno.p9,
p10: res[i].CuestionarioAlumno.p10,
p11: res[i].CuestionarioAlumno.p11,
p12: res[i].CuestionarioAlumno.p12,
p13: res[i].CuestionarioAlumno.p13,
p14: res[i].CuestionarioAlumno.p14,
p15: res[i].CuestionarioAlumno.p15,
p16: res[i].CuestionarioAlumno.p16,
p17: res[i].CuestionarioAlumno.p17,
p18: res[i].CuestionarioAlumno.p18,
p19: res[i].CuestionarioAlumno.p19,
p20: res[i].CuestionarioAlumno.p20,
p21: res[i].CuestionarioAlumno.p21,
p22: res[i].CuestionarioAlumno.p22,
p23: res[i].CuestionarioAlumno.p23,
p24: res[i].CuestionarioAlumno.p24,
p25: res[i].CuestionarioAlumno.p25,
p26: res[i].CuestionarioAlumno.p26,
p27: res[i].CuestionarioAlumno.p27,
p28: res[i].CuestionarioAlumno.p28,
p29: res[i].CuestionarioAlumno.p29,
p30: res[i].CuestionarioAlumno.p30,
createdAt: res[i].CuestionarioAlumno.createdAt,
});
await validar.eliminarArchivo(path).catch((err) => {
console.log(err);
});
try {
fs.unlinkSync(path);
} catch (err) {
console.log(err);
}
fs.appendFile(path, convertArrayToCSV(data), (err) => {
if (err) throw new Error(err);
return validar.crearArchivo(path, convertArrayToCSV(data));
})
.then((res) => {
return path;
});
return {
message: `Se creo/actualizo correctamente el csv del cuestionario de alumno del año ${year}.`,
};
});
};
module.exports = get;
+28 -30
View File
@@ -10,7 +10,7 @@ const Usuario = require(`${dbPath}/Usuario`);
const get = async (body) => {
const year = validar.validarNumero(body.year, 4);
const path = `csv/${year}_cuestionario_programa.csv`;
const path = `server/uploads/${year}_cuestionario_programa.csv`;
const data = [];
return Servicio.findAll({
@@ -22,37 +22,35 @@ const get = async (body) => {
{ model: Programa, where: { clavePrograma: { [Op.like]: `${year}-%` } } },
{ model: Usuario },
],
}).then((res) => {
for (let i = 0; i < res.length; i++)
data.push({
idServicio: res[i].idServicio,
clavePrograma: res[i].Programa.clavePrograma,
usuario: res[i].Usuario.usuario,
nombre: res[i].Usuario.nombre,
idCuestionarioPrograma:
res[i].CuestionarioPrograma.idCuestionarioPrograma,
actividad1: res[i].CuestionarioPrograma.actividad1,
actividad2: res[i].CuestionarioPrograma.actividad2,
actividad3: res[i].CuestionarioPrograma.actividad3,
actividad4: res[i].CuestionarioPrograma.actividad4,
actividad5: res[i].CuestionarioPrograma.actividad5,
retroalimentacion: res[i].CuestionarioPrograma.retroalimentacion,
p6: res[i].CuestionarioPrograma.p6,
p7: res[i].CuestionarioPrograma.p7,
createdAt: res[i].CuestionarioPrograma.createdAt,
order: [['createdAt']],
})
.then(async (res) => {
for (let i = 0; i < res.length; i++)
data.push({
idServicio: res[i].idServicio,
clavePrograma: res[i].Programa.clavePrograma,
usuario: res[i].Usuario.usuario,
nombre: res[i].Usuario.nombre,
idCuestionarioPrograma:
res[i].CuestionarioPrograma.idCuestionarioPrograma,
actividad1: res[i].CuestionarioPrograma.actividad1,
actividad2: res[i].CuestionarioPrograma.actividad2,
actividad3: res[i].CuestionarioPrograma.actividad3,
actividad4: res[i].CuestionarioPrograma.actividad4,
actividad5: res[i].CuestionarioPrograma.actividad5,
retroalimentacion: res[i].CuestionarioPrograma.retroalimentacion,
p6: res[i].CuestionarioPrograma.p6,
p7: res[i].CuestionarioPrograma.p7,
createdAt: res[i].CuestionarioPrograma.createdAt,
});
await validar.eliminarArchivo(path).catch((err) => {
console.log(err);
});
try {
fs.unlinkSync(path);
} catch (err) {
console.log(err);
}
fs.appendFile(path, convertArrayToCSV(data), (err) => {
if (err) throw new Error(err);
return validar.crearArchivo(path, convertArrayToCSV(data));
})
.then((res) => {
return path;
});
return {
message: `Se creo/actualizo correctamente el csv del cuestionario de programa del año ${year}.`,
};
});
};
module.exports = get;
+18 -20
View File
@@ -12,7 +12,7 @@ const gustavoBazPrada = async (body) => {
const year = validar.validarNumero(body.year, 4);
const inicio = moment(`${year}-01-31`);
const fin = moment(`${parseInt(year) + 1}-01-31`);
const path = `csv/${year}_gustavo_baz_prada.csv`;
const path = `server/uploads/${year}_gustavo_baz_prada.csv`;
const data = [];
return Servicio.findAll({
@@ -23,27 +23,25 @@ const gustavoBazPrada = async (body) => {
],
},
include: [{ model: Usuario }, { model: Carrera }],
}).then((res) => {
for (let i = 0; i < res.length; i++)
data.push({
numeroCuenta: res[i].Usuario.usuario,
nombre: res[i].Usuario.nombre,
licenciatura: res[i].Carrera.carrera,
correo: res[i].correo,
fechaLiberacion: validar.crearDDMMAAAA(res[i].fechaLiberacion),
order: [['fechaLiberacion']],
})
.then(async (res) => {
for (let i = 0; i < res.length; i++)
data.push({
numeroCuenta: res[i].Usuario.usuario,
nombre: res[i].Usuario.nombre,
licenciatura: res[i].Carrera.carrera,
correo: res[i].correo,
fechaLiberacion: validar.crearDDMMAAAA(res[i].fechaLiberacion),
});
await validar.eliminarArchivo(path).catch((err) => {
console.log(err);
});
try {
fs.unlinkSync(path);
} catch (err) {
console.log(err);
}
fs.appendFile(path, convertArrayToCSV(data), (err) => {
if (err) throw new Error(err);
return validar.crearArchivo(path, convertArrayToCSV(data));
})
.then((res) => {
return path;
});
return {
message: `Se creo/actualizo correctamente el csv del reporte Gustavo Baz Prada.`,
};
});
};
module.exports = gustavoBazPrada;
+28 -30
View File
@@ -12,14 +12,14 @@ const Usuario = require(`${dbPath}/Usuario`);
const reporte = async (body) => {
const inicio = validar.validarFecha(body.inicio);
const fin = validar.validarFecha(body.fin);
const path = `csv/reporte.csv`;
const path = `server/uploads/reporte.csv`;
const data = [];
return Servicio.findAll({
where: {
[Op.and]: [
{ fechaInicio: { [Op.gte]: inicio } },
{ fechaInicio: { [Op.lte]: fin } },
{ fechaInicio: { [Op.gte]: inicio.format() } },
{ fechaInicio: { [Op.lte]: fin.format() } },
],
},
include: [
@@ -28,35 +28,33 @@ const reporte = async (body) => {
{ model: Carrera },
{ model: Status },
],
}).then((res) => {
for (let i = 0; i < res.length; i++)
data.push({
numeroCuenta: res[i].Usuario.usuario,
nombre: res[i].Usuario.nombre,
licenciatura: res[i].Carrera.carrera,
correo: res[i].correo,
fechaInicio: validar.crearDDMMAAAA(res[i].fechaInicio),
fechaFin: validar.crearDDMMAAAA(res[i].fechaFin),
fechaLiberacion: validar.crearDDMMAAAA(res[i].fechaLiberacion),
institucion: res[i].Programa.institucion,
dependencia: res[i].Programa.dependencia,
programa: res[i].Programa.programa,
profesor: res[i].profesor,
clave: res[i].Programa.clavePrograma,
status: res[i].Status.status,
order: [['fechaInicio']],
})
.then(async (res) => {
for (let i = 0; i < res.length; i++)
data.push({
numeroCuenta: res[i].Usuario.usuario,
nombre: res[i].Usuario.nombre,
licenciatura: res[i].Carrera.carrera,
correo: res[i].correo,
fechaInicio: validar.crearDDMMAAAA(res[i].fechaInicio),
fechaFin: validar.crearDDMMAAAA(res[i].fechaFin),
fechaLiberacion: validar.crearDDMMAAAA(res[i].fechaLiberacion),
institucion: res[i].Programa.institucion,
dependencia: res[i].Programa.dependencia,
programa: res[i].Programa.programa,
profesor: res[i].profesor,
clave: res[i].Programa.clavePrograma,
status: res[i].Status.status,
});
await validar.eliminarArchivo(path).catch((err) => {
console.log(err);
});
try {
fs.unlinkSync(path);
} catch (err) {
console.log(err);
}
fs.appendFile(path, convertArrayToCSV(data), (err) => {
if (err) throw new Error(err);
return validar.crearArchivo(path, convertArrayToCSV(data));
})
.then((res) => {
return path;
});
return {
message: `Se creo/actualizo correctamente el csv del reporte de servicios sociales.`,
};
});
};
module.exports = reporte;
-7
View File
@@ -39,11 +39,6 @@ const diario = async () => {
servicios[i].Programa.Usuario.usuario,
correoResponsable.msj
);
await gmail(
correoAlumno.subject,
'araceli_linux@hotmail.com',
correoAlumno.msj
);
} else if (fechaFinDate - now.dayOfYear() <= -1) {
mensaje += `El servicio con id ${servicios[i].idServicio} del alumno ${servicios[i].Usuario.usuario} con id ${servicios[i].Usuario.idUsuario} paso al status 4\n`;
await Servicio.update(
@@ -52,9 +47,7 @@ const diario = async () => {
);
}
}
await gmail('Reporte función diario', 'lemuel@acatlan.unam.mx', mensaje);
await gmail('Reporte función diario', 'dscad@acatlan.unam.mx', mensaje);
};
diario();
+21
View File
@@ -1,3 +1,4 @@
const fs = require('fs');
const moment = require('moment');
const validator = require('validator');
const Servicio = require('../db/tablas/Servicio');
@@ -161,6 +162,24 @@ const crearDDMMAAAA = (date) => {
return ddmmaaaa;
};
const eliminarArchivo = (path) => {
return new Promise((resolve, reject) => {
fs.unlink(path, (err) => {
if (err) reject(err);
resolve({ message: 'Se elimino el archivo correctamente.' });
});
});
};
const crearArchivo = (path, texto) => {
return new Promise((resolve, reject) => {
fs.appendFile(path, texto, (err) => {
if (err) reject(err);
resolve({ message: 'Se creo el archivo correctamente.' });
});
});
};
module.exports = {
validar,
noValido,
@@ -177,4 +196,6 @@ module.exports = {
validarAccesibilidad,
isObjectEmpty,
crearDDMMAAAA,
eliminarArchivo,
crearArchivo,
};
+1 -1
View File
@@ -19,7 +19,7 @@ app.post(`${route}`, verificaToken, (req, res) => {
app.get(`${route}`, verificaToken, (req, res) => {
return get(req.query)
.then((data) => {
res.status(200).json(data);
res.download(data);
})
.catch((err) => {
res.status(400).json({ message: err.message });
+1 -1
View File
@@ -19,7 +19,7 @@ app.post(`${route}`, verificaToken, (req, res) => {
app.get(`${route}`, verificaToken, (req, res) => {
return get(req.query)
.then((data) => {
res.status(200).json(data);
res.download(data);
})
.catch((err) => {
res.status(400).json({ message: err.message });
+3 -3
View File
@@ -88,17 +88,17 @@ app.get(`${route}/alumno`, verificaToken, (req, res) => {
app.get(`${route}/reporte`, verificaToken, (req, res) => {
return reporte(req.query)
.then((data) => {
res.status(200).json(data);
res.download(data);
})
.catch((err) => {
res.status(400).json({ message: err.message });
});
});
app.get(`${route}/gustavo_bas_prada`, verificaToken, (req, res) => {
app.get(`${route}/gustavo_baz_prada`, verificaToken, (req, res) => {
return gustavoBazPrada(req.query)
.then((data) => {
res.status(200).json(data);
res.download(data);
})
.catch((err) => {
res.status(400).json({ message: err.message });