コード例 #1
0
        public void ObtenerSeccionesConPreguntas(LlenarFormulario formulario, ObjectResult <ObtenerSeccionesDeFormulario_Result> seccionesDeFormulario,
                                                 Respuestas_a_formulario respuestas, bool editar)
        {
            if (formulario != null && seccionesDeFormulario != null)
            {
                foreach (var seccion in seccionesDeFormulario.ToList())
                {
                    List <ObtenerPreguntasDeSeccion_Result> preguntas = db.ObtenerPreguntasDeSeccion(seccion.Codigo).ToList();
                    SeccionConPreguntas nuevaSeccion = new SeccionConPreguntas {
                        CodigoSeccion = seccion.Codigo, Nombre = seccion.Nombre, Preguntas = new List <PreguntaConNumeroSeccion>(), Orden = seccion.Orden
                    };
                    PreguntasController preguntasController = new PreguntasController(this.db);
                    foreach (var pregunta in preguntas)
                    {
                        nuevaSeccion.Preguntas.Add(new PreguntaConNumeroSeccion
                        {
                            Pregunta = new Pregunta {
                                Codigo = pregunta.Codigo, Enunciado = pregunta.Enunciado, Tipo = pregunta.Tipo
                            },
                            OrdenSeccion  = nuevaSeccion.Orden,
                            CodigoSeccion = nuevaSeccion.CodigoSeccion,
                            OrdenPregunta = pregunta.Orden,
                            Edit          = editar
                        });

                        preguntasController.ObtenerInformacionDePreguntas(nuevaSeccion.Preguntas, nuevaSeccion.CodigoSeccion, respuestas);
                    }
                    formulario.Secciones.Add(nuevaSeccion);
                }
            }
        }
コード例 #2
0
        public ActionResult GuardarRespuestas(Respuestas_a_formulario respuestas, List <SeccionConPreguntas> secciones)
        {
            if (respuestas == null || secciones == null)
            {
                return(RedirectToAction("MisFormularios"));
            }

            respuestas.Fecha  = DateTime.Today;
            respuestas.Correo = HttpContext.User.Identity.Name;

            db.EliminarRespuestasDeFormulario(respuestas.FCodigo, respuestas.Correo, respuestas.CSigla, respuestas.GNumero, respuestas.GAnno, respuestas.GSemestre);

            // Llamar a procedimiento que agrega Respuestas_a_formulario
            db.GuardarRespuestaAFormulario(respuestas.FCodigo, respuestas.Correo, respuestas.CSigla, respuestas.GNumero, respuestas.GAnno, respuestas.GSemestre, respuestas.Fecha, respuestas.Finalizado);

            // Luego, por cada sección guarde las respuestas de cada una de sus preguntas
            foreach (SeccionConPreguntas seccion in secciones)
            {
                if (seccion.Preguntas != null)
                {
                    foreach (PreguntaConNumeroSeccion pregunta in seccion.Preguntas)
                    {
                        GuardarRespuestaAPregunta(pregunta, seccion.CodigoSeccion, respuestas);
                    }
                }
            }

            return(RedirectToAction("MisFormularios"));
        }
コード例 #3
0
        public LlenarFormulario CrearFormulario(string id, Formulario formularioDB, Grupo grupo)
        {
            LlenarFormulario formulario = new LlenarFormulario {
                Formulario = formularioDB, Secciones = new List <SeccionConPreguntas>()
            };
            ObjectResult <ObtenerSeccionesDeFormulario_Result> seccionesDeFormulario = db.ObtenerSeccionesDeFormulario(id);

            ObjectResult <ObtenerRespuestasAFormulario_Result> respuestasObtenidas = null;

            if (grupo != null)
            {
                respuestasObtenidas = db.ObtenerRespuestasAFormulario(formularioDB.Codigo, HttpContext.User.Identity.Name, "CI0128", 1, 2019, 2);
            }

            Respuestas_a_formulario respuestas = new Respuestas_a_formulario();

            if (respuestasObtenidas != null)
            {
                var respuestasList = respuestasObtenidas.FirstOrDefault();

                if (respuestasList != null)
                {
                    respuestas.FCodigo    = respuestasList.FCodigo;
                    respuestas.Correo     = respuestasList.Correo;
                    respuestas.CSigla     = respuestasList.CSigla;
                    respuestas.Fecha      = respuestasList.Fecha;
                    respuestas.Finalizado = respuestas.Finalizado;
                    respuestas.GAnno      = respuestasList.GAnno;
                    respuestas.GNumero    = respuestasList.GNumero;
                    respuestas.GSemestre  = respuestasList.GSemestre;
                }
            }
            SeccionController seccionController = new SeccionController(this.db);

            seccionController.ObtenerSeccionesConPreguntas(formulario, seccionesDeFormulario, respuestas, false);
            return(formulario);
        }
