コード例 #1
0
        public IEnumerable <Repository> ListRepository(params object[] param)
        {
            string _path_fotoCorretor = db.Parametros.Find((int)Parametros.PATH_FOTOCORRETOR).valor;
            string sessionId          = param[0].ToString();

            using (db = new PinheiroSereniContext())
            {
                IEnumerable <ChatRepository> q = (
                    from ch in db.Chats
                    join s in db.Sessaos on ch.Sessao equals s
                    join c in db.CorretorOnlines on s.CorretorOnline equals c
                    join p in db.Prospects on ch.Prospect equals p
                    where ch.sessaoId == sessionId && ch.dt_fim == null
                    select new ChatRepository()
                {
                    sessionId = sessionId,
                    sessao = s,
                    corretor = c,
                    nome_cliente = p.nome,
                    path_fotoCorretor = _path_fotoCorretor,
                    chat = ch,
                    chatMessages = (from m in db.ChatMessages
                                    where m.chatId == ch.chatId
                                    orderby m.dt_message
                                    select m),
                }
                    ).ToList();
                return(q);
            }
        }
コード例 #2
0
 public ActionResult Rpt01(int?index)
 {
     ViewBag.drpOrdenacao = BindDropDownListFactory.BindEnum <drpOrdenacao>("A");
     using (PinheiroSereniContext db = new PinheiroSereniContext())
         ViewBag.drpEmpreendimentos = BindDropDownListFactory.Bind <drpEmpreedimentos>(db, "1");
     return(Rpt01List(index, DateTime.Today.AddDays(-30).ToString("dd/MM/yyyy"), DateTime.Today.ToString("dd/MM/yyyy"), "A", "1", "40"));
 }
コード例 #3
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();
            }
        }
コード例 #4
0
        public Repository getRepository(Object id)
        {
            int mensagemId = (int)id;

            using (db = new PinheiroSereniContext())
            {
                Rpt03Repository r = (from p in db.Prospects
                                     join m in db.Mensagems on p equals m.Prospect
                                     join c in db.CorretorOnlines on m.CorretorOnline equals c
                                     where m.mensagemId == mensagemId
                                     select new Rpt03Repository
                {
                    mensagem = new Validate()
                    {
                        Code = 0
                    },
                    sessionId = System.Web.HttpContext.Current.Session.SessionID,
                    id = m.mensagemId,
                    mensagemEmail = m.mensagem,
                    email = p.email,
                    empreendimentoId = p.empreendimentoId,
                    nome = p.nome,
                    telefone = p.telefone,
                    dt_cadastro = m.dt_cadastro.Value,
                    nome_corretor = c.nome,
                    corretorId = m.corretorId,
                    tipo = "Atendimento por e-mail"
                }).FirstOrDefault();
                return(r);
            }
        }
コード例 #5
0
        public static IEnumerable <SelectListItem> Bind <T>(PinheiroSereniContext pinheiroSereni_db, string selectedValue = "", string header = "", params object[] param)
        {
            IDictionary <string, string> dic    = new Dictionary <string, string>();
            IEnumerable <SelectListItem> entity = new List <SelectListItem>();

            IBindDropDownList Instance = (IBindDropDownList)Activator.CreateInstance(typeof(T));

            try
            {
                entity = (IEnumerable <SelectListItem>)Instance.List(pinheiroSereni_db, param);

                foreach (SelectListItem e in entity)
                {
                    dic.Add(e.Value, e.Text);
                }

                return(Funcoes.getDropDownList(dic, selectedValue, header));
            }
            catch (Exception ex)
            {
                Validate result = new Validate()
                {
                    Field = "", Message = PinheiroSereniException.Exception(ex, "PinheiroSereni.Dominio.Factory.BindDropDownList", PinheiroSereniException.ErrorType.DropDownListError)
                };
                return(null);
            }
        }
コード例 #6
0
 public void TypingClient(int chatId, string value)
 {
     using (db = new PinheiroSereniContext())
     {
         _TypingClient(chatId, value);
         db.SaveChanges();
     }
 }
