diff --git a/ejemplo.env b/ejemplo.env new file mode 100644 index 0000000..4e91b19 --- /dev/null +++ b/ejemplo.env @@ -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 \ No newline at end of file diff --git a/server/controller/CuestionarioAlumno/get.js b/server/controller/CuestionarioAlumno/get.js index 5c13a33..6d32567 100644 --- a/server/controller/CuestionarioAlumno/get.js +++ b/server/controller/CuestionarioAlumno/get.js @@ -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; diff --git a/server/controller/CuestionarioPrograma/get.js b/server/controller/CuestionarioPrograma/get.js index eec23ed..18fb2f4 100644 --- a/server/controller/CuestionarioPrograma/get.js +++ b/server/controller/CuestionarioPrograma/get.js @@ -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; diff --git a/server/controller/Servicio/gustavoBazPrada.js b/server/controller/Servicio/gustavoBazPrada.js index 294aeb3..82c26dc 100644 --- a/server/controller/Servicio/gustavoBazPrada.js +++ b/server/controller/Servicio/gustavoBazPrada.js @@ -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; diff --git a/server/controller/Servicio/reporte.js b/server/controller/Servicio/reporte.js index e8e371b..e2889cd 100644 --- a/server/controller/Servicio/reporte.js +++ b/server/controller/Servicio/reporte.js @@ -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; diff --git a/server/helper/diario.js b/server/helper/diario.js index 324f589..4ccef6b 100644 --- a/server/helper/diario.js +++ b/server/helper/diario.js @@ -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(); diff --git a/server/helper/validar.js b/server/helper/validar.js index 8799df1..db4b1a9 100644 --- a/server/helper/validar.js +++ b/server/helper/validar.js @@ -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, }; diff --git a/server/routes/CuestionarioAlumno.js b/server/routes/CuestionarioAlumno.js index bcdba3b..11c84b6 100644 --- a/server/routes/CuestionarioAlumno.js +++ b/server/routes/CuestionarioAlumno.js @@ -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 }); diff --git a/server/routes/CuestionarioPrograma.js b/server/routes/CuestionarioPrograma.js index 34d61be..16f5a1f 100644 --- a/server/routes/CuestionarioPrograma.js +++ b/server/routes/CuestionarioPrograma.js @@ -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 }); diff --git a/server/routes/Servicio.js b/server/routes/Servicio.js index b781dd5..11d4a0e 100644 --- a/server/routes/Servicio.js +++ b/server/routes/Servicio.js @@ -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 });