コード例 #4
0
        public void ObtenerInformacionDePreguntas(IEnumerable <PreguntaConNumeroSeccion> preguntas, string codSeccion, Respuestas_a_formulario respuestas)
        {
            if (preguntas != null)
            {
                foreach (PreguntaConNumeroSeccion pregunta in preguntas)
                {
                    if (pregunta.Pregunta.Tipo == "U" || pregunta.Pregunta.Tipo == "M" || pregunta.Pregunta.Tipo == "E" || pregunta.Pregunta.Tipo == "S")
                    {
                        pregunta.Pregunta.Pregunta_con_opciones = db.Pregunta_con_opciones.Find(pregunta.Pregunta.Codigo);
                        if (respuestas != null)
                        {
                            var resultadoRespuestaGuardada = db.ObtenerRespuestasAPreguntaConOpciones(respuestas.FCodigo, respuestas.Correo, respuestas.CSigla, respuestas.GNumero, respuestas.GSemestre, respuestas.GAnno,
                                                                                                      codSeccion, pregunta.Pregunta.Codigo);
                            if (resultadoRespuestaGuardada != null)
                            {
                                var respuestaGuardada = resultadoRespuestaGuardada.ToList();
                                if (respuestaGuardada.Any())
                                {
                                    pregunta.RespuestaLibreOJustificacion = respuestaGuardada.FirstOrDefault().Justificacion;

                                    var opcionesGuardadas = db.ObtenerOpcionesSeleccionadas(respuestas.FCodigo, respuestas.Correo, respuestas.CSigla, respuestas.GNumero, respuestas.GSemestre, respuestas.GAnno,
                                                                                            codSeccion, pregunta.Pregunta.Codigo);
                                    pregunta.Opciones = new List <int>();
                                    if (opcionesGuardadas != null)
                                    {
                                        foreach (var opcion in opcionesGuardadas.ToList())
                                        {
                                            pregunta.Opciones.Add(opcion.OpcionSeleccionada);
                                        }
                                    }
                                }
                            }
                        }
                    }
                    else if (pregunta.Pregunta.Tipo == "L" && respuestas != null)
                    {
                        var respuestaGuardada = db.ObtenerRespuestaLibreGuardada(respuestas.FCodigo, respuestas.Correo, respuestas.CSigla,
                                                                                 respuestas.GNumero, respuestas.GAnno, respuestas.GSemestre, pregunta.Pregunta.Codigo, codSeccion).ToList();
                        if (respuestaGuardada.Any())
                        {
                            pregunta.RespuestaLibreOJustificacion = respuestaGuardada.FirstOrDefault().Observacion;
                        }
                    }
                }
            }
        }