コード例 #7
0
        public ActionResult Rpt02(int?index)
        {
            using (PinheiroSereniContext db = new PinheiroSereniContext())
            {
                ViewBag.drpCorretores      = BindDropDownListFactory.Bind <drpCorretores>(db, "", "Todos...");
                ViewBag.drpEmpreendimentos = BindDropDownListFactory.Bind <drpEmpreedimentos>(db, "1");
            }

            return(Rpt02List(index, DateTime.Today.AddDays(-30).ToString("dd/MM/yyyy"), DateTime.Today.ToString("dd/MM/yyyy"), null, "1", "15"));
        }
コード例 #8
0
        public IEnumerable <SelectListItem> List(PinheiroSereniContext pinheiroSereni_db, params object[] param)
        {
            IEnumerable <SelectListItem> q = (from f in pinheiroSereni_db.Empreendimentos
                                              select new SelectListItem()
            {
                Value = SqlFunctions.StringConvert((decimal)f.empreendimentoId).Trim(),
                Text = f.nomeEmpreendimento
            }).ToList();

            return(q);
        }
コード例 #9
0
        public IEnumerable <SelectListItem> List(PinheiroSereniContext pinheiroSereni_db, params object[] param)
        {
            IEnumerable <SelectListItem> q = (from f in pinheiroSereni_db.CorretorOnlines
                                              select new SelectListItem()
            {
                Value = SqlFunctions.StringConvert((decimal)f.corretorId).Trim(),
                Text = f.nome
            }).ToList();

            return(q);
        }
コード例 #10
0
 public IEnumerable <Repository> List()
 {
     using (db = new PinheiroSereniContext())
     {
         return((from c in db.Sessaos
                 select new SessaoRepository
         {
             sessao = c
         }).ToList());
     }
 }
コード例 #11
0
 public Repository getObject(Object id)
 {
     using (PinheiroSereniContext db = new PinheiroSereniContext())
     {
         Prospect           value = (Prospect)id;
         ProspectRepository r     = new ProspectRepository()
         {
             prospect = db.Prospects.Find(value.email, value.empreendimentoId)
         };
         return(r);
     }
 }
コード例 #12
0
        public Repository getObject(Object id)
        {
            using (db = new PinheiroSereniContext())
            {
                ParamRepository r = new ParamRepository()
                {
                    mensagem  = new Validate(),
                    parametro = db.Parametros.Find((int)id)
                };

                return(r);
            }
        }
コード例 #13
0
        public Repository getObject(Object id)
        {
            using (db = new PinheiroSereniContext())
            {
                CorretorRepository r = new CorretorRepository()
                {
                    mensagem = new Validate(),
                    corretor = db.CorretorOnlines.Find((int)id)
                };

                return(r);
            }
        }
コード例 #14
0
 public IEnumerable <Repository> List()
 {
     using (db = new PinheiroSereniContext())
     {
         return((from c in db.Corretoras
                 select new CorretoraRepository
         {
             mensagem = new Validate()
             {
                 Code = 0
             },
             corretora = c
         }).ToList());
     }
 }
コード例 #15
0
 public IEnumerable <Repository> List()
 {
     using (db = new PinheiroSereniContext())
     {
         return((from c in db.CorretorOnlines
                 select new CorretorRepository
         {
             mensagem = new Validate()
             {
                 Code = 0
             },
             sessionId = System.Web.HttpContext.Current.Session.SessionID,
             corretor = c
         }).ToList());
     }
 }
