public ActionResult TodasLasPreguntas(string id) { if (!permissionManager.IsAuthorized(Permission.VER_PREGUNTAS)) { TempData["alertmessage"] = "No tiene permisos para acceder a esta página."; return(RedirectToAction("../Home/Index")); } Pregunta pregDB = db.Pregunta.Find(id); if (pregDB == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } PreguntaConNumeroSeccion pregTmp = new PreguntaConNumeroSeccion { Pregunta = pregDB, }; List <PreguntaConNumeroSeccion> listaPregunta = new List <PreguntaConNumeroSeccion>(); listaPregunta.Add(pregTmp); ObtenerInformacionDePreguntas(listaPregunta, null, null); return(View("../ResponderPreguntas/TodasLasPreguntas", listaPregunta)); }
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); } } } } }
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); }
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); }