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); }
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); }
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)); }
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); }