public IActionResult Get(int id) { EncuestaGlobal byId = _repo.GetById(id); if (byId == null) { return(NotFound()); } return(Ok(DtoGet(byId))); }
public IActionResult Post([FromBody] EGPostEncuesta dto) { var ident = User.Identity as ClaimsIdentity; var userID = ident.Claims.FirstOrDefault(c => c.Type == ClaimTypes.NameIdentifier)?.Value; Adscripto adscripto = _adscriptos.GetById(userID); EncuestaGlobal toPost = new EncuestaGlobal { Titulo = dto.Titulo, Descripcion = dto.Descripcion, FechaCreacion = DateTime.Now, Adscripto = adscripto, Preguntas = new List <Pregunta>() }; foreach (EGPostPregunta dtoPregunta in dto.Preguntas) { switch (dtoPregunta.Tipo) { case 0: toPost.Preguntas.Add(new PreguntaEL { Texto = dtoPregunta.Texto, Respuestas = new List <RespuestaLibre>() }); break; case 1: var preguntaToPost = new PreguntaUO { Texto = dtoPregunta.Texto, Opciones = new List <PreguntaOpcion>() }; foreach (string dtoRespuesta in dtoPregunta.Respuestas) { preguntaToPost.Opciones.Add(new PreguntaOpcion { Pregunta = preguntaToPost, Valor = dtoRespuesta }); } toPost.Preguntas.Add(preguntaToPost); break; case 2: case 3: var moPreguntaToPost = new PreguntaMO { Texto = dtoPregunta.Texto, Opciones = new List <PreguntaOpcion>() }; foreach (string dtoRespuesta in dtoPregunta.Respuestas) { moPreguntaToPost.Opciones.Add(new PreguntaOpcion { Pregunta = moPreguntaToPost, Valor = dtoRespuesta }); } toPost.Preguntas.Add(moPreguntaToPost); break; } } _repo.Add(toPost); return(Ok(DtoGet(toPost))); }
public EGGetEncuesta DtoGet(EncuestaGlobal encuesta) { var product = new EGGetEncuesta() { Id = encuesta.Id, Titulo = encuesta.Titulo, Descripcion = encuesta.Descripcion, Preguntas = new List <EGGetPregunta>() }; foreach (Pregunta pregunta in encuesta.Preguntas) { EGGetPregunta productPregunta = new EGGetPregunta(); if (pregunta is PreguntaLibre) { var proxyProductPregunta = new EGGetPreguntaLibre() { Id = pregunta.Id, Respuestas = new List <EGGetRespuesta>(), Texto = pregunta.Texto }; var _pregunta = (PreguntaLibre)pregunta; if (_pregunta.Respuestas != null) { foreach (RespuestaLibre rl in _pregunta.Respuestas) { proxyProductPregunta.Respuestas.Add(new EGGetRespuestaLibre { Texto = rl.Texto }); } } product.Preguntas.Add(proxyProductPregunta); } else if (pregunta is PreguntaVariada) { var proxyProductPregunta = new EGGetPreguntaVariada() { Id = pregunta.Id, Opciones = new List <EGGetOpcion>(), Respuestas = new List <EGGetRespuesta>(), Texto = pregunta.Texto, Tipo = 2 }; if (pregunta is PreguntaMO) { proxyProductPregunta.Tipo = 3; } else if (pregunta is PreguntaUO) { proxyProductPregunta.Tipo = 1; } else if (pregunta is PreguntaEL) { proxyProductPregunta.Tipo = 0; } var _pregunta = (PreguntaVariada)pregunta; foreach (PreguntaOpcion opcion in _pregunta.Opciones) { var cast = opcion; if (opcion.RespuestasAsociadas != null) { if (_pregunta is PreguntaMO) { proxyProductPregunta.Opciones.Add(new EGGetOpcion() { Id = opcion.Id, Texto = opcion.Valor, Respuestas = opcion.RespuestasAsociadas.Count }); } else { proxyProductPregunta.Opciones.Add(new EGGetOpcion() { Id = opcion.Id, Texto = opcion.Valor, Respuestas = _pregunta.Respuestas.Count }); } } else { proxyProductPregunta.Opciones.Add(new EGGetOpcion() { Id = opcion.Id, Texto = opcion.Valor, Respuestas = 0 }); } } if (_pregunta.Respuestas != null) { foreach (RespuestaLimitada rl in _pregunta.Respuestas) { if (rl is RespuestaUO) { proxyProductPregunta.Respuestas.Add(new EGGetRespuestaVariada { OpcionId = ((RespuestaUO)rl).RespuestaOpcion.Id, Text = ((RespuestaUO)rl).RespuestaOpcion.Valor }); } else if (rl is RespuestaMO) { var xRl = (RespuestaMO)rl; foreach (PreguntaOpcion opcion in xRl.RespuestaOpciones) { proxyProductPregunta.Respuestas.Add(new EGGetRespuestaVariada { OpcionId = opcion.Id, Text = opcion.Valor }); } } } } product.Preguntas.Add(proxyProductPregunta); } } return(product); }