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)); }
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 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)); } }
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); } } }