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); } }
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)); }
public async Task <IHttpActionResult> Get(long id) { RespostaModeloFormularioDTO result = await Task.FromResult(svc.Value.AbrirRespostaModeloFormulario(id)); return(Ok(result)); }