From c515d5c3dc3378d3937566735492784985d3512d Mon Sep 17 00:00:00 2001 From: Lemuel Marquez Date: Mon, 11 Jan 2021 04:54:21 -0600 Subject: [PATCH] linea api crear csv de cuestionarios --- {csv => db}/alumno.csv | 0 {csv => db}/cuestionarioA.csv | 0 {csv => db}/cuestionarioP.csv | 0 {csv => db}/programa.csv | 0 {csv => db}/registro.csv | 0 {csv => db}/responsable.csv | 0 package-lock.json | 5 ++ package.json | 1 + server/controller/CuestionarioAlumno/get.js | 87 +++++++++++++++++++ server/controller/CuestionarioPrograma/get.js | 61 +++++++++++++ server/db/csv.js | 12 +-- server/db/data-fake.js | 2 +- server/routes/CuestionarioAlumno.js | 11 +++ server/routes/CuestionarioPrograma.js | 11 +++ 14 files changed, 183 insertions(+), 7 deletions(-) rename {csv => db}/alumno.csv (100%) rename {csv => db}/cuestionarioA.csv (100%) rename {csv => db}/cuestionarioP.csv (100%) rename {csv => db}/programa.csv (100%) rename {csv => db}/registro.csv (100%) rename {csv => db}/responsable.csv (100%) create mode 100644 server/controller/CuestionarioAlumno/get.js create mode 100644 server/controller/CuestionarioPrograma/get.js diff --git a/csv/alumno.csv b/db/alumno.csv similarity index 100% rename from csv/alumno.csv rename to db/alumno.csv diff --git a/csv/cuestionarioA.csv b/db/cuestionarioA.csv similarity index 100% rename from csv/cuestionarioA.csv rename to db/cuestionarioA.csv diff --git a/csv/cuestionarioP.csv b/db/cuestionarioP.csv similarity index 100% rename from csv/cuestionarioP.csv rename to db/cuestionarioP.csv diff --git a/csv/programa.csv b/db/programa.csv similarity index 100% rename from csv/programa.csv rename to db/programa.csv diff --git a/csv/registro.csv b/db/registro.csv similarity index 100% rename from csv/registro.csv rename to db/registro.csv diff --git a/csv/responsable.csv b/db/responsable.csv similarity index 100% rename from csv/responsable.csv rename to db/responsable.csv diff --git a/package-lock.json b/package-lock.json index 7491216..c29165f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -571,6 +571,11 @@ "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==" }, + "convert-array-to-csv": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-array-to-csv/-/convert-array-to-csv-2.0.0.tgz", + "integrity": "sha512-dxUINCt28k6WbXGMoB+AaKjGY0Y6GkKwZmT+kvD4nJgVCOKsnIQ3G6n0v2II1lG4NwXQk6EWZ+pPDub9wcqqMg==" + }, "cookie": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz", diff --git a/package.json b/package.json index 8afca71..30a8c17 100644 --- a/package.json +++ b/package.json @@ -22,6 +22,7 @@ "bcrypt": "^5.0.0", "body-parser": "^1.19.0", "colors": "^1.4.0", + "convert-array-to-csv": "^2.0.0", "cors": "^2.8.5", "csvtojson": "^2.0.10", "dotenv": "^8.2.0", diff --git a/server/controller/CuestionarioAlumno/get.js b/server/controller/CuestionarioAlumno/get.js new file mode 100644 index 0000000..ddf9538 --- /dev/null +++ b/server/controller/CuestionarioAlumno/get.js @@ -0,0 +1,87 @@ +const fs = require('fs'); +const { convertArrayToCSV } = require('convert-array-to-csv'); +const { Op } = require('sequelize'); +const validar = require('../../helper/validar'); +const CuestionarioAlumno = require('../../db/tablas/CuestionarioAlumno'); +const Servicio = require('../../db/tablas/Servicio'); +const Programa = require('../../db/tablas/Programa'); +const Usuario = require('../../db/tablas/Usuario'); + +const get = async (body) => { + let year = validar.validarNumero(body.year, 4); + + return Servicio.findAll({ + include: [ + { + model: CuestionarioAlumno, + where: { idCuestionarioAlumno: { [Op.not]: null } }, + }, + { model: Programa, where: { clavePrograma: { [Op.like]: `${year}%` } } }, + { model: Usuario }, + ], + }).then((res) => { + let data = []; + let csvString = ''; + let path = `csv/${year}_cuestionarios_alumno.csv`; + + for (let i = 0; i < res.length; i++) { + data.push({ + idServicio: res[i].dataValues.idServicio, + clavePrograma: res[i].dataValues.Programa.clavePrograma, + usuario: res[i].dataValues.Usuario.usuario, + nombre: res[i].dataValues.Usuario.nombre, + idCuestionarioAlumno: + res[i].dataValues.CuestionarioAlumno.idCuestionarioAlumno, + sexo: res[i].dataValues.CuestionarioAlumno.sexo, + edad: res[i].dataValues.CuestionarioAlumno.edad, + servicioMedico: res[i].dataValues.CuestionarioAlumno.servicioMedico, + p1: res[i].dataValues.CuestionarioAlumno.p1, + p2: res[i].dataValues.CuestionarioAlumno.p2, + p3: res[i].dataValues.CuestionarioAlumno.p3, + p4: res[i].dataValues.CuestionarioAlumno.p4, + p5: res[i].dataValues.CuestionarioAlumno.p5, + p6: res[i].dataValues.CuestionarioAlumno.p6, + p7: res[i].dataValues.CuestionarioAlumno.p7, + p8: res[i].dataValues.CuestionarioAlumno.p8, + p9: res[i].dataValues.CuestionarioAlumno.p9, + p10: res[i].dataValues.CuestionarioAlumno.p10, + p11: res[i].dataValues.CuestionarioAlumno.p11, + p12: res[i].dataValues.CuestionarioAlumno.p12, + p13: res[i].dataValues.CuestionarioAlumno.p13, + p14: res[i].dataValues.CuestionarioAlumno.p14, + p15: res[i].dataValues.CuestionarioAlumno.p15, + p16: res[i].dataValues.CuestionarioAlumno.p16, + p17: res[i].dataValues.CuestionarioAlumno.p17, + p18: res[i].dataValues.CuestionarioAlumno.p18, + p19: res[i].dataValues.CuestionarioAlumno.p19, + p20: res[i].dataValues.CuestionarioAlumno.p20, + p21: res[i].dataValues.CuestionarioAlumno.p21, + p22: res[i].dataValues.CuestionarioAlumno.p22, + p23: res[i].dataValues.CuestionarioAlumno.p23, + p24: res[i].dataValues.CuestionarioAlumno.p24, + p25: res[i].dataValues.CuestionarioAlumno.p25, + p26: res[i].dataValues.CuestionarioAlumno.p26, + p27: res[i].dataValues.CuestionarioAlumno.p27, + p28: res[i].dataValues.CuestionarioAlumno.p28, + p29: res[i].dataValues.CuestionarioAlumno.p29, + p30: res[i].dataValues.CuestionarioAlumno.p30, + createdAt: res[i].dataValues.CuestionarioAlumno.createdAt, + }); + } + try { + fs.unlinkSync(path); + } catch (err) {} + csvString = convertArrayToCSV(data); + fs.appendFile(path, csvString, (err) => { + if (err) { + console.log(err); + throw new Error('hubo un problema al crear el archivo csv.'); + } + }); + return { + message: `Se creo/actualizo correctamente el csv del cuestionario de programa del año ${year}`, + }; + }); +}; + +module.exports = get; diff --git a/server/controller/CuestionarioPrograma/get.js b/server/controller/CuestionarioPrograma/get.js new file mode 100644 index 0000000..8bc0cb4 --- /dev/null +++ b/server/controller/CuestionarioPrograma/get.js @@ -0,0 +1,61 @@ +const fs = require('fs'); +const { convertArrayToCSV } = require('convert-array-to-csv'); +const { Op } = require('sequelize'); +const validar = require('../../helper/validar'); +const CuestionarioPrograma = require('../../db/tablas/CuestionarioPrograma'); +const Servicio = require('../../db/tablas/Servicio'); +const Programa = require('../../db/tablas/Programa'); +const Usuario = require('../../db/tablas/Usuario'); + +const get = async (body) => { + let year = validar.validarNumero(body.year, 4); + + return Servicio.findAll({ + include: [ + { + model: CuestionarioPrograma, + where: { idCuestionarioPrograma: { [Op.not]: null } }, + }, + { model: Programa, where: { clavePrograma: { [Op.like]: `${year}-%` } } }, + { model: Usuario }, + ], + }).then((res) => { + let data = []; + let csvString = ''; + let path = `csv/${year}_cuestionarios_programa.csv`; + + 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, + }); + try { + fs.unlinkSync(path); + } catch (err) {} + csvString = convertArrayToCSV(data); + fs.appendFile(path, csvString, (err) => { + if (err) { + console.log(err); + throw new Error('hubo un problema al crear el archivo csv.'); + } + }); + return { + message: `Se creo/actualizo correctamente el csv del cuestionario de programa del año ${year}`, + }; + }); +}; + +module.exports = get; diff --git a/server/db/csv.js b/server/db/csv.js index 3f3ea53..b8f8cdd 100644 --- a/server/db/csv.js +++ b/server/db/csv.js @@ -11,22 +11,22 @@ const guardar = async () => { let idsAlumnos = []; let idsRegistros = []; let responsables = await csv() - .fromFile('csv/responsable.csv') + .fromFile('db/responsable.csv') .then((res) => res); let programas = await csv() - .fromFile('csv/programa.csv') + .fromFile('db/programa.csv') .then((res) => res); let alumnos = await csv() - .fromFile('csv/alumno.csv') + .fromFile('db/alumno.csv') .then((res) => res); let registros = await csv() - .fromFile('csv/registro.csv') + .fromFile('db/registro.csv') .then((res) => res); let cuestionariosAlumno = await csv() - .fromFile('csv/cuestionarioA.csv') + .fromFile('db/cuestionarioA.csv') .then((res) => res); let cuestionariosPrograma = await csv() - .fromFile('csv/cuestionarioP.csv') + .fromFile('db/cuestionarioP.csv') .then((res) => res); for (let i = 0; i < responsables.length; i++) { diff --git a/server/db/data-fake.js b/server/db/data-fake.js index 68abf4f..c6bcfbf 100644 --- a/server/db/data-fake.js +++ b/server/db/data-fake.js @@ -45,7 +45,7 @@ const dataResponsable = async () => { institucion: `Institucion Falsa ${i + 1}`, dependencia: `Dependencia Falsa ${j - i + 1}`, programa: `Programa Falso ${j}`, - clavePrograma: `2020/${i + j + 1}-${i + j + 1}`, + clavePrograma: `2020-${j}/${i + j + 1}-${i + j + 1}`, idUsuario: res.dataValues.idUsuario, }); console.log( diff --git a/server/routes/CuestionarioAlumno.js b/server/routes/CuestionarioAlumno.js index c022f88..960df15 100644 --- a/server/routes/CuestionarioAlumno.js +++ b/server/routes/CuestionarioAlumno.js @@ -3,6 +3,7 @@ const app = express(); const { verificaToken } = require('../middleware/autentificacion'); const route = '/cuestionario_alumno'; const nuevo = require('../controller/CuestionarioAlumno/nuevo'); +const get = require('../controller/CuestionarioAlumno/get'); app.post(`${route}`, verificaToken, (req, res) => { return nuevo(req.body) @@ -14,4 +15,14 @@ app.post(`${route}`, verificaToken, (req, res) => { }); }); +app.get(`${route}`, verificaToken, (req, res) => { + return get(req.query) + .then((data) => { + res.status(200).json(data); + }) + .catch((err) => { + res.status(400).json({ message: err.message }); + }); +}); + module.exports = app; diff --git a/server/routes/CuestionarioPrograma.js b/server/routes/CuestionarioPrograma.js index dffe1ed..4e0a691 100644 --- a/server/routes/CuestionarioPrograma.js +++ b/server/routes/CuestionarioPrograma.js @@ -3,6 +3,7 @@ const app = express(); const { verificaToken } = require('../middleware/autentificacion'); const route = '/cuestionario_programa'; const nuevo = require('../controller/CuestionarioPrograma/nuevo'); +const get = require('../controller/CuestionarioPrograma/get'); app.post(`${route}`, verificaToken, (req, res) => { return nuevo(req.body) @@ -14,4 +15,14 @@ app.post(`${route}`, verificaToken, (req, res) => { }); }); +app.get(`${route}`, verificaToken, (req, res) => { + return get(req.query) + .then((data) => { + res.status(200).json(data); + }) + .catch((err) => { + res.status(400).json({ message: err.message }); + }); +}); + module.exports = app;