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();
            }
        }
        //
        // GET: /Evento/Sessoes
        public ActionResult Sessoes()
        {
            var repository = new SessaoRepository();
            var sessoes = repository.ObterSessoes();

            return View(sessoes);
        }
        private Repository Create(string sessionId)
        {
            Sessao           s1 = db.Sessaos.Find(sessionId);
            CorretorOnline   c1 = db.CorretorOnlines.Find(s1.corretorId);
            SessaoRepository sessaoRepository = new SessaoRepository()
            {
                sessionId      = sessionId,
                sessao         = s1,
                corretorOnline = c1,
                mensagem       = new Validate()
            };

            return(sessaoRepository);
        }
        public Repository getObject(Object id)
        {
            //System.Web.HttpContext web = System.Web.HttpContext.Current;
            //id = web.Session.SessionID;

            using (db = base.Create())
            {
                SessaoRepository r = new SessaoRepository()
                {
                    sessao = db.Sessaos.Find(id)
                };

                return(r);
            }
        }
 public Repository getSessao(string sessionId, int?chatId = null)
 {
     using (db = Create())
     {
         string           _path_fotoCorretor = db.Parametros.Find((int)Parametros.PATH_FOTOCORRETOR).valor;
         SessaoRepository q = (from s in db.Sessaos
                               join c in db.CorretorOnlines on s.CorretorOnline equals c
                               where s.sessaoId == sessionId
                               select new SessaoRepository()
         {
             sessionId = sessionId,
             sessao = s,
             corretorOnline = c,
             chatRepositories = (
                 from ch in db.Chats
                 join s1 in db.Sessaos on ch.Sessao equals s1
                 join c1 in db.CorretorOnlines on s1.CorretorOnline equals c1
                 join p in db.Prospects on ch.Prospect equals p
                 join e in db.Empreendimentos on ch.empreendimentoId equals e.empreendimentoId
                 where ch.sessaoId == sessionId && ch.dt_fim == null
                 select new ChatRepository()
             {
                 isAtivo = chatId.HasValue ? ch.chatId == chatId ? "S" : "N" : "N",
                 sessionId = sessionId,
                 sessao = s1,
                 corretor = c1,
                 nome_cliente = p.nome,
                 path_fotoCorretor = _path_fotoCorretor,
                 chat = ch,
                 typingClient = ch.typingClient,
                 typingOperator = ch.typingOperator,
                 nome_empreendimento = e.nomeEmpreendimento,
                 chatMessages = (from m in db.ChatMessages
                                 where m.chatId == ch.chatId
                                 orderby m.dt_message
                                 select m),
             }
                 )
         }).First();
         return(q);
     }
 }
        public Repository Insert(Repository value)
        {
            using (db = new PinheiroSereniContext())
            {
                try
                {
                    #region validar inclusão
                    value.mensagem = this.Validate(value, Crud.INCLUIR);
                    #endregion

                    #region insere a sessao
                    if (value.mensagem.Code == 0)
                    {
                        SessaoRepository r = (SessaoRepository)value;
                        r.sessao.sessaoId = getId();
                        if (db.Sessaos.Find(r.sessao.sessaoId) == null)
                        {
                            db.Sessaos.Add(r.sessao);
                        }
                        db.SaveChanges();
                    }
                    #endregion
                }
                catch (ArgumentException ex)
                {
                    value.mensagem = new Validate()
                    {
                        Code = 17, Message = MensagemPadrao.Message(17).ToString(), MessageBase = ex.Message
                    };
                }
                catch (Exception ex)
                {
                    value.mensagem.Code        = 17;
                    value.mensagem.MessageBase = ex.InnerException.InnerException.Message ?? ex.Message;
                    value.mensagem.Message     = new PinheiroSereniException(ex.Message, GetType().FullName).Message;
                }
            }

            return(value);
        }
        public Repository Delete(Repository value)
        {
            using (db = new PinheiroSereniContext())
            {
                try
                {
                    #region validar exclusão
                    value.mensagem = this.Validate(value, Crud.EXCLUIR);
                    #endregion

                    #region exclui a sessao
                    if (value.mensagem.Code == 0)
                    {
                        SessaoRepository r = (SessaoRepository)value;
                        Sessao           s = db.Sessaos.Find(r.sessao.sessaoId);
                        db.Sessaos.Remove(s);
                        db.SaveChanges();
                    }
                    #endregion
                }
                catch (ArgumentException ex)
                {
                    value.mensagem = new Validate()
                    {
                        Code = 17, Message = MensagemPadrao.Message(17).ToString(), MessageBase = ex.Message
                    };
                }
                catch (Exception ex)
                {
                    value.mensagem.Code        = 17;
                    value.mensagem.MessageBase = ex.Message;
                    value.mensagem.Message     = new PinheiroSereniException(ex.Message, GetType().FullName).Message;
                }
            }

            return(value);
        }
        public Repository Update(Repository value)
        {
            using (db = new PinheiroSereniContext())
            {
                try
                {
                    #region validar alteração
                    value.mensagem = this.Validate(value, Crud.ALTERAR);
                    #endregion

                    #region altera a sessão
                    if (value.mensagem.Code == 0)
                    {
                        SessaoRepository r = (SessaoRepository)value;
                        db.Entry(r.sessao).State = EntityState.Modified;
                        db.SaveChanges();
                    }
                    #endregion
                }
                catch (ArgumentException ex)
                {
                    value.mensagem = new Validate()
                    {
                        Code = 17, Message = MensagemPadrao.Message(17).ToString(), MessageBase = ex.Message
                    };
                }
                catch (Exception ex)
                {
                    value.mensagem.Code        = 17;
                    value.mensagem.MessageBase = ex.Message;
                    value.mensagem.Message     = new PinheiroSereniException(ex.Message, GetType().FullName).Message;
                }
            }

            return(value);
        }
 public SessaoService(string connectionString)
 {
     _repository = new SessaoRepository(connectionString);
 }