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 void TypingClient(int chatId, string value)
 {
     using (db = new PinheiroSereniContext())
     {
         _TypingClient(chatId, value);
         db.SaveChanges();
     }
 }
        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);
        }
        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);
        }
        /// <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 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);
        }
        /// <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);
        }
        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);
        }
示例#10
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);
        }
示例#11
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);
        }
示例#12
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);
            }
        }
示例#13
0
        public Repository Insert(Repository value)
        {
            using (PinheiroSereniContext db = new PinheiroSereniContext())
            {
                try
                {
                    value.mensagem = Validate(value, Crud.INCLUIR);

                    if (value.mensagem.Code > 0)
                    {
                        throw new ArgumentException(value.mensagem.Message);
                    }

                    #region identifica o corretor da vez
                    AtendimentoEmailRepository r        = (AtendimentoEmailRepository)value;
                    CorretorOnline             corretor = r.corretor.obterCorretor(db.Mensagems, 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 == 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) // não tem corretor online => usar o corretor "Supervisor Online"
                        {
                            corretor = (from cor in db.CorretorOnlines where cor.nome == "Supervisor Online" select cor).FirstOrDefault();
                        }
                        else if (_s.Where(m => m.CorretorOnline.indexEscala >= corretor.indexEscala).Count() > 0)
                        {
                            _s       = _s.Where(m => m.CorretorOnline.indexEscala >= corretor.indexEscala);
                            corretor = db.CorretorOnlines.Find(_s.First().corretorId);
                        }
                    }
                    #endregion

                    #region insere a inscricao do cliente
                    r.prospect.dt_cadastro     = DateTime.Now;
                    r.prospect.isFolderDigital = "N";
                    if (db.Prospects.Find(r.prospect.email, r.prospect.empreendimentoId) == null)
                    {
                        db.Prospects.Add(r.prospect);
                    }
                    #endregion

                    #region insere a mensagem
                    r.msg.dt_cadastro      = DateTime.Now;
                    r.msg.email            = r.prospect.email;
                    r.msg.empreendimentoId = r.prospect.empreendimentoId;
                    r.msg.corretorId       = corretor.corretorId;
                    r.msg.emailDirecao1    = db.Parametros.Find((int)Parametros.EMAIL_ADMINISTRACAO).valor;
                    r.msg.assunto          = "Confirmação de recebimento de e-mail";

                    db.Mensagems.Add(r.msg);
                    #endregion

                    db.SaveChanges();

                    #region envia e-mail para o corretor e para os diretores (com cópia para o próprio cliente)
                    string fone_emp = "3131-4450";

                    Empreendimento emp = db.Empreendimentos.Find(r.prospect.empreendimentoId);
                    if (emp.empreendimentoId == 2)
                    {
                        fone_emp = "3222-8111";
                    }

                    EMail message = new EMail();
                    //message.From = new MailAddress(db.Parametros.Find((int)Parametros.EMAIL_SISTEMA).valor, db.Parametros.Find((int)Parametros.NOME_EMAIL_SISTEMA).valor);
                    message.From = new MailAddress(System.Configuration.ConfigurationManager.AppSettings["emailRemetente"], db.Parametros.Find((int)Parametros.NOME_EMAIL_SISTEMA).valor);
                    message.To.Add(new MailAddress(corretor.email, corretor.nome));
                    message.Bcc.Add(new MailAddress(r.prospect.email, r.prospect.nome));
                    message.Bcc.Add(new MailAddress(db.Parametros.Find((int)Parametros.EMAIL_ADMINISTRACAO).valor, db.Parametros.Find((int)Parametros.NOME_ADMINISTRACAO).valor));
                    message.Subject = r.msg.assunto;
                    message.Body    = "<div style=\"font-family: verdana; font-size: 12px; width: 700px\">" +
                                      "<div><p>Olá, <b>" + r.prospect.nome + "</b></p></div>" +
                                      "<div><p>Você cadastrou seus dados no hotsite " + emp.nomeEmpreendimento + ", um empreendimento da " + db.Parametros.Find((int)Parametros.NOME_ADMINISTRACAO).valor + ", e está recebendo a confirmação de envio de sua mensagem para um de nossos corretores.</p></div>" +
                                      "<div><p>E-Mail:</p></div>" +
                                      "<div><p><a href=\"mailto:" + r.prospect.email + "\">" + r.prospect.email + "</a></p></div>" +
                                      "<div><p>Mensagem:</p></div>" +
                                      "<div><p><i>\"" + r.msg.mensagem + "\"</i></p></div>" +
                                      "<div><p>Caso deseje obter mais informações sobre o " + emp.nomeEmpreendimento + ", teremos o maior prazer em atendê-lo através de nossa Central de Atendimento, pelo telefone: (91)" + fone_emp + ".</p></div>" +
                                      "<div><p>Um abraço,</p></div>" +
                                      "<div><b>Salomão Benmuyal</b></div>" +
                                      "<div><b>Gerente Comercial</b></div>" +
                                      "<div><b>" + db.Parametros.Find((int)Parametros.NOME_ADMINISTRACAO).valor + "</b></div>" +
                                      "<div>&nbsp;</div>" +
                                      "<div><img src=\"http://www.vendaspiazzatoscana.com.br/content/themes/base/images/PiazzaToscana/LogoPinheiroSereni.png\" alt=\"\" /></div>" +
                                      "</div>";
                    #if (release)
                    message.SendMail();
                    #endif
                    message.Dispose();
                    #endregion

                    //trans.Commit();
                }
                catch (PinheiroSereniException ex)
                {
                    value.mensagem = new Validate()
                    {
                        Code = 17, Message = MensagemPadrao.Message(17).ToString(), MessageBase = ex.Message
                    };
                }
                catch (ArgumentException ex)
                {
                    value.mensagem = new Validate()
                    {
                        Code = value.mensagem.Code, Message = MensagemPadrao.Message(value.mensagem.Code.Value, "telefone", value.mensagem.Message.ToString()).ToString(), MessageBase = ex.Message
                    };
                }
                catch (System.Net.Mail.SmtpException ex)
                {
                    //trans.Rollback();
                    PinheiroSereniException.saveError(ex, GetType().FullName);
                    value.mensagem = new Validate()
                    {
                        Code = 15, Message = MensagemPadrao.Message(15).ToString(), MessageBase = ex.Message
                    };
                }
                catch (Exception ex)
                {
                    //trans.Rollback();
                    throw new PinheiroSereniException(ex.Message, GetType().FullName);
                }
            }

            return(value);
        }
