Пример #1
0
        public async Task <IActionResult> PostFaqtb004Sessao([FromBody] SessaoDTO sessao)
        {
            ListaConversaDTO lsResposta = new ListaConversaDTO();

            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }
            Faqtb004Sessao faqtb004Sessao = new Faqtb004Sessao();

            faqtb004Sessao.DhSessao  = DateTime.Now;
            faqtb004Sessao.NoUsuario = sessao.noUsuario;
            faqtb004Sessao.NuDialogo = sessao.nuDialogo;

            Faqtb002Conversa inicio = _context.Faqtb002Conversa
                                      .Where(c => c.NuDialogo == sessao.nuDialogo &&
                                             c.IcTipoConversa == "I")
                                      .Include(c => c.Faqtb003RegraNuConversaAnteriorNavigation)
                                      .Include(c => c.IcTipoConversaNavigation)
                                      .FirstOrDefault();
            Faqtb002Conversa conversa = buscaProximaConversa(inicio, faqtb004Sessao);

            MotorConversa(lsResposta, faqtb004Sessao, inicio);
            _context.Faqtb004Sessao.Add(faqtb004Sessao);
            await _context.SaveChangesAsync();


            lsResposta.nuSessao = faqtb004Sessao.NuSessao;

            return(Ok(lsResposta));
        }
Пример #2
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));
        }
Пример #3
0
 private static void AdicionaConversaEnvio(ListaConversaDTO lsResposta, Faqtb004Sessao faqtb004Sessao, Faqtb002Conversa conversa)
 {
     if (conversa != null)
     {
         faqtb004Sessao.Faqtb006Envio.Add(new Faqtb006Envio(conversa, faqtb004Sessao.NuSessao));
         lsResposta.conversas.Add(new ConversaDTO(conversa));
     }
 }
Пример #4
0
        private void MotorConversa(ListaConversaDTO lsResposta, Faqtb004Sessao faqtb004Sessao, Faqtb002Conversa conversa)
        {
            bool icContinua = true;

            faqtb004Sessao.Faqtb006Envio.Add(new Faqtb006Envio(conversa, faqtb004Sessao.NuSessao));


            while (icContinua)
            {
                conversa = buscaProximaConversa(conversa, faqtb004Sessao);
                AdicionaConversaEnvio(lsResposta, faqtb004Sessao, conversa);
                if (conversa == null)
                {
                    icContinua = false;
                }
                else
                {
                    icContinua = ProcessaConversa(conversa);
                }
            }
        }