コード例 #5
0
        public void TestGuardarRespuestas()
        {
            TestSetup testSetup = new TestSetup();
            var       mockDb    = new Mock <DataIntegradorEntities>();

            string codFormulario = "TESTPSU";
            string codSeccion1   = "SECCPSU";
            string codSeccion2   = "DSIFSDAF";
            string codPregunta   = "PREGSU";
            string codPregunta2  = "Pregun2";

            // Se crea el formulario de prueba
            Formulario formulario = new Formulario()
            {
                Codigo = codFormulario,
                Nombre = "Formulario de prueba con preguntas de seleccion única"
            };

            mockDb.Setup(m => m.Formulario.Find(codFormulario)).Returns(formulario);

            Seccion seccion = new Seccion()
            {
                Codigo = codSeccion1,
                Nombre = "Sección de prueba"
            };

            Seccion seccion2 = new Seccion()
            {
                Codigo = codSeccion2,
                Nombre = "Sección de prueba 2"
            };

            Pregunta pregunta = new Pregunta()
            {
                Codigo    = codPregunta,
                Enunciado = "¿Qué piensa de Brexit?",
                Tipo      = "L"
            };

            Pregunta pregunta2 = new Pregunta()
            {
                Codigo    = codPregunta,
                Enunciado = "¿Qué piensa de Brexit?",
                Tipo      = "U"
            };

            Seccion_tiene_pregunta seccion_con_pregunta_1 = new Seccion_tiene_pregunta()
            {
                PCodigo = codPregunta,
                SCodigo = codSeccion1
            };

            Seccion_tiene_pregunta seccion_con_pregunta_2 = new Seccion_tiene_pregunta()
            {
                PCodigo = codPregunta2,
                SCodigo = codSeccion2
            };

            Pregunta_con_opciones pregunta_Con_Opciones = new Pregunta_con_opciones
            {
                Codigo = codPregunta,
                Pregunta_con_opciones_de_seleccion = new Pregunta_con_opciones_de_seleccion()
            };

            mockDb.Setup(x => x.Pregunta_con_opciones.Find(codPregunta)).Returns(pregunta_Con_Opciones);

            List <int> opcionesDePregunta = new List <int>();

            opcionesDePregunta.Append(0);

            Respuestas_a_formulario respuestas = new Respuestas_a_formulario()
            {
                FCodigo    = codFormulario,
                Correo     = "*****@*****.**",
                CSigla     = "CI0128",
                GNumero    = 2,
                GAnno      = 2019,
                GSemestre  = 2,
                Fecha      = DateTime.Today,
                Finalizado = false
            };

            PreguntaConNumeroSeccion preguntaConSeccion1 = new PreguntaConNumeroSeccion()
            {
                OrdenSeccion  = 0,
                OrdenPregunta = 0,
                Pregunta      = pregunta,
                RespuestaLibreOJustificacion = "Libre"
            };

            PreguntaConNumeroSeccion preguntaConSeccion2 = new PreguntaConNumeroSeccion()
            {
                OrdenSeccion  = 1,
                OrdenPregunta = 0,
                Pregunta      = pregunta2,
                RespuestaLibreOJustificacion = "Unica"
            };

            List <PreguntaConNumeroSeccion> preguntas = new List <PreguntaConNumeroSeccion>();

            preguntas.Append(preguntaConSeccion1);
            preguntas.Append(preguntaConSeccion2);

            SeccionConPreguntas seccionP = new SeccionConPreguntas()
            {
                CodigoSeccion = codSeccion1,
                Nombre        = "nsdlkfj;a",
                Preguntas     = preguntas,
                Orden         = 0,
                Edicion       = true
            };

            SeccionConPreguntas seccionP2 = new SeccionConPreguntas()
            {
                CodigoSeccion = codSeccion2,
                Nombre        = "seccion2nsdlkfj;a",
                Preguntas     = preguntas,
                Orden         = 0,
                Edicion       = true
            };

            List <SeccionConPreguntas> secciones = new List <SeccionConPreguntas>()
            {
                seccionP, seccionP2
            };

            LlenarFormularioController controller = new LlenarFormularioController(mockDb.Object);

            testSetup.SetupHttpContext(controller);
            // Si no se cae en esta linea, significa que el guardar funciona correctamente
            controller.GuardarRespuestas(respuestas, secciones);
        }