示例#14
0
        public Validate autenticar(string usuario, string senha)
        {
            using (db = new PinheiroSereniContext())
            {
                Validate validate = new Validate()
                {
                    Code = 0, Message = MensagemPadrao.Message(0).ToString()
                };
                try
                {
                    #region Recupera o usuário
                    string _usuario = db.Parametros.Find((int)Parametros.EMAIL_ADMINISTRACAO).valor;
                    #endregion

                    #region recupera a senha
                    string _senha = db.Parametros.Find((int)Parametros.AUTKEY).valor;
                    #endregion

                    #region autenticar
                    if (!usuario.Equals(_usuario) || !senha.Equals(_senha))
                    {
                        validate.Code        = 35;
                        validate.Message     = MensagemPadrao.Message(35).ToString();
                        validate.MessageBase = MensagemPadrao.Message(999).ToString();
                    }
                    #endregion

                    #region insere a sessao
                    if (validate.Code == 0)
                    {
                        System.Web.HttpContext web = System.Web.HttpContext.Current;
                        Sessao s1 = db.Sessaos.Find(web.Session.SessionID);

                        if (s1 == null)
                        {
                            Sessao sessao = new Sessao()
                            {
                                sessaoId       = web.Session.SessionID,
                                dt_ativacao    = DateTime.Now,
                                dt_atualizacao = DateTime.Now,
                                statusOperador = "O"
                            };

                            db.Sessaos.Add(sessao);
                        }
                        else
                        {
                            Sessao sessao = db.Sessaos.Find(web.Session.SessionID);
                            sessao.dt_desativacao = null;
                            sessao.dt_atualizacao = DateTime.Now;

                            db.Entry(sessao).State = EntityState.Modified;
                        }
                        db.SaveChanges();
                        validate.Field = web.Session.SessionID;
                    }
                    #endregion
                }
                catch (DbEntityValidationException ex)
                {
                    throw new PinheiroSereniException(ex.Message, GetType().FullName);
                }
                catch (Exception ex)
                {
                    throw new PinheiroSereniException(ex.Message, GetType().FullName);
                }
                return(validate);
            }
        }
