Ejemplo n.º 1
0
        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();
            }
        }
Ejemplo n.º 2
0
        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);
        }
Ejemplo n.º 3
0
        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);
        }
Ejemplo n.º 4
0
        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);
        }
Ejemplo n.º 5
0
        /// <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();
                }
            }
        }
Ejemplo n.º 6
0
        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);
        }
Ejemplo n.º 7
0
 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;
 }
Ejemplo n.º 8
0
 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;
 }