コード例 #16
0
        public Repository Update(Repository value)
        {
            using (db = new PinheiroSereniContext())
            {
                try
                {
                    value.mensagem = new Validate()
                    {
                        Code = 0, Message = MensagemPadrao.Message(0).ToString()
                    };
                    ParamRepository r = (ParamRepository)value;
                    db.Entry(r.parametro).State = EntityState.Modified;
                    db.SaveChanges();
                }
                catch (System.Data.Entity.Infrastructure.DbUpdateException ex)
                {
                    value.mensagem.Code        = 36;
                    value.mensagem.MessageBase = MensagemPadrao.Message(36).ToString();
                    if ((ex.Message.ToUpper().Contains("FOREIGN KEY") || ex.Message.ToUpper().Contains("REFERENCE")) ||
                        (ex.InnerException.ToString().ToUpper().Contains("FOREIGN KEY") || ex.InnerException.ToString().ToUpper().Contains("REFERENCE")))
                    {
                        value.mensagem.Code    = 16;
                        value.mensagem.Message = MensagemPadrao.Message(16).ToString();
                    }
                    else if (ex.Message.ToUpper().Contains("PRIMARY KEY") ||
                             ex.InnerException.ToString().ToUpper().Contains("PRIMARY KEY"))
                    {
                        value.mensagem.Code    = 37;
                        value.mensagem.Message = MensagemPadrao.Message(37).ToString();
                    }
                    else
                    {
                        value.mensagem.Message = MensagemPadrao.Message(17).ToString();
                    }
                    PinheiroSereniException.saveError(ex, GetType().FullName);
                }
                catch (Exception ex)
                {
                    PinheiroSereniException.saveError(ex, GetType().FullName);
                    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);
        }
コード例 #17
0
        public IEnumerable <Repository> ListRepository(params object[] param)
        {
            DateTime dt_inicio        = (DateTime)param[0];
            DateTime dt_fim           = ((DateTime)param[1]).AddDays(1).AddMinutes(-1);
            string   ordenacao        = param[2].ToString();
            int      empreendimentoId = (int)(param[3]);

            using (db = new PinheiroSereniContext())
            {
                IEnumerable <Rpt01Repository> q1 = (from p in db.Prospects
                                                    where p.dt_cadastro >= dt_inicio && p.dt_cadastro <= dt_fim &&
                                                    p.empreendimentoId == empreendimentoId
                                                    orderby p.nome
                                                    select new Rpt01Repository
                {
                    mensagem = new Validate()
                    {
                        Code = 0
                    },
                    sessionId = System.Web.HttpContext.Current.Session.SessionID,
                    email = p.email,
                    empreendimentoId = p.empreendimentoId,
                    nome = p.nome,
                    telefone = p.telefone,
                    dt_cadastro = p.dt_cadastro.Value,
                    isFolderDigital = p.isFolderDigital == "S" ? "SIM" : "NÃO",
                    isAtendimentoEmail = (from m in db.Mensagems
                                          where m.email == p.email
                                          select m.email).Count() > 0 ? "SIM" : "NÃO",
                    isChat = (from c in db.Chats
                              where c.email == p.email
                              select c.email).Count() > 0 ? "SIM" : "NÃO",
                    isSms = (from s in db.SMSs
                             where s.telefone == p.telefone
                             select s.nome).Count() > 0 ? "SIM" : "NÃO"
                }).ToList();

                if (ordenacao == "D")
                {
                    return(q1.OrderBy(m => m.dt_cadastro).ToList());
                }
                else
                {
                    return(q1);
                }
            }
        }
コード例 #18
0
 public IEnumerable <Repository> List()
 {
     using (db = new PinheiroSereniContext())
     {
         return((from p in db.Parametros
                 where p.parametroID == 1 || p.parametroID == 7
                 select new ParamRepository
         {
             mensagem = new Validate()
             {
                 Code = 0
             },
             sessionId = System.Web.HttpContext.Current.Session.SessionID,
             parametro = p
         }).ToList());
     }
 }
コード例 #19
0
        public IEnumerable <Repository> ListRepository(params object[] param)
        {
            DateTime dt_inicio        = (DateTime)param[0];
            DateTime dt_fim           = ((DateTime)param[1]).AddDays(1).AddMinutes(-1);
            int?     corretorId       = (int?)param[2];
            int      empreendimentoId = (int)(param[3]);

            using (db = new PinheiroSereniContext())
            {
                DateTime d = dt_inicio;
                IList <Rpt02Repository> list = new List <Rpt02Repository>();
                while (d <= dt_fim)
                {
                    DateTime        d1 = d;
                    DateTime        d2 = d1.AddDays(1).AddMinutes(-1);
                    Rpt02Repository r  = new Rpt02Repository()
                    {
                        dt_cadastro         = d,
                        empreendimentoId    = empreendimentoId,
                        qteAtendimentoEmail = (from a in db.Mensagems where a.dt_cadastro >= d1 && a.dt_cadastro <= d2 && a.empreendimentoId == empreendimentoId && (corretorId == null || a.corretorId == corretorId) select a).Count(),
                        qteChat             = (from b in db.Chats where b.dt_inicio >= d1 && b.dt_inicio <= d2 && b.dt_fim != null && b.empreendimentoId == empreendimentoId && (corretorId == null || b.corretorId == corretorId) select b).Count(),
                        qteFolderDigital    = (from c in db.Prospects where c.dt_cadastro >= d1 && c.dt_cadastro <= d2 && c.empreendimentoId == empreendimentoId && c.isFolderDigital == "S" select c).Count(),
                        qteSms = (from e in db.SMSs where e.dt_cadastro >= d1 && e.dt_cadastro <= d2 && e.empreendimentoId == empreendimentoId && (corretorId == null || e.corretorId == corretorId) select e).Count()
                    };

                    list.Add(r);

                    d = d.AddDays(1);
                }

                Rpt02Repository rT = new Rpt02Repository()
                {
                    qteAtendimentoEmail = list.Sum(m => m.qteAtendimentoEmail),
                    qteChat             = list.Sum(m => m.qteChat),
                    qteFolderDigital    = list.Sum(m => m.qteFolderDigital),
                    qteSms = list.Sum(m => m.qteSms)
                };

                list.Add(rT);

                return(list);
            }
        }
コード例 #20
0
        public ActionResult Create(string sucesso = "")
        {
            if (AccessDenied(System.Web.HttpContext.Current.Session.SessionID))
            {
                return(RedirectToAction("Index", "Home"));
            }

            using (PinheiroSereniContext db = new PinheiroSereniContext())
                ViewBag.drpCorretoras = BindDropDownListFactory.Bind <drpCorretoras>(db, "", "Selecione...");
            ViewBag.drpSituacao = BindDropDownListFactory.BindEnum <PinheiroSereni.Dominio.Enumeracoes.drpSituacao>("A");

            if (sucesso != null)
            {
                if (sucesso.Trim() != "")
                {
                    ViewBag.Sucesso = sucesso;
                }
            }

            return(View());
        }
コード例 #21
0
        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);
        }
