public async Task <IActionResult> PutFaqtb004Sessao([FromBody] RespostaDTO resposta) { ListaConversaDTO lsResposta = new ListaConversaDTO(); if (!ModelState.IsValid) { return(BadRequest(ModelState)); } Faqtb004Sessao faqtb004Sessao = _context.Faqtb004Sessao .Include(s => s.Faqtb006Envio) .Where(s => s.NuSessao == resposta.nuSessao) .FirstOrDefault() ; int nuUltimaConversa = faqtb004Sessao .Faqtb006Envio .OrderByDescending(e => e.DhEnvio) .FirstOrDefault().NuConversa; Faqtb002Conversa ultima = _context.Faqtb002Conversa .Include(c => c.Faqtb003RegraNuConversaAnteriorNavigation) .Include(c => c.IcTipoConversaNavigation) .Where(c => c.NuConversa == nuUltimaConversa) .FirstOrDefault() ; Faqtb005Resposta faqtb005Resposta = new Faqtb005Resposta(resposta.deResposta, ultima, resposta.nuSessao); _context.Faqtb005Resposta.Add(faqtb005Resposta); await _context.SaveChangesAsync(); MotorConversa(lsResposta, faqtb004Sessao, ultima); await _context.SaveChangesAsync(); lsResposta.nuSessao = faqtb004Sessao.NuSessao; return(Ok(lsResposta)); }
private string ProcessaRegra(Faqtb002Conversa conversa, Faqtb004Sessao faqtb004Sessao, Faqtb003Regra r) { string regra = r.DeRegra; if (regra.Contains("{{")) { string noVariavel = regra.Split("}}")[0].Split("{{").Last(); Faqtb009Variavel variavel = _context.Faqtb009Variavel .Where(v => v.NoVariavel == noVariavel && v.NuDialogo == conversa.NuDialogo).FirstOrDefault(); Faqtb005Resposta ultimaReposta = _context.Faqtb005Resposta .Where(re => re.NuVariavel == variavel.NuVariavel && faqtb004Sessao.NuSessao == re.NuSessao) .OrderByDescending(re => re.DhResposta) .FirstOrDefault(); regra = regra.Replace("{{" + noVariavel + "}}", ultimaReposta.DeReposta ?? "null"); } string resultado = CSharpScript.EvaluateAsync(regra).Result.ToString(); return(resultado); }