public CorretorOnline obterCorretor(System.Data.Entity.DbSet <TEntity> value, DbSet <CorretorOnline> listCorretores) { if (value.Cast <PinheiroSereni.Dominio.Entidades.Chat>().Count() > 0) { CorretorOnline ultimoCorretor = listCorretores.Find(value.Cast <PinheiroSereni.Dominio.Entidades.Chat>().OrderByDescending(m => m.chatId).First().corretorId); CorretorOnline proxCorretor = listCorretores.Where(m => m.indexEscala > ultimoCorretor.indexEscala && m.situacao == "A").OrderBy(j => j.indexEscala).FirstOrDefault() ?? listCorretores.Where(m => m.situacao == "A").OrderBy(m => m.indexEscala).FirstOrDefault(); return(proxCorretor); } else { return(listCorretores.Where(m => m.situacao == "A").OrderBy(m => m.indexEscala).FirstOrDefault()); } }
private Repository Create(string sessionId) { Sessao s1 = db.Sessaos.Find(sessionId); CorretorOnline c1 = db.CorretorOnlines.Find(s1.corretorId); SessaoRepository sessaoRepository = new SessaoRepository() { sessionId = sessionId, sessao = s1, corretorOnline = c1, mensagem = new Validate() }; return(sessaoRepository); }
public Repository 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); }
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); } }
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> </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); }
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); }