コード例 #22
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();
                }
            }
        }
コード例 #23
0
        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);
        }
コード例 #24
0
        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);
        }
コード例 #25
0
        /// <summary>
        /// Inicia um novo chat entre o cliente e o corretor
        /// </summary>
        /// <param name="chatRepository"></param>
        /// <returns></returns>
        public Repository Start(Repository chatRepository)
        {
            using (db = new PinheiroSereniContext())
            {
                try
                {
                    ChatRepository r = (ChatRepository)chatRepository;

                    #region identifica o corretor da vez
                    r.corretor = r.corretorDaVez.obterCorretor(db.Chats, db.CorretorOnlines);
                    #endregion

                    #region verifica se tem sessão ativa para o corretor da vez
                    var _s = from s in db.Sessaos
                             where s.corretorId == r.corretor.corretorId &&
                             s.dt_desativacao == null &&
                             s.statusOperador.Equals("O")
                             select s;
                    #endregion

                    #region Se o corretor da vez não tiver sessão ativa, procurar o primeiro corretor que esteja online
                    if (_s.Count() == 0)
                    {
                        _s = from s in db.Sessaos
                             where s.dt_desativacao == null &&
                             s.statusOperador.Equals("O") &&
                             s.corretorId != null
                             orderby s.CorretorOnline.indexEscala
                             select s;

                        if (_s.Count() == 0)
                        {
                            throw new ArgumentNullException(); // não tem nenhum corretor online
                        }
                        else if (_s.Where(m => m.CorretorOnline.indexEscala >= r.corretor.indexEscala).Count() > 0)
                        {
                            _s = _s.Where(m => m.CorretorOnline.indexEscala >= r.corretor.indexEscala);
                        }
                    }
                    #endregion

                    r.corretor  = db.CorretorOnlines.Find(_s.First().corretorId);
                    r.sessionId = _s.First().sessaoId;
                    r.sessao    = _s.First();

                    #region Incluir cliente
                    Prospect p = new Prospect()
                    {
                        email            = ((ChatRepository)chatRepository).prospect.email.ToLower(),
                        empreendimentoId = ((ChatRepository)chatRepository).prospect.empreendimentoId,
                        nome             = ((ChatRepository)chatRepository).prospect.nome,
                        telefone         = ((ChatRepository)chatRepository).prospect.telefone,
                        isFolderDigital  = "N",
                        dt_cadastro      = DateTime.Now
                    };

                    if (db.Prospects.Find(r.prospect.email, r.prospect.empreendimentoId) == null)
                    {
                        db.Prospects.Add(p);
                    }
                    #endregion

                    #region Incluir o Chat
                    PinheiroSereni.Dominio.Entidades.Chat chat = new Dominio.Entidades.Chat()
                    {
                        sessaoId         = r.sessionId,
                        corretorId       = r.corretor.corretorId,
                        email            = r.prospect.email,
                        empreendimentoId = r.prospect.empreendimentoId,
                        dt_inicio        = DateTime.Now
                    };
                    db.Chats.Add(chat);

                    #endregion

                    #region Incluir a mensagem de boas vindas
                    ChatMessage msg = new ChatMessage()
                    {
                        messageId        = Guid.NewGuid(),
                        chatId           = chat.chatId,
                        corretorId       = r.corretor.corretorId,
                        dt_message       = DateTime.Now,
                        empreendimentoId = r.prospect.empreendimentoId,
                        message          = "Olá <b>" + r.prospect.nome + "</b>. Sou da equipe de vendas da Pinheiro Sereni Engenharia. Estou à disposição para ajudá-lo(a). Você já foi atendido(a) por um de nossos corretores?"
                    };
                    db.ChatMessages.Add(msg);
                    #endregion

                    db.SaveChanges();

                    r.chat.chatId       = chat.chatId;
                    r.path_fotoCorretor = db.Parametros.Find((int)Parametros.PATH_FOTOCORRETOR).valor;

                    return(r);
                }
                catch (ArgumentNullException ex)
                {
                    chatRepository.mensagem = new Validate()
                    {
                        Code = 35, Message = MensagemPadrao.Message(35).ToString(), MessageBase = ex.Message
                    };
                }
                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 + " => " + ex.InnerException.Message, GetType().FullName).Message;
                }
            }
            return(chatRepository);
        }
