Exemple #1
0
        public IActionResult Get(int id)
        {
            EncuestaGlobal byId = _repo.GetById(id);

            if (byId == null)
            {
                return(NotFound());
            }

            return(Ok(DtoGet(byId)));
        }
Exemple #2
0
        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)));
        }
Exemple #3
0
        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);
        }