diff --git a/server/controller/Cuestionario/traerCompleto.js b/server/controller/Cuestionario/traerCompleto.js new file mode 100644 index 0000000..ca67301 --- /dev/null +++ b/server/controller/Cuestionario/traerCompleto.js @@ -0,0 +1,45 @@ +const Cuestionario = require('../../db/tablas/Cuestionario'); +const Seccion = require('../../db/tablas/Seccion'); +const Pregunta = require('../../db/tablas/Pregunta'); +const Opcion = require('../../db/tablas/Opcion'); +const validar = require('../../helper/validar'); + +const traerCompleto = async (query) => { + const idCuestionario = validar.validarNumeroEntero( + query.idCuestionario, + 'idCuestionario' + ); + let cuestionario = {}; + + const cuest = await Cuestionario.findOne({ where: { idCuestionario } }); + if (!cuest) throw new Error('No existe el cuestionario'); + cuestionario.cuestionario = cuest; + + const secciones = await Seccion.findAll({ where: { idCuestionario } }); + if (secciones.length === 0) throw new Error('No existen secciones'); + cuestionario.secciones = secciones; + + for (let i = 0; i < secciones.length; i++) { + cuestionario.secciones[i].preguntas = []; + const preguntas = await Pregunta.findAll({ + where: { idSeccion: secciones[i].idSeccion }, + }); + cuestionario.secciones[i].dataValues.preguntas = preguntas; + + for (let j = 0; j < preguntas.length; j++) { + cuestionario.secciones[i].dataValues.preguntas[j].dataValues.opciones = + []; + const opciones = await Opcion.findAll({ + where: { idPregunta: preguntas[j].idPregunta }, + }); + + cuestionario.secciones[i].dataValues.preguntas[ + j + ].dataValues.opciones.push(opciones); + } + } + + return cuestionario; +}; + +module.exports = traerCompleto; diff --git a/server/controller/Respuesta/traerPorIdPregunta.js b/server/controller/Respuesta/traerPorIdPregunta.js index e69de29..22c22be 100644 --- a/server/controller/Respuesta/traerPorIdPregunta.js +++ b/server/controller/Respuesta/traerPorIdPregunta.js @@ -0,0 +1,31 @@ +const RespuestaAbiertaEd = require('../../db/tablas/RespuestaAbiertaEd'); +const RespuestaAbiertaTrabajador = require('../../db/tablas/RespuestaAbiertaTrabajador'); +const RespuestaAbiertaAlumno = require('../../db/tablas/RespuestaAbiertaAlumno'); +const RespuestaEd = require('../../db/tablas/RespuestaEd'); +const RespuestaTrabajador = require('../../db/tablas/RespuestaTrabajador'); +const RespuestaAlumno = require('../../db/tablas/RespuestaAlumno'); +const Pregunta = require('../../db/tablas/Pregunta'); +const TipoPregunta = require('../../db/tablas/TipoPregunta'); +const validar = require('../../helper/validar'); + +const traerPoridPregunta = async (query) => { + const idPregunta = validar.validarNumeroEntero( + query.idPregunta, + 'idPregunta' + ); + + const existePregunta = Pregunta.findOne({where: idPregunta, include: [{ model: TipoPregunta }]}) + if(!existePregunta) throw new Error("No existe una pregunta con est idPregunta en la db.") + if(existePregunta.idTipoPregunta !== 1 ) { + + } + + return Respuesta.findAll({ + where: { idPregunta } + }).then(res => { + if(!res) throw new Error("No hay ninguna Respuesta con este idPregunta.") + return res; + }); +}; + +module.exports = traerPoridPregunta; diff --git a/server/routes/Cuestionario.js b/server/routes/Cuestionario.js index 523d5ec..e12f12c 100644 --- a/server/routes/Cuestionario.js +++ b/server/routes/Cuestionario.js @@ -4,6 +4,7 @@ const app = express(); const route = '/Cuestionario'; const traerTodos = require('../controller/Cuestionario/traerTodos'); const traerPorId = require('../controller/Cuestionario/traerPorId'); +const TraerCompleto = require('../controller/Cuestionario/TraerCompleto'); const crear = require('../controller/Cuestionario/crear'); const editar = require('../controller/Cuestionario/editar'); @@ -27,6 +28,16 @@ app.get(`${route}/TraerPorId`, (req, res) => { }); }); +app.get(`${route}/TraerCompleto`, (req, res) => { + return TraerCompleto(req.query) + .then((data) => { + res.status(200).json(data); + }) + .catch((err) => { + res.status(400).json({ message: err.message }); + }); +}); + app.post(`${route}/crear`, (req, res) => { return crear(req.body) .then((data) => {