コード例 #26
0
        public Repository ContabilizaClick(Repository chatRepository)
        {
            using (db = new PinheiroSereniContext())
            {
                try
                {
                    ChatRepository r = (ChatRepository)chatRepository;

                    #region verifica se tem sessão ativa para o corretor da vez
                    var _s = db.Sessaos.Take(1);
                    #endregion

                    r.corretor  = db.CorretorOnlines.Find(25); // Supervisor Online
                    r.sessionId = _s.First().sessaoId;
                    r.sessao    = _s.First();

                    #region Incluir cliente
                    Prospect p = new Prospect()
                    {
                        email            = ((ChatRepository)chatRepository).prospect.email.ToLower(),
                        empreendimentoId = ((ChatRepository)chatRepository).prospect.empreendimentoId,
                        nome             = ((ChatRepository)chatRepository).prospect.nome,
                        isFolderDigital  = "N",
                        dt_cadastro      = DateTime.Now
                    };

                    if (db.Prospects.Find(r.prospect.email, r.prospect.empreendimentoId) == null)
                    {
                        db.Prospects.Add(p);
                    }
                    #endregion

                    #region Incluir o Chat
                    PinheiroSereni.Dominio.Entidades.Chat chat = new Dominio.Entidades.Chat()
                    {
                        sessaoId         = r.sessionId,
                        corretorId       = r.corretor.corretorId,
                        email            = r.prospect.email,
                        empreendimentoId = r.prospect.empreendimentoId,
                        dt_inicio        = DateTime.Now,
                        dt_fim           = DateTime.Now.AddSeconds(1),
                        typingClient     = "N",
                        typingOperator   = "N"
                    };
                    db.Chats.Add(chat);

                    #endregion

                    #region Incluir a mensagem de boas vindas
                    ChatMessage msg = new ChatMessage()
                    {
                        messageId        = Guid.NewGuid(),
                        chatId           = chat.chatId,
                        email            = r.prospect.email,
                        dt_message       = DateTime.Now,
                        empreendimentoId = r.prospect.empreendimentoId,
                        message          = "[Contabilização de CHAT - Data do click: " + DateTime.Now.ToString("dd/MM/yyyy HH:mm") + "h. - IP do cliente: " + System.Web.HttpContext.Current.Request.UserHostAddress + " ]"
                    };
                    db.ChatMessages.Add(msg);
                    #endregion

                    db.SaveChanges();

                    r.chat.chatId = chat.chatId;

                    return(r);
                }
                catch (ArgumentNullException ex)
                {
                    chatRepository.mensagem = new Validate()
                    {
                        Code = 35, Message = MensagemPadrao.Message(35).ToString(), MessageBase = ex.Message
                    };
                }
                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 + " => " + ex.InnerException.Message, GetType().FullName).Message;
                }
            }
            return(chatRepository);
        }
