コード例 #1
0
        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));
        }
コード例 #2
0
        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);
        }