示例#1
0
        public SeccionConPreguntas ArmarSeccion(string id)
        {
            // Sacar codigo y nombre de la BD
            Seccion secDB = db.Seccion.Find(id);

            if (secDB == null)
            {
                return(null);
            }

            SeccionConPreguntas seccion = new SeccionConPreguntas();

            // Asignar datos de la DB al objeto especial
            seccion.CodigoSeccion = secDB.Codigo;
            seccion.Nombre        = secDB.Nombre;
            seccion.Orden         = 0;

            // Sacar las preguntas y obtener opciones y/o justificaciones
            PreguntasController preguntasController = new PreguntasController(this.db);

            seccion.Preguntas = preguntasController.ArmarPreguntas(seccion);
            preguntasController.ObtenerInformacionDePreguntas(seccion.Preguntas, seccion.CodigoSeccion, null);

            return(seccion);
        }
示例#2
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);
                }
            }
        }
        public List <PreguntaConNumeroSeccion> ArmarPreguntas(SeccionConPreguntas seccion)
        {
            List <PreguntaConNumeroSeccion> listaPreguntas = new List <PreguntaConNumeroSeccion>();

            // Sacar preguntas con el procedimiento almacenado
            List <ObtenerPreguntasDeSeccion_Result> preguntas = db.ObtenerPreguntasDeSeccion(seccion.CodigoSeccion).ToList();

            // Poblar la lista de preguntas segun lo obtenido del procedimiento
            foreach (var pregunta in preguntas)
            {
                listaPreguntas.Add(new PreguntaConNumeroSeccion
                {
                    Pregunta = new Pregunta {
                        Codigo = pregunta.Codigo, Enunciado = pregunta.Enunciado, Tipo = pregunta.Tipo
                    },
                    OrdenSeccion  = seccion.Orden,
                    OrdenPregunta = pregunta.Orden
                });
            }

            return(listaPreguntas);
        }
示例#4
0
        public ActionResult SeccionConPreguntas(string id)
        {
            if (!permissionManager.IsAuthorized(Permission.VER_SECCION))
            {
                TempData["alertmessage"] = "No tiene permisos para acceder a esta página.";
                return(RedirectToAction("../Home/Index"));
            }
            // Armar objeto independiente del formulario
            SeccionConPreguntas seccion = ArmarSeccion(id);

            if (seccion == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }

            // Meter seccion en una lista por la naturaleza de la vista
            List <SeccionConPreguntas> listaSeccion = new List <SeccionConPreguntas>
            {
                seccion
            };

            return(View(listaSeccion));
        }
示例#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);
        }