コード例 #27
0
        public IEnumerable <Repository> ListRepository(params object[] param)
        {
            DateTime dt_inicio        = (DateTime)param[0];
            DateTime dt_fim           = ((DateTime)param[1]).AddDays(1).AddMinutes(-1);
            int?     corretorId       = (int?)param[2];
            int      tipo             = (int)param[3];
            int      empreendimentoId = (int)(param[4]);

            using (db = new PinheiroSereniContext())
            {
                IList <Rpt03Repository> q1 = null;
                IList <Rpt03Repository> q2 = null;
                IList <Rpt03Repository> q3 = null;

                IList <Rpt03Repository> q = new List <Rpt03Repository>();

                // Todos ou Atendimento por E-Mail
                if (tipo == 0 || tipo == 1)
                {
                    q1 = (from p in db.Prospects
                          join m in db.Mensagems on p equals m.Prospect
                          join c in db.CorretorOnlines on m.CorretorOnline equals c
                          where m.dt_cadastro >= dt_inicio && m.dt_cadastro <= dt_fim &&
                          m.empreendimentoId == empreendimentoId &&
                          (corretorId == null || m.corretorId == corretorId)
                          orderby m.dt_cadastro
                          select new Rpt03Repository
                    {
                        mensagem = new Validate()
                        {
                            Code = 0
                        },
                        sessionId = System.Web.HttpContext.Current.Session.SessionID,
                        id = m.mensagemId,
                        email = p.email,
                        empreendimentoId = empreendimentoId,
                        nome = p.nome,
                        telefone = p.telefone,
                        dt_cadastro = m.dt_cadastro.Value,
                        nome_corretor = c.nome,
                        corretorId = m.corretorId,
                        tipo = "Atendimento por e-mail"
                    }).ToList();
                    q = q.Union(q1).ToList();
                }

                // Todos ou Chat
                if (tipo == 0 || tipo == 2)
                {
                    q2 = (from p in db.Prospects
                          join ch in db.Chats on p equals ch.Prospect
                          join cor in db.CorretorOnlines on ch.CorretorOnline equals cor
                          where ch.dt_inicio >= dt_inicio && ch.dt_inicio <= dt_fim &&
                          ch.empreendimentoId == empreendimentoId &&
                          (corretorId == null || ch.corretorId == corretorId) &&
                          ch.dt_fim != null
                          orderby ch.dt_inicio
                          select new Rpt03Repository
                    {
                        mensagem = new Validate()
                        {
                            Code = 0
                        },
                        sessionId = System.Web.HttpContext.Current.Session.SessionID,
                        id = ch.chatId,
                        email = p.email,
                        empreendimentoId = empreendimentoId,
                        nome = p.nome,
                        telefone = p.telefone,
                        dt_cadastro = ch.dt_inicio,
                        nome_corretor = cor.nome,
                        corretorId = ch.corretorId,
                        tipo = "Chat"
                    }).ToList();
                    q = q.Union(q2).ToList();
                }

                // Todos ou SMS
                if (tipo == 0 || tipo == 3)
                {
                    q3 = (from sms in db.SMSs
                          join c in db.CorretorOnlines on sms.CorretorOnline equals c
                          where sms.dt_cadastro >= dt_inicio && sms.dt_cadastro <= dt_fim &&
                          sms.empreendimentoId == empreendimentoId &&
                          (corretorId == null || sms.corretorId == corretorId)
                          orderby sms.dt_cadastro
                          select new Rpt03Repository
                    {
                        mensagem = new Validate()
                        {
                            Code = 0
                        },
                        sessionId = System.Web.HttpContext.Current.Session.SessionID,
                        id = sms.smsId,
                        nome = sms.nome,
                        empreendimentoId = empreendimentoId,
                        telefone = sms.telefone,
                        dt_cadastro = sms.dt_cadastro.Value,
                        nome_corretor = c.nome,
                        corretorId = sms.corretorId,
                        tipo = "Ligamos para você"
                    }).ToList();
                    q = q.Union(q3).ToList();
                }

                return(q.OrderBy(m => m.dt_cadastro).ToList());
            }
        }
