예제 #1
0
        public RespostaModeloDeFormulario GravarRespostaModeloFormulario(RespostaModeloFormularioDTO respostaModeloDTO, string UsuarioID)
        {
            using (var repo = factory.Get().GetRepository <Resposta>())
                using (var repoRespostaModelo = factory.Get().GetRepository <RespostaModeloDeFormulario>())
                    using (var repoPergunta = factory.Get().GetRepository <Pergunta>())
                    {
                        var respostaModeloFormulario = BuscarRespostaModeloDeFormulario().SingleOrDefault(c => c.RespostaModeloFormularioID == respostaModeloDTO.RespostaModeloFormularioID);

                        if (respostaModeloFormulario == null)
                        {
                            respostaModeloFormulario = repoRespostaModelo.Insert(new RespostaModeloDeFormulario());
                        }

                        respostaModeloFormulario.ModeloDeFormularioID = respostaModeloDTO.ModeloFormulario.ModeloFormularioID;

                        respostaModeloFormulario.ControleAtualizacao = ControleUsuario.Criar(UsuarioID);

                        foreach (var respostaDTO in respostaModeloDTO.Respostas.OrderBy(c => c.PerguntaID).ToList())
                        {
                            //RespostaTexto
                            var      pergunta = respostaModeloDTO.ModeloFormulario.Perguntas.Single(c => c.PerguntaID == respostaDTO.PerguntaID);
                            Resposta resposta = BuscarResposta().SingleOrDefault(c => c.RespostaID == respostaDTO.RespostaID);
                            if (resposta == null)
                            {
                                resposta = repo.Insert(CriarResposta(respostaDTO, pergunta.TipoPergunta));
                            }
                            else
                            {
                                resposta.AtribuirResposta(respostaDTO);
                            }

                            resposta.Pergunta = repoPergunta.GetQuery().Single(d => d.PerguntaID == resposta.PerguntaID);
                            resposta.RespostaModeloDeFormulario = respostaModeloFormulario;
                            resposta.ControleAtualizacao        = ControleUsuario.Criar(UsuarioID);

                            respostaModeloFormulario.Respostas.Add(resposta);
                        }

                        foreach (var resposta in respostaModeloFormulario.Respostas)
                        {
                            bool validarResposta = true;

                            if (resposta.Pergunta.PerguntaCondicionalID.HasValue)
                            {
                                var respostaOrigem = respostaModeloFormulario.Respostas.Single(d => d.PerguntaID == resposta.Pergunta.PerguntaCondicional.PerguntaID);

                                validarResposta = resposta.Pergunta.PerguntaCondicional.ValidarCondicional(respostaOrigem);
                            }

                            if (validarResposta && resposta.Validar() == false)
                            {
                                throw new ApplicationException($"Verifique a resposta da pergunta {resposta.Pergunta.PerguntaID} {resposta.Pergunta.Titulo}");
                            }
                        }

                        return(respostaModeloFormulario);
                    }
        }
예제 #2
0
        public async Task <IHttpActionResult> Put([FromBody] RespostaModeloFormularioDTO value)
        {
            RespostaModeloDeFormulario modelo = await Task.FromResult(svc.Value.GravarRespostaModeloFormulario(value, UserID));

            await svc.Value.CommitAsync(UserID);

            if (Request.Headers.TryGetValues("ResultObject", out IEnumerable <string> lst))
            {
                return(Ok(svc.Value.AbrirRespostaModeloFormulario(modelo.RespostaModeloFormularioID)));
            }

            return(Ok(modelo.RespostaModeloFormularioID));
        }
예제 #3
0
        public async Task <IHttpActionResult> Get(long id)
        {
            RespostaModeloFormularioDTO result = await Task.FromResult(svc.Value.AbrirRespostaModeloFormulario(id));

            return(Ok(result));
        }