public void Exit(string sessionId) { using (db = new PinheiroSereniContext()) { SessaoRepository r = (from s in db.Sessaos where s.sessaoId == sessionId select new SessaoRepository() { sessionId = s.sessaoId, sessao = s, chatRepositories = (from c in db.Chats where c.sessaoId == sessionId && c.dt_fim == null select new ChatRepository { chat = c }) }).First(); Sessao _s = db.Sessaos.Find(sessionId); _s.dt_desativacao = DateTime.Now; db.Entry(_s).State = EntityState.Modified; foreach (ChatRepository cr in r.chatRepositories) { PinheiroSereni.Dominio.Entidades.Chat _chat = db.Chats.Find(cr.chat.chatId); _chat.dt_fim = DateTime.Now; db.Entry(_chat).State = EntityState.Modified; } db.SaveChanges(); } }
public Repository Send(int chatId, string text) { ChatRepository chatRepository; using (db = Create()) { chatRepository = new ChatRepository() { mensagem = new Validate() { Code = 0, Message = MensagemPadrao.Message(0).ToString() } }; try { #region grava mensagem PinheiroSereni.Dominio.Entidades.Chat ch = db.Chats.Find(chatId); ChatMessage msg = new ChatMessage() { messageId = Guid.NewGuid(), chatId = chatId, email = ch.email, empreendimentoId = ch.empreendimentoId, dt_message = DateTime.Now, message = text.Replace("'", "") }; db.ChatMessages.Add(msg); _TypingClient(chatId, "N"); db.SaveChanges(); #endregion return(getRepository(chatId)); } catch (ArgumentException ex) { chatRepository.mensagem = new Validate() { Code = 17, Message = MensagemPadrao.Message(17).ToString(), MessageBase = ex.Message }; } catch (Exception ex) { chatRepository.mensagem.Code = 17; chatRepository.mensagem.MessageBase = ex.Message; chatRepository.mensagem.Message = new PinheiroSereniException(ex.Message, GetType().FullName).Message; } } return(chatRepository); }
public Repository Send(string sessionId, int chatId, string text) { SessaoRepository sessaoRepository; using (db = Create()) { sessaoRepository = (SessaoRepository)Create(sessionId); try { #region grava mensagem PinheiroSereni.Dominio.Entidades.Chat ch = db.Chats.Find(chatId); ChatMessage msg = new ChatMessage() { messageId = Guid.NewGuid(), chatId = chatId, corretorId = ch.corretorId, empreendimentoId = ch.empreendimentoId, dt_message = DateTime.Now, message = text.Replace("'", "") }; db.ChatMessages.Add(msg); _TypingOperator(chatId, "N"); #endregion #region atualiza sessao updateSession(sessionId); #endregion return(getSessao(sessionId, chatId)); } catch (ArgumentException ex) { sessaoRepository.mensagem = new Validate() { Code = 17, Message = MensagemPadrao.Message(17).ToString(), MessageBase = ex.Message }; } catch (Exception ex) { sessaoRepository.mensagem.Code = 17; sessaoRepository.mensagem.MessageBase = ex.Message; sessaoRepository.mensagem.Message = new PinheiroSereniException(ex.Message, GetType().FullName).Message; } } return(sessaoRepository); }
public Repository ChatOver(int chatId) { ChatRepository chatRepository; using (db = Create()) { chatRepository = new ChatRepository() { mensagem = new Validate() { Code = 0, Message = MensagemPadrao.Message(0).ToString() } }; try { #region Finalizar Chat PinheiroSereni.Dominio.Entidades.Chat chatEncerrar = db.Chats.Find(chatId); if (chatEncerrar.dt_fim == null) // o chat não foi encerrado pelo corretor { chatEncerrar.dt_fim = DateTime.Now; db.Entry(chatEncerrar).State = EntityState.Modified; db.SaveChanges(); } #endregion } catch (ArgumentException ex) { chatRepository.mensagem = new Validate() { Code = 17, Message = MensagemPadrao.Message(17).ToString(), MessageBase = ex.Message }; } catch (Exception ex) { chatRepository.mensagem.Code = 17; chatRepository.mensagem.MessageBase = ex.Message; chatRepository.mensagem.Message = new PinheiroSereniException(ex.Message, GetType().FullName).Message; } } return(chatRepository); }
/// <summary> /// Este método verifica as sessões com mais de 15 minutos de inatividade. /// Para cada uma dessas sessões o sistema desativa as mesmas e os chats relacionados a elas. /// </summary> public void CleanInactiveSessions() { using (db = new PinheiroSereniContext()) { DateTime dt_ref = DateTime.Now.AddMinutes(-15); IEnumerable <SessaoRepository> r = from s in db.Sessaos where s.dt_atualizacao < dt_ref && s.dt_desativacao == null select new SessaoRepository() { sessionId = s.sessaoId, sessao = s, chatRepositories = (from c in db.Chats where c.Sessao == s select new ChatRepository { chat = c }) }; foreach (SessaoRepository sr in r) { Sessao _s = db.Sessaos.Find(sr.sessionId); _s.dt_desativacao = DateTime.Now; db.Entry(_s).State = EntityState.Modified; foreach (ChatRepository cr in sr.chatRepositories) { PinheiroSereni.Dominio.Entidades.Chat _chat = db.Chats.Find(cr.chat.chatId); _chat.dt_fim = DateTime.Now; db.Entry(_chat).State = EntityState.Modified; } } if (r.Count() > 0) { db.SaveChanges(); } } }
public Repository Finish(string sessionId, int chatId) { SessaoRepository sessaoRepository; using (db = Create()) { sessaoRepository = (SessaoRepository)Create(sessionId); try { #region Finalizar Chat PinheiroSereni.Dominio.Entidades.Chat chatEncerrar = db.Chats.Find(chatId); chatEncerrar.dt_fim = DateTime.Now; db.Entry(chatEncerrar).State = EntityState.Modified; #endregion #region Insere mensagem de despedida ao cliente return(Send(sessionId, chatId, "Prezado cliente, a Pinheiro Sereni Engenharia agradece o seu contato e qualquer dúvida estamos à disposição para maiores esclarecimentos.")); #endregion } catch (ArgumentException ex) { sessaoRepository.mensagem = new Validate() { Code = 17, Message = MensagemPadrao.Message(17).ToString(), MessageBase = ex.Message }; } catch (Exception ex) { sessaoRepository.mensagem.Code = 17; sessaoRepository.mensagem.MessageBase = ex.Message; sessaoRepository.mensagem.Message = new PinheiroSereniException(ex.Message, GetType().FullName).Message; } } return(sessaoRepository); }
private void _TypingClient(int chatId, string value) { PinheiroSereni.Dominio.Entidades.Chat chat = db.Chats.Find(chatId); chat.typingClient = value; db.Entry(chat).State = EntityState.Modified; }
public void _TypingOperator(int chatId, string value) { PinheiroSereni.Dominio.Entidades.Chat chat = db.Chats.Find(chatId); chat.typingOperator = value; db.Entry(chat).State = EntityState.Modified; }