コード例 #28
0
        public Validate autenticar(string usuario, string senha)
        {
            using (db = new PinheiroSereniContext())
            {
                Validate validate = new Validate()
                {
                    Code = 0, Message = MensagemPadrao.Message(0).ToString()
                };
                try
                {
                    int id = 0;
                    if (!int.TryParse(usuario, out id))
                    {
                        throw new ArithmeticException("ID informado não é um número inteiro válido");
                    }

                    #region Recupera o usuário
                    CorretorOnline operador = db.CorretorOnlines.Find(id);
                    #endregion

                    #region autenticar
                    if (operador != null)
                    {
                        if (!senha.Equals(operador.senha) || operador.situacao != "A")
                        {
                            validate.Code        = 35;
                            validate.Message     = MensagemPadrao.Message(35).ToString();
                            validate.MessageBase = MensagemPadrao.Message(999).ToString();
                        }
                    }
                    else
                    {
                        validate.Code        = 35;
                        validate.Message     = MensagemPadrao.Message(35).ToString();
                        validate.MessageBase = MensagemPadrao.Message(999).ToString();
                    }
                    #endregion

                    #region Limpa as sessões inativas e os chats vinculados
                    ChatModel chatModel = new ChatModel();
                    chatModel.CleanInactiveSessions();
                    #endregion

                    #region verifica se o corretor está online em alguma outra sessão
                    if ((from s1 in db.Sessaos where s1.corretorId == id && s1.dt_desativacao == null select s1).Count() > 0)
                    {
                        validate.Code        = 36;
                        validate.Message     = MensagemPadrao.Message(36).ToString();
                        validate.MessageBase = MensagemPadrao.Message(998).ToString();
                    }

                    #endregion

                    #region insere a sessao
                    if (validate.Code == 0)
                    {
                        System.Web.HttpContext web = System.Web.HttpContext.Current;

                        if (db.Sessaos.Find(web.Session.SessionID) == null)
                        {
                            Sessao sessao = new Sessao()
                            {
                                sessaoId       = web.Session.SessionID,
                                dt_ativacao    = DateTime.Now,
                                dt_atualizacao = DateTime.Now,
                                corretorId     = operador.corretorId,
                                statusOperador = "O" // online
                            };

                            db.Sessaos.Add(sessao);
                            db.SaveChanges();
                            validate.Field = web.Session.SessionID;
                        }
                        else
                        {
                            Sessao sessao = db.Sessaos.Find(web.Session.SessionID);

                            #region verifica se a sessão é do mesmo corretor
                            if (sessao.corretorId != operador.corretorId && sessao.dt_desativacao == null)
                            {
                                validate.Code        = 39;
                                validate.Message     = MensagemPadrao.Message(39).ToString();
                                validate.MessageBase = MensagemPadrao.Message(998).ToString();
                            }
                            #endregion
                            else
                            {
                                sessao.dt_desativacao = null;
                                sessao.dt_atualizacao = DateTime.Now;
                                sessao.corretorId     = operador.corretorId;
                                sessao.statusOperador = "O";

                                db.Entry(sessao).State = EntityState.Modified;
                                db.SaveChanges();
                                validate.Field = web.Session.SessionID;
                            }
                        }
                    }
                    #endregion
                }
                catch (ArithmeticException ex)
                {
                    validate.Code        = 4;
                    validate.Message     = MensagemPadrao.Message(4, "ID do operador", ex.Message).ToString();
                    validate.MessageBase = MensagemPadrao.Message(999).ToString();
                }
                catch (Exception ex)
                {
                    validate.Code        = 17;
                    validate.MessageBase = ex.Message;
                    validate.Message     = new PinheiroSereniException(ex.Message + " => " + ex.InnerException.Message, GetType().FullName).Message;
                }
                return(validate);
            }
        }
