linea api crear csv de cuestionarios

This commit is contained in:
Lemuel Marquez
2021-01-11 04:54:21 -06:00
parent acdd5df8b6
commit c515d5c3dc
14 changed files with 183 additions and 7 deletions
View File
Can't render this file because it is too large.
Can't render this file because it is too large.
+5
View File
@@ -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",
+1
View File
@@ -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",
@@ -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;
@@ -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;
+6 -6
View File
@@ -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++) {
+1 -1
View File
@@ -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(
+11
View File
@@ -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;
+11
View File
@@ -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;