示例#15
0
        public Repository Insert(Repository value)
        {
            using (PinheiroSereniContext db = new PinheiroSereniContext())
            {
                value.mensagem = new Validate()
                {
                    Code = 0, Message = "Seu folder digital já foi enviado para sua caixa de e-mail.".Replace("[br]", "<br />")
                };
                try
                {
                    #region insere a inscricao do cliente
                    ProspectRepository r = (ProspectRepository)value;
                    r.prospect.nome            = r.nomeCompleto;
                    r.prospect.email           = r.prospect.email.ToLower();
                    r.prospect.dt_cadastro     = DateTime.Now;
                    r.prospect.isFolderDigital = "S";
                    if (db.Prospects.Find(r.prospect.email, r.prospect.empreendimentoId) == null)
                    {
                        db.Prospects.Add(r.prospect);
                        db.SaveChanges();
                    }
                    #endregion

                    #region envia e-mail com o anexo do prospecto do empreendimento para o cliente e para a administração
                    Empreendimento emp = db.Empreendimentos.Find(r.prospect.empreendimentoId);

                    string fone_emp = "3131-4450";
                    if (emp.empreendimentoId == 2)
                    {
                        fone_emp = "3222-8111";
                    }

                    System.Web.HttpContext web = System.Web.HttpContext.Current;
                    EMail message = new EMail();
                    //message.From = new MailAddress(db.Parametros.Find((int)Parametros.EMAIL_SISTEMA).valor, db.Parametros.Find((int)Parametros.NOME_EMAIL_SISTEMA).valor);
                    message.From = new MailAddress(System.Configuration.ConfigurationManager.AppSettings["emailRemetente"], db.Parametros.Find((int)Parametros.NOME_EMAIL_SISTEMA).valor);
                    message.To.Add(new MailAddress(r.prospect.email, r.prospect.nome));
                    message.Bcc.Add(new MailAddress(db.Parametros.Find((int)Parametros.EMAIL_ADMINISTRACAO).valor, db.Parametros.Find((int)Parametros.NOME_ADMINISTRACAO).valor));
                    if (r.prospect.empreendimentoId == 1)
                    {
                        message.Attachments.Add(new Attachment(web.Server.MapPath("").Replace("\\Home", "") + db.Parametros.Find((int)Parametros.PATH_EMAIL_ANEXO).valor + emp.nomeEmpreendimento.Replace(" ", "") + ".pdf"));
                    }
                    message.Subject = "Apresentação " + emp.nomeEmpreendimento + " - Folder Digital";
                    message.Body    = "<!DOCTYPE html>" +
                                      "<html xmlns=\"http://www.w3.org/1999/xhtml\">" +
                                      "<head>" +
                                      "   <title>" + emp.nomeEmpreendimento + "</title>" +
                                      "</head>" +
                                      "<body>";
                    message.Body += "<div style=\"font-family: verdana; font-size: 12px; width: 700px\">" +
                                    "<div><p>Olá, <b>" + r.prospect.nome + "</b></p></div>" +
                                    "<div><p>Você cadastrou seus dados no hotsite " + emp.nomeEmpreendimento + ", um empreendimento da " + db.Parametros.Find((int)Parametros.NOME_ADMINISTRACAO).valor + ", e está recebendo, em anexo, nosso folder digital com detalhes do projeto.</p></div>" +
                                    "<div><p>Caso deseje obter mais informações sobre o " + emp.nomeEmpreendimento + ", teremos o maior prazer em atendê-lo através de nossa Central de Atendimento, pelo telefone: (91)" + fone_emp + ".</p></div>";

                    if (r.prospect.empreendimentoId == 2) // somente se for San Gennaro
                    {
                        message.Body += "<div><p><a href=\"" + db.Empreendimentos.Find(2).urlFolderDigital + "\">Clique aqui para consultar o folder digital do empreendimento</a></p></div>";
                    }

                    message.Body += "<div><p>Um abraço,</p></div>" +
                                    "<div><b>Salomão Benmuyal</b></div>" +
                                    "<div><b>Gerente Comercial</b></div>" +
                                    "<div><b>" + db.Parametros.Find((int)Parametros.NOME_ADMINISTRACAO).valor + "</b></div>" +
                                    "<div>&nbsp;</div>" +
                                    //"<div><img src=\"http://www.vendaspiazzatoscana.com.br/content/themes/base/images/PiazzaToscana/LogoPinheiroSereni.png\" alt=\"\" /></div>" +
                                    "</div>";
                    message.Body += "</body>" +
                                    "</html>";
                    #if (release)
                    message.SendMail();
                    #endif
                    message.Dispose();
                    #endregion
                }
                catch (PinheiroSereniException ex)
                {
                    value.mensagem = new Validate()
                    {
                        Code = 17, Message = MensagemPadrao.Message(17).ToString(), MessageBase = ex.Message
                    };
                }
                catch (ArgumentException ex)
                {
                    value.mensagem = new Validate()
                    {
                        Code = 17, Message = MensagemPadrao.Message(17).ToString(), MessageBase = ex.Message
                    };
                }
                catch (System.Net.Mail.SmtpException ex)
                {
                    PinheiroSereniException.saveError(ex, GetType().FullName);
                    value.mensagem = new Validate()
                    {
                        Code = 15, Message = MensagemPadrao.Message(15).ToString(), MessageBase = ex.Message
                    };
                }
                catch (Exception ex)
                {
                    throw new PinheiroSereniException(ex.Message, GetType().FullName);
                }
            }

            return(value);
        }
        public Repository Insert(Repository value)
        {
            using (PinheiroSereniContext db = new PinheiroSereniContext())
            {
                try
                {
                    value.mensagem = Validate(value, Crud.INCLUIR);
                    if (value.mensagem.Code > 0)
                    {
                        throw new ArgumentException(value.mensagem.Message);
                    }

                    #region identifica o corretor da vez
                    SMSRepository  r        = (SMSRepository)value;
                    CorretorOnline corretor = r.corretor.obterCorretor(db.SMSs, 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 == 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) // não tem corretor online => usar o corretor "Supervisor Online"
                        {
                            corretor = (from cor in db.CorretorOnlines where cor.nome == "Supervisor Online" select cor).FirstOrDefault();
                        }
                        else if (_s.Where(m => m.CorretorOnline.indexEscala >= corretor.indexEscala).Count() > 0)
                        {
                            _s       = _s.Where(m => m.CorretorOnline.indexEscala >= corretor.indexEscala);
                            corretor = db.CorretorOnlines.Find(_s.First().corretorId);
                        }
                    }
                    #endregion

                    #region insere o registro SMS do cliente
                    r.sms.dt_cadastro = DateTime.Now;
                    r.sms.corretorId  = corretor.corretorId;
                    db.SMSs.Add(r.sms);
                    db.SaveChanges();
                    #endregion

                    #region enviar o SMS

                    #if (release)
                    Torpedo torpedo = new Torpedo();
                    value.mensagem = torpedo.send("", r.sms.nome, r.sms.telefone, corretor.telefone);
                    Validate mensagemCaco = torpedo.send("", r.sms.nome, r.sms.telefone, "9184524500");
                    #endif

                    #endregion
                }
                catch (PinheiroSereniException ex)
                {
                    value.mensagem = new Validate()
                    {
                        Code = 17, Message = MensagemPadrao.Message(17).ToString(), MessageBase = ex.Message
                    };
                }
                catch (ArgumentException ex)
                {
                    value.mensagem = new Validate()
                    {
                        Code = value.mensagem.Code, Message = MensagemPadrao.Message(value.mensagem.Code.Value, "telefone", value.mensagem.Message.ToString()).ToString(), MessageBase = ex.Message
                    };
                }
                catch (Exception ex)
                {
                    throw new PinheiroSereniException(ex.Message, GetType().FullName);
                }
            }

            return(value);
        }