コード例 #6
0
        public void TestGuardarRespuestasAPreguntaLibre()
        {
            TestSetup testSetup = new TestSetup();
            var       mockDb    = new Mock <DataIntegradorEntities>();

            string codFormulario = "TESTPSU";
            string codSeccion    = "SECCPSU";
            string codPregunta   = "PREGSU";

            // Se crea el formulario de prueba
            Formulario formulario = new Formulario()
            {
                Codigo = codFormulario,
                Nombre = "Formulario de prueba con preguntas de seleccion única"
            };

            mockDb.Setup(m => m.Formulario.Find(codFormulario)).Returns(formulario);

            ObtenerSeccionesDeFormulario_Result seccion = new ObtenerSeccionesDeFormulario_Result
            {
                Codigo = codSeccion,
                Nombre = "Sección de prueba",
                Orden  = 0
            };

            var mockedObtenerSecciones = testSetup.SetupMockProcedure <ObtenerSeccionesDeFormulario_Result>
                                             (new List <ObtenerSeccionesDeFormulario_Result> {
                seccion
            });

            mockDb.Setup(x => x.ObtenerSeccionesDeFormulario(codFormulario)).Returns(mockedObtenerSecciones.Object);

            Pregunta pregunta = new Pregunta()
            {
                Codigo    = codPregunta,
                Enunciado = "¿Qué piensa de Brexit?",
                Tipo      = "L"
            };

            Respuestas_a_formulario respuestas = new Respuestas_a_formulario()
            {
                FCodigo    = codFormulario,
                Correo     = "*****@*****.**",
                CSigla     = "CI0128",
                GNumero    = 2,
                GAnno      = 2019,
                GSemestre  = 2,
                Fecha      = DateTime.Today,
                Finalizado = false
            };

            PreguntaConNumeroSeccion preguntaConSeccion = new PreguntaConNumeroSeccion()
            {
                OrdenSeccion  = 0,
                OrdenPregunta = 0,
                Pregunta      = pregunta,
                RespuestaLibreOJustificacion = "Para que cubra más del coverage"
            };

            LlenarFormularioController controller = new LlenarFormularioController(mockDb.Object);

            testSetup.SetupHttpContext(controller);

            // Si no se cae en esta linea, significa que el guardar funciona correctamente
            controller.GuardarRespuestaAPregunta(preguntaConSeccion, codSeccion, respuestas);
        }
コード例 #7
0
        public void GuardarRespuestaAPregunta(PreguntaConNumeroSeccion pregunta, string CodigoSeccion, Respuestas_a_formulario respuestas)
        {
            if (pregunta != null && !string.IsNullOrEmpty(CodigoSeccion) && respuestas != null)
            {
                if (pregunta.Pregunta.Tipo == "L" && pregunta.RespuestaLibreOJustificacion != null)
                {
                    db.GuardarRespuestaAPreguntaLibre(respuestas.FCodigo, respuestas.Correo, respuestas.CSigla, respuestas.GNumero, respuestas.GAnno, respuestas.GSemestre,
                                                      respuestas.Fecha, pregunta.Pregunta.Codigo, CodigoSeccion, pregunta.RespuestaLibreOJustificacion);
                }
                else
                {
                    // Se crea la tupla que indica que el formulario fue llenado. Es el intento de llenado de un formulario, se ocupa antes de agregar las opciones seleccionadas
                    db.GuardarRespuestaAPreguntaConOpciones(respuestas.FCodigo, respuestas.Correo, respuestas.CSigla, respuestas.GNumero, respuestas.GAnno,
                                                            respuestas.GSemestre, respuestas.Fecha, pregunta.Pregunta.Codigo, CodigoSeccion, pregunta.RespuestaLibreOJustificacion);

                    // Se recorren cada una de las opciones que fueron seleccionadas para la pregunta. En el caso de selección múltiple, serán varias.
                    // En todos los demás casos solo se ejecuta una vez.
                    if (pregunta.Opciones != null && pregunta.Opciones.Any())
                    {
                        foreach (var opcion in pregunta.Opciones)
                        {
                            db.GuardarOpcionesSeleccionadas(respuestas.FCodigo, respuestas.Correo, respuestas.CSigla, respuestas.GNumero, respuestas.GAnno,
                                                            respuestas.GSemestre, respuestas.Fecha, pregunta.Pregunta.Codigo, CodigoSeccion, (byte)opcion);
                        }
                    }
                }
            }
        }