コード例 #29
0
        public Repository Delete(Repository value)
        {
            using (db = new PinheiroSereniContext())
            {
                try
                {
                    #region validar exclusão
                    value.mensagem = this.Validate(value, Crud.EXCLUIR);
                    #endregion

                    #region excui o Corretor
                    if (value.mensagem.Code == 0)
                    {
                        CorretorRepository r    = (CorretorRepository)value;
                        CorretorOnline     corr = db.CorretorOnlines.Find(r.corretor.corretorId);
                        db.CorretorOnlines.Remove(corr);
                        db.SaveChanges();
                    }
                    else
                    {
                        value.mensagem.MessageBase = MensagemPadrao.Message(999).ToString();
                    }
                    #endregion
                }
                catch (System.Data.Entity.Infrastructure.DbUpdateException ex)
                {
                    value.mensagem.Code        = 36;
                    value.mensagem.MessageBase = MensagemPadrao.Message(36).ToString();
                    if ((ex.Message.ToUpper().Contains("FOREIGN KEY") || ex.Message.ToUpper().Contains("REFERENCE")) ||
                        (ex.InnerException.ToString().ToUpper().Contains("FOREIGN KEY") || ex.InnerException.ToString().ToUpper().Contains("REFERENCE")))
                    {
                        value.mensagem.Code    = 16;
                        value.mensagem.Message = MensagemPadrao.Message(16).ToString();
                    }
                    else if (ex.Message.ToUpper().Contains("PRIMARY KEY") ||
                             ex.InnerException.ToString().ToUpper().Contains("PRIMARY KEY"))
                    {
                        value.mensagem.Code    = 37;
                        value.mensagem.Message = MensagemPadrao.Message(37).ToString();
                    }
                    else
                    {
                        value.mensagem.Message = MensagemPadrao.Message(17).ToString();
                    }
                    PinheiroSereniException.saveError(ex, GetType().FullName);
                }
                catch (ArgumentException ex)
                {
                    value.mensagem = new Validate()
                    {
                        Code = 17, Message = MensagemPadrao.Message(17).ToString(), MessageBase = ex.Message
                    };
                }
                catch (Exception ex)
                {
                    PinheiroSereniException.saveError(ex, GetType().FullName);
                    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);
        }
コード例 #30
0
        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 Corretor
                    if (value.mensagem.Code == 0)
                    {
                        CorretorRepository r = (CorretorRepository)value;
                        db.Entry(r.corretor).State = EntityState.Modified;
                        db.SaveChanges();
                    }
                    else
                    {
                        value.mensagem.MessageBase = MensagemPadrao.Message(999).ToString();
                    }
                    #endregion
                }
                catch (System.Data.Entity.Infrastructure.DbUpdateException ex)
                {
                    value.mensagem.Code        = 36;
                    value.mensagem.MessageBase = MensagemPadrao.Message(36).ToString();
                    if ((ex.Message.ToUpper().Contains("FOREIGN KEY") || ex.Message.ToUpper().Contains("REFERENCE")) ||
                        (ex.InnerException.ToString().ToUpper().Contains("FOREIGN KEY") || ex.InnerException.ToString().ToUpper().Contains("REFERENCE")))
                    {
                        value.mensagem.Code    = 16;
                        value.mensagem.Message = MensagemPadrao.Message(16).ToString();
                    }
                    else if (ex.Message.ToUpper().Contains("PRIMARY KEY") ||
                             ex.InnerException.ToString().ToUpper().Contains("PRIMARY KEY"))
                    {
                        value.mensagem.Code    = 37;
                        value.mensagem.Message = MensagemPadrao.Message(37).ToString();
                    }
                    else
                    {
                        value.mensagem.Message = MensagemPadrao.Message(17).ToString();
                    }
                    PinheiroSereniException.saveError(ex, GetType().FullName);
                }
                catch (ArgumentException ex)
                {
                    value.mensagem = new Validate()
                    {
                        Code = 17, Message = MensagemPadrao.Message(17).ToString(), MessageBase = ex.Message
                    };
                }
                catch (Exception ex)
                {
                    PinheiroSereniException.saveError(ex, GetType().FullName);
                    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);
        }