public VisitanteAcessoViewModel Run(Repository value) { VisitanteAcessoViewModel a = (VisitanteAcessoViewModel)value; VisitanteAcessoViewModel r = new VisitanteAcessoViewModel(); try { EmpresaSecurity <SecurityContext> security = new EmpresaSecurity <SecurityContext>(); security.Create(this.seguranca_db); sessaoCorrente = security._getSessaoCorrente(seguranca_db, value.sessionId); SessaoLocal = DWMSessaoLocal.GetSessaoLocal(sessaoCorrente, this.db); DateTime _hoje = Funcoes.Brasilia().Date; #region Recupera o AcessoID if (a.AcessoID == 0) { a.AcessoID = (from vac in db.VisitanteAcessos where vac.VisitanteID == a.VisitanteID && System.Data.Entity.DbFunctions.TruncateTime(vac.DataInclusao) == _hoje select vac.AcessoID).Max(); } VisitanteAcessoModel AcessoModel = new VisitanteAcessoModel(this.db, this.seguranca_db); a = AcessoModel.getObject(a); #endregion #region Enviar E-mail de notificação int EmailTemplateID = int.Parse(db.Parametros.Find(sessaoCorrente.empresaId, (int)Enumeracoes.Enumeradores.Param.EMAIL_TEMPLATE_PORTARIA).Valor); string _Edificacao = " - Administração"; string _Nome = seguranca_db.Usuarios.Find(sessaoCorrente.usuarioId).nome; if (SessaoLocal.Unidades != null) { _Edificacao = " - " + db.Edificacaos.Find(a.EdificacaoID).Descricao + " " + a.UnidadeID.ToString(); _Nome = a.Visitante.NomeCondomino; } EmailLogViewModel EmailLogViewModel = new EmailLogViewModel() { UsuarioID = sessaoCorrente.usuarioId, uri = value.uri, empresaId = sessaoCorrente.empresaId, EmailTipoID = (int)Enumeracoes.Enumeradores.EmailTipo.PORTARIA, CondominioID = sessaoCorrente.empresaId, EdificacaoID = a.EdificacaoID ?? 0, UnidadeID = a.UnidadeID ?? 0, GrupoCondominoID = null, DataEmail = Funcoes.Brasilia(), Descricao_Edificacao = a.DescricaoEdificacao, Nome = _Nome, Assunto = db.EmailTipos.Find((int)Enumeracoes.Enumeradores.EmailTipo.PORTARIA, sessaoCorrente.empresaId).Assunto + " " + a.AcessoID.ToString(), EmailMensagem = db.EmailTemplates.Find(EmailTemplateID).EmailMensagem.Replace("@ID", a.AcessoID.ToString()).Replace("@NomeVisitante", a.Visitante.Nome).Replace("@data", a.DataAutorizacao.ToString("dd/MM/yyyy")), Repository = a }; EmailNotificacaoBI notificacaoBI = new EmailNotificacaoBI(this.db, this.seguranca_db); EmailLogViewModel = notificacaoBI.Run(EmailLogViewModel); if (EmailLogViewModel.mensagem.Code > 0) { throw new App_DominioException(EmailLogViewModel.mensagem); } EmailLogViewModel.Repository = a; IEnumerable <EmailLogViewModel> EmailLogPessoas = notificacaoBI.List(EmailLogViewModel); #endregion foreach (EmailLogViewModel log in EmailLogPessoas.Where(info => info.UsuarioID > 0)) { Alerta alerta = new Alerta() { usuarioId = log.UsuarioID.Value, sistemaId = sessaoCorrente.sistemaId, dt_emissao = Funcoes.Brasilia(), linkText = "Convite - " + a.Visitante.Nome, url = "../Portaria/Edit?AcessoID=" + a.AcessoID.ToString(), mensagem = "<b>" + Funcoes.Brasilia().ToString("dd/MM/yyyy HH:mm") + "h</b><p>Convite - " + a.Visitante.Nome + "</p>" }; seguranca_db.Alertas.Add(alerta); } r.mensagem = new Validate() { Code = 0 }; } catch (DbUpdateException ex) { r.mensagem.MessageBase = ex.InnerException.InnerException.Message ?? ex.Message; if (r.mensagem.MessageBase.ToUpper().Contains("REFERENCE")) { if (r.mensagem.MessageBase.ToUpper().Contains("DELETE")) { r.mensagem.Code = 16; r.mensagem.Message = MensagemPadrao.Message(16).ToString(); r.mensagem.MessageType = MsgType.ERROR; } else { r.mensagem.Code = 28; r.mensagem.Message = MensagemPadrao.Message(28).ToString(); r.mensagem.MessageType = MsgType.ERROR; } } else if (r.mensagem.MessageBase.ToUpper().Contains("PRIMARY")) { r.mensagem.Code = 37; r.mensagem.Message = MensagemPadrao.Message(37).ToString(); r.mensagem.MessageType = MsgType.WARNING; } else if (r.mensagem.MessageBase.ToUpper().Contains("UNIQUE KEY")) { r.mensagem.Code = 54; r.mensagem.Message = MensagemPadrao.Message(54).ToString(); r.mensagem.MessageType = MsgType.WARNING; } else { r.mensagem.Code = 44; r.mensagem.Message = MensagemPadrao.Message(44).ToString(); r.mensagem.MessageType = MsgType.ERROR; } } catch (System.Data.Entity.Validation.DbEntityValidationException ex) { r.mensagem = new Validate() { Code = 42, Message = MensagemPadrao.Message(42).ToString(), MessageBase = ex.EntityValidationErrors.Select(m => m.ValidationErrors.First().ErrorMessage).First() }; } catch (Exception ex) { r.mensagem.Code = 17; r.mensagem.Message = MensagemPadrao.Message(17).ToString(); r.mensagem.MessageBase = new App_DominioException(ex.InnerException.InnerException.Message ?? ex.Message, GetType().FullName).Message; r.mensagem.MessageType = MsgType.ERROR; } return(r); }
public InformativoViewModel Run(Repository value) { int EmailTipoID = (int)Enumeracoes.Enumeradores.EmailTipo.INFORMATIVO; InformativoViewModel r = (InformativoViewModel)value; InformativoViewModel result = new InformativoViewModel() { uri = r.uri, empresaId = SessaoLocal.empresaId, CondominioID = r.CondominioID, EdificacaoID = r.EdificacaoID, InformativoID = r.InformativoID, GrupoCondominoID = r.GrupoCondominoID, DataInformativo = Funcoes.Brasilia(), DataPublicacao = r.DataPublicacao, DataExpiracao = r.DataExpiracao, Cabecalho = r.Cabecalho, Resumo = r.Resumo, MensagemDetalhada = r.MensagemDetalhada, Midia1 = r.Midia1, Midia2 = r.Midia2, InformativoAnuncio = "N", mensagem = new Validate() { Code = 0, Message = "Registro processado com sucesso" } }; EmailLogViewModel EmailLogViewModel = null; if (!string.IsNullOrEmpty(r.EmailMensagem)) { EmailLogViewModel = new EmailLogViewModel() { uri = r.uri, empresaId = SessaoLocal.empresaId, EmailTipoID = EmailTipoID, // "Informativo" CondominioID = SessaoLocal.empresaId, EdificacaoID = r.EdificacaoID, GrupoCondominoID = r.GrupoCondominoID, DataEmail = Funcoes.Brasilia(), Assunto = db.EmailTipos.Find(EmailTipoID, SessaoLocal.empresaId).Assunto, EmailMensagem = r.EmailMensagem }; } try { #region Passo 1: Incluir o informativo InformativoModel InformativoModel = new InformativoModel(this.db, this.seguranca_db, value.sessionId); if (result.InformativoID == 0) { result = InformativoModel.Insert(result); } else { result = InformativoModel.Update(result); } if (result.mensagem.Code > 0) { throw new App_DominioException(result.mensagem); } #endregion #region Passo 2: Enviar o e-mail de notificação if (!string.IsNullOrEmpty(r.EmailMensagem)) { EmailNotificacaoBI notificacaoBI = new EmailNotificacaoBI(this.db, this.seguranca_db); EmailLogViewModel = notificacaoBI.Run(EmailLogViewModel); if (EmailLogViewModel.mensagem.Code > 0) { throw new App_DominioException(EmailLogViewModel.mensagem); } } #endregion db.SaveChanges(); seguranca_db.SaveChanges(); result.mensagem.Code = -1; } catch (ArgumentException ex) { result.mensagem = new Validate() { Code = 997, Message = MensagemPadrao.Message(997).ToString(), MessageBase = ex.Message }; } catch (App_DominioException ex) { result.mensagem = ex.Result; if (ex.InnerException != null) { result.mensagem.MessageBase = new App_DominioException(ex.InnerException.Message ?? ex.Message, GetType().FullName).Message; } else { result.mensagem.MessageBase = new App_DominioException(ex.Result.Message, GetType().FullName).Message; } } catch (DbUpdateException ex) { result.mensagem.MessageBase = ex.InnerException.InnerException.Message ?? ex.Message; if (result.mensagem.MessageBase.ToUpper().Contains("REFERENCE") || result.mensagem.MessageBase.ToUpper().Contains("FOREIGN")) { if (result.mensagem.MessageBase.ToUpper().Contains("DELETE")) { result.mensagem.Code = 16; result.mensagem.Message = MensagemPadrao.Message(16).ToString(); result.mensagem.MessageType = MsgType.ERROR; } else { result.mensagem.Code = 28; result.mensagem.Message = MensagemPadrao.Message(28).ToString(); result.mensagem.MessageType = MsgType.ERROR; } } else if (result.mensagem.MessageBase.ToUpper().Contains("PRIMARY")) { result.mensagem.Code = 37; result.mensagem.Message = MensagemPadrao.Message(37).ToString(); result.mensagem.MessageType = MsgType.WARNING; } else if (result.mensagem.MessageBase.ToUpper().Contains("UNIQUE KEY")) { result.mensagem.Code = 54; result.mensagem.Message = MensagemPadrao.Message(54).ToString(); result.mensagem.MessageType = MsgType.WARNING; } else { result.mensagem.Code = 44; result.mensagem.Message = MensagemPadrao.Message(44).ToString(); result.mensagem.MessageType = MsgType.ERROR; } } catch (System.Data.Entity.Validation.DbEntityValidationException ex) { result.mensagem = new Validate() { Code = 42, Message = MensagemPadrao.Message(42).ToString(), MessageBase = ex.EntityValidationErrors.Select(m => m.ValidationErrors.First().ErrorMessage).First() }; } catch (Exception ex) { result.mensagem.Code = 17; result.mensagem.Message = MensagemPadrao.Message(17).ToString(); result.mensagem.MessageBase = new App_DominioException(ex.InnerException.InnerException.Message ?? ex.Message, GetType().FullName).Message; result.mensagem.MessageType = MsgType.ERROR; } return(result); }
public CondominoUnidadeViewModel Run(Repository value) { CondominoUnidadeViewModel cu = (CondominoUnidadeViewModel)value; cu.mensagem = new Validate() { Code = 0, Message = "Registro incluído com sucesso" }; CondominoPFViewModel Cond = new CondominoPFViewModel() { CondominioID = cu.CondominioID, CondominoID = cu.CondominoID, }; CondominoPFModel model = new CondominoPFModel(this.db, this.seguranca_db); CondominoPFViewModel r = model.getObject(Cond); try { r.IndSituacao = "A"; r.uri = value.uri; r = model.Update(r); db.SaveChanges(); #region envio de e-mail ao condômino para notificação de ativação int EmailTemplateID = int.Parse(db.Parametros.Find(sessaoCorrente.empresaId, (int)Enumeracoes.Enumeradores.Param.EMAIL_TEMPLATE_ATIVACAO_CONDOMINO).Valor); EmailLogViewModel EmailLogViewModel = new EmailLogViewModel() { UsuarioID = sessaoCorrente.usuarioId, uri = value.uri, empresaId = sessaoCorrente.empresaId, EmailTipoID = (int)DWM.Models.Enumeracoes.Enumeradores.EmailTipo.ATIVACAO_CONDOMINO, CondominioID = sessaoCorrente.empresaId, EdificacaoID = cu.EdificacaoID, Descricao_Edificacao = db.Edificacaos.Find(cu.EdificacaoID).Descricao, UnidadeID = cu.UnidadeID, Email = r.Email, DataEmail = Funcoes.Brasilia(), Nome = r.Nome, Assunto = db.EmailTipos.Find((int)Enumeracoes.Enumeradores.EmailTipo.ATIVACAO_CONDOMINO, sessaoCorrente.empresaId).Assunto, EmailMensagem = db.EmailTemplates.Find(EmailTemplateID).EmailMensagem, Repository = r }; EmailNotificacaoBI notificacaoBI = new EmailNotificacaoBI(this.db, this.seguranca_db); EmailLogViewModel = notificacaoBI.Run(EmailLogViewModel); if (EmailLogViewModel.mensagem.Code > 0) { throw new App_DominioException(EmailLogViewModel.mensagem); } EmailLogViewModel.Repository = r; IEnumerable <EmailLogViewModel> EmailLogPessoas = notificacaoBI.List(EmailLogViewModel); foreach (EmailLogViewModel log in EmailLogPessoas) { Alerta alerta = new Alerta() { usuarioId = r.UsuarioID.Value, // log.UsuarioID.Value, sistemaId = sessaoCorrente.sistemaId, dt_emissao = Funcoes.Brasilia(), linkText = "Ativação - " + r.Nome.Split(' ')[0] + " " + r.Nome.Split(' ')[1], url = "../Condomino/Index?id=" + r.CondominoID.ToString() + "&EdificacaoID=" + cu.EdificacaoID.ToString() + "&UnidadeID=" + cu.UnidadeID.ToString() + "&TipoPessoa=PF", mensagem = "<b>" + Funcoes.Brasilia().ToString("dd/MM/yyyy HH:mm") + "h</b><p>Ativação - " + r.Nome.Split(' ')[0] + " " + r.Nome.Split(' ')[1] + "</p>" }; seguranca_db.Alertas.Add(alerta); } #endregion } catch (ArgumentException ex) { cu.mensagem = new Validate() { Code = 997, Message = MensagemPadrao.Message(997).ToString(), MessageBase = ex.Message }; } catch (App_DominioException ex) { cu.mensagem = ex.Result; if (ex.InnerException != null) { cu.mensagem.MessageBase = new App_DominioException(ex.InnerException.Message ?? ex.Message, GetType().FullName).Message; } else { cu.mensagem.MessageBase = new App_DominioException(ex.Result.Message, GetType().FullName).Message; } } catch (DbUpdateException ex) { cu.mensagem.MessageBase = ex.InnerException.InnerException.Message ?? ex.Message; if (cu.mensagem.MessageBase.ToUpper().Contains("REFERENCE") || cu.mensagem.MessageBase.ToUpper().Contains("FOREIGN")) { if (cu.mensagem.MessageBase.ToUpper().Contains("DELETE")) { cu.mensagem.Code = 16; cu.mensagem.Message = MensagemPadrao.Message(16).ToString(); cu.mensagem.MessageType = MsgType.ERROR; } else { cu.mensagem.Code = 28; cu.mensagem.Message = MensagemPadrao.Message(28).ToString(); cu.mensagem.MessageType = MsgType.ERROR; } } else if (cu.mensagem.MessageBase.ToUpper().Contains("PRIMARY")) { cu.mensagem.Code = 37; cu.mensagem.Message = MensagemPadrao.Message(37).ToString(); cu.mensagem.MessageType = MsgType.WARNING; } else if (cu.mensagem.MessageBase.ToUpper().Contains("UNIQUE KEY")) { cu.mensagem.Code = 54; cu.mensagem.Message = MensagemPadrao.Message(54).ToString(); cu.mensagem.MessageType = MsgType.WARNING; } else { cu.mensagem.Code = 44; cu.mensagem.Message = MensagemPadrao.Message(44).ToString(); cu.mensagem.MessageType = MsgType.ERROR; } } catch (System.Data.Entity.Validation.DbEntityValidationException ex) { cu.mensagem = new Validate() { Code = 42, Message = MensagemPadrao.Message(42).ToString(), MessageBase = ex.EntityValidationErrors.Select(m => m.ValidationErrors.First().ErrorMessage).First() }; } catch (Exception ex) { cu.mensagem.Code = 17; cu.mensagem.Message = MensagemPadrao.Message(17).ToString(); cu.mensagem.MessageBase = new App_DominioException(ex.InnerException.InnerException.Message ?? ex.Message, GetType().FullName).Message; cu.mensagem.MessageType = MsgType.ERROR; } return(cu); }
public AlertaRepository Run(Repository value) { ChamadoViewModel c = (ChamadoViewModel)value; AlertaRepository r = new AlertaRepository(); try { EmpresaSecurity <SecurityContext> security = new EmpresaSecurity <SecurityContext>(); security.Create(this.seguranca_db); sessaoCorrente = security._getSessaoCorrente(seguranca_db, value.sessionId); #region Recupera o número do chamado if (c.ChamadoID == 0) { c.ChamadoID = (from cham in db.Chamados where cham.CondominioID == sessaoCorrente.empresaId && cham.UsuarioID == sessaoCorrente.usuarioId select cham.ChamadoID).Max(); } else { ChamadoModel ChamadoModel = new ChamadoModel(); ChamadoModel.Create(this.db, this.seguranca_db); c = ChamadoModel.getObject(c); } #endregion #region Enviar E-mail de notificação int EmailTemplateID = int.Parse(db.Parametros.Find(sessaoCorrente.empresaId, (int)Enumeracoes.Enumeradores.Param.EMAIL_TEMPLATE_CHAMADO).Valor); string _Edificacao = c.EdificacaoID > 0 && c.FilaSolicitanteID == DWMSessaoLocal.FilaCondominoID(sessaoCorrente, db) ? " - " + db.Edificacaos.Find(c.EdificacaoID).Descricao + " " + c.UnidadeID.ToString() : ""; EmailLogViewModel EmailLogViewModel = new EmailLogViewModel() { uri = value.uri, empresaId = sessaoCorrente.empresaId, EmailTipoID = (int)Enumeracoes.Enumeradores.EmailTipo.CHAMADO, CondominioID = sessaoCorrente.empresaId, EdificacaoID = c.EdificacaoID, UnidadeID = c.UnidadeID, GrupoCondominoID = null, DataEmail = Funcoes.Brasilia(), Nome = c.NomeUsuario + _Edificacao, Assunto = db.EmailTipos.Find((int)Enumeracoes.Enumeradores.EmailTipo.CHAMADO, sessaoCorrente.empresaId).Assunto + " " + c.ChamadoID.ToString() + " - " + c.Assunto, EmailMensagem = db.EmailTemplates.Find(EmailTemplateID).EmailMensagem, Repository = c }; EmailNotificacaoBI notificacaoBI = new EmailNotificacaoBI(this.db, this.seguranca_db); EmailLogViewModel = notificacaoBI.Run(EmailLogViewModel); if (EmailLogViewModel.mensagem.Code > 0) { throw new App_DominioException(EmailLogViewModel.mensagem); } EmailLogViewModel.Repository = c; IEnumerable <EmailLogViewModel> EmailLogPessoas = notificacaoBI.List(EmailLogViewModel); #endregion foreach (EmailLogViewModel log in EmailLogPessoas) { Alerta alerta = new Alerta() { usuarioId = log.UsuarioID.Value, sistemaId = sessaoCorrente.sistemaId, dt_emissao = Funcoes.Brasilia(), linkText = c.Assunto, url = "../Chamado/Index?id=" + c.ChamadoID.ToString(), mensagem = "<b>" + Funcoes.Brasilia().ToString("dd/MM/yyyy HH:mm") + "h</b><p>" + c.Assunto + "</p>" }; seguranca_db.Alertas.Add(alerta); } r.mensagem = new Validate() { Code = 0 }; } catch (DbUpdateException ex) { r.mensagem.MessageBase = ex.InnerException.InnerException.Message ?? ex.Message; if (r.mensagem.MessageBase.ToUpper().Contains("REFERENCE")) { if (r.mensagem.MessageBase.ToUpper().Contains("DELETE")) { r.mensagem.Code = 16; r.mensagem.Message = MensagemPadrao.Message(16).ToString(); r.mensagem.MessageType = MsgType.ERROR; } else { r.mensagem.Code = 28; r.mensagem.Message = MensagemPadrao.Message(28).ToString(); r.mensagem.MessageType = MsgType.ERROR; } } else if (r.mensagem.MessageBase.ToUpper().Contains("PRIMARY")) { r.mensagem.Code = 37; r.mensagem.Message = MensagemPadrao.Message(37).ToString(); r.mensagem.MessageType = MsgType.WARNING; } else if (r.mensagem.MessageBase.ToUpper().Contains("UNIQUE KEY")) { r.mensagem.Code = 54; r.mensagem.Message = MensagemPadrao.Message(54).ToString(); r.mensagem.MessageType = MsgType.WARNING; } else { r.mensagem.Code = 44; r.mensagem.Message = MensagemPadrao.Message(44).ToString(); r.mensagem.MessageType = MsgType.ERROR; } } catch (System.Data.Entity.Validation.DbEntityValidationException ex) { r.mensagem = new Validate() { Code = 42, Message = MensagemPadrao.Message(42).ToString(), MessageBase = ex.EntityValidationErrors.Select(m => m.ValidationErrors.First().ErrorMessage).First() }; } catch (Exception ex) { r.mensagem.Code = 17; r.mensagem.Message = MensagemPadrao.Message(17).ToString(); r.mensagem.MessageBase = new App_DominioException(ex.InnerException.InnerException.Message ?? ex.Message, GetType().FullName).Message; r.mensagem.MessageType = MsgType.ERROR; } return(r); }
public UsuarioViewModel Run(Repository value) { UsuarioViewModel r = (UsuarioViewModel)value; UsuarioViewModel result = new UsuarioViewModel() { uri = r.uri, empresaId = r.empresaId, login = r.login, mensagem = new Validate() { Code = 0, Message = "Registro processado com sucesso" } }; try { #region Validar LOGIN Usuario u = seguranca_db.Usuarios.Where(info => info.login == r.login && info.empresaId == r.empresaId).FirstOrDefault(); if (u == null) { result.mensagem = new Validate() { Code = 999, Message = "Login inválido ou inexistente." }; throw new App_DominioException(result.mensagem); } else if (u.situacao != "A") { result.mensagem = new Validate() { Code = 998, Message = "Este login possui pendências administrativas. Favor entrar em contato com a secretaria para providenciar a atualização." }; throw new App_DominioException(result.mensagem); } ; #endregion #region Atualizar o cadastro do usuário com a keyword Random random = new Random(); u.keyword = random.Next(9999, 99999999).ToString(); u.dt_keyword = Funcoes.Brasilia().AddDays(1); seguranca_db.Entry(u).State = EntityState.Modified; seguranca_db.SaveChanges(); #endregion #region Enviar e-mail int _sistemaId = int.Parse(db.Parametros.Find(r.empresaId, (int)Enumeracoes.Enumeradores.Param.SISTEMA).Valor); string _URL_CONDOMINIO = db.Parametros.Find(r.empresaId, (int)Enumeracoes.Enumeradores.Param.URL_CONDOMINIO).Valor; int EmailTipoID = (int)Enumeracoes.Enumeradores.EmailTipo.FORGOT; string EmailMensagem = db.EmailTemplates.Where(info => info.CondominioID == r.empresaId && info.EmailTipoID == EmailTipoID).FirstOrDefault().EmailMensagem; EmailMensagem = EmailMensagem.Replace("@link_esqueci_minha_senha", "<p><a href=\"" + _URL_CONDOMINIO + "/Account/EsqueciMinhaSenha?id=" + u.usuarioId.ToString() + "&key=" + u.keyword + "\" target=\"_blank\"><span style=\"font-family: Verdana; font-size: small; color: #0094ff\">recuperar senha</span></a></p>"); EmailMensagem = EmailMensagem.Replace("@nome", u.nome).Replace("@email", u.login); #region Verifica se o usuário é um condômino CondominoUnidade cu = null; int? _EdificacaoID = null; string _Descricao_Unidade = null; int? _UnidadeID = null; CondominoPF CondominoPF = db.CondominoPFs.Where(info => info.UsuarioID == u.usuarioId && info.CondominioID == u.empresaId && info.IndSituacao == "A").FirstOrDefault(); if (CondominoPF != null) { cu = (from cou in db.CondominoUnidades where cou.CondominoID == CondominoPF.CondominoID select cou).FirstOrDefault(); _EdificacaoID = cu.EdificacaoID; _Descricao_Unidade = db.Edificacaos.Find(cu.EdificacaoID).Descricao; _UnidadeID = cu.UnidadeID; } #endregion #region Envia o e-mail de renovação de senha EmailLogViewModel EmailLogViewModel = new EmailLogViewModel() { uri = r.uri, empresaId = u.empresaId, EmailTipoID = EmailTipoID, // "Esqueci minha senha" CondominioID = u.empresaId, EdificacaoID = _EdificacaoID, Descricao_Edificacao = _Descricao_Unidade, UnidadeID = _UnidadeID, GrupoCondominoID = null, Descricao_GrupoCondomino = "", DataEmail = Funcoes.Brasilia(), Assunto = db.EmailTipos.Find(EmailTipoID, u.empresaId).Assunto, EmailMensagem = EmailMensagem, Nome = u.nome, Email = u.login }; EmailNotificacaoBI notificacaoBI = new EmailNotificacaoBI(this.db, this.seguranca_db, true); EmailLogViewModel = notificacaoBI.Run(EmailLogViewModel); if (EmailLogViewModel.mensagem.Code > 0) { throw new App_DominioException(EmailLogViewModel.mensagem); } db.SaveChanges(); #endregion #endregion result.mensagem.Code = -1; // Tem que devolver -1 porque na Superclasse, se devolver zero, vai executar novamente o SaveChanges. } catch (ArgumentException ex) { result.mensagem = new Validate() { Code = 997, Message = MensagemPadrao.Message(997).ToString(), MessageBase = ex.Message }; } catch (App_DominioException ex) { result.mensagem = ex.Result; if (ex.InnerException != null) { result.mensagem.MessageBase = new App_DominioException(ex.InnerException.Message ?? ex.Message, GetType().FullName).Message; } else { result.mensagem.MessageBase = new App_DominioException(ex.Result.Message, GetType().FullName).Message; } } catch (DbUpdateException ex) { result.mensagem.MessageBase = ex.InnerException.InnerException.Message ?? ex.Message; if (result.mensagem.MessageBase.ToUpper().Contains("REFERENCE")) { if (result.mensagem.MessageBase.ToUpper().Contains("DELETE")) { result.mensagem.Code = 16; result.mensagem.Message = MensagemPadrao.Message(16).ToString(); result.mensagem.MessageType = MsgType.ERROR; } else { result.mensagem.Code = 28; result.mensagem.Message = MensagemPadrao.Message(28).ToString(); result.mensagem.MessageType = MsgType.ERROR; } } else if (result.mensagem.MessageBase.ToUpper().Contains("PRIMARY")) { result.mensagem.Code = 37; result.mensagem.Message = MensagemPadrao.Message(37).ToString(); result.mensagem.MessageType = MsgType.WARNING; } else if (result.mensagem.MessageBase.ToUpper().Contains("UNIQUE KEY")) { result.mensagem.Code = 54; result.mensagem.Message = MensagemPadrao.Message(54).ToString(); result.mensagem.MessageType = MsgType.WARNING; } else { result.mensagem.Code = 44; result.mensagem.Message = MensagemPadrao.Message(44).ToString(); result.mensagem.MessageType = MsgType.ERROR; } } catch (System.Data.Entity.Validation.DbEntityValidationException ex) { result.mensagem = new Validate() { Code = 42, Message = MensagemPadrao.Message(42).ToString(), MessageBase = ex.EntityValidationErrors.Select(m => m.ValidationErrors.First().ErrorMessage).First() }; } catch (Exception ex) { result.mensagem.Code = 17; result.mensagem.Message = MensagemPadrao.Message(17).ToString(); result.mensagem.MessageBase = new App_DominioException(ex.InnerException.InnerException.Message ?? ex.Message, GetType().FullName).Message; result.mensagem.MessageType = MsgType.ERROR; } return(result); }
public CredenciadoViewModel Run(Repository value) { bool EnviaEmail = false; CredenciadoViewModel r = (CredenciadoViewModel)value; CredenciadoViewModel result = new CredenciadoViewModel() { uri = r.uri, empresaId = sessaoCorrente.empresaId, CredenciadoID = r.CredenciadoID, CondominoID = r.CondominoID, Nome = r.Nome, Email = r.Email, TipoCredenciadoID = r.TipoCredenciadoID, Sexo = r.Sexo, Observacao = r.Observacao, UsuarioID = r.UsuarioID, IndVisitantePermanente = r.IndVisitantePermanente, mensagem = new Validate() { Code = 0, Message = "Registro processado com sucesso" } }; try { int _empresaId = SessaoLocal.empresaId; string _keyword = null; CredenciadoModel CredenciadoModel = new CredenciadoModel(this.db, this.seguranca_db); if (r.CredenciadoID == 0) // Incluir credenciado { #region Validar Credenciado if (CredenciadoModel.Validate(result, Crud.INCLUIR).Code > 0) { throw new App_DominioException(result.mensagem); } #endregion #region Cadastrar o credenciado como um usuário em DWM-Segurança if (!string.IsNullOrEmpty(result.Email)) { Random random = new Random(); string _senha = random.Next(9999, 999999).ToString(); _keyword = random.Next(9999, 99999999).ToString(); int _grupoId = int.Parse(db.Parametros.Find(_empresaId, (int)Enumeracoes.Enumeradores.Param.GRUPO_CREDENCIADO).Valor); #region Usuario EmpresaSecurity <SecurityContext> security = new EmpresaSecurity <SecurityContext>(); Usuario user = new Usuario() { nome = r.Nome.ToUpper(), login = r.Email, empresaId = _empresaId, dt_cadastro = Funcoes.Brasilia(), situacao = "D", isAdmin = "N", senha = security.Criptografar(_senha), keyword = _keyword, dt_keyword = Funcoes.Brasilia().AddDays(1) }; // Verifica se o E-mail do usuário já não existe para a empresa if (seguranca_db.Usuarios.Where(info => info.empresaId == _empresaId && info.login == r.Email).Count() > 0) { throw new ArgumentException("E-mail já cadastrado"); } seguranca_db.Usuarios.Add(user); #endregion #region UsuarioGrupo UsuarioGrupo ug = new UsuarioGrupo() { Usuario = user, grupoId = _grupoId, situacao = "A" }; seguranca_db.UsuarioGrupos.Add(ug); #endregion seguranca_db.SaveChanges(); result.UsuarioID = user.usuarioId; EnviaEmail = true; } #endregion #region Incluir o credenciado result = CredenciadoModel.Insert(result); result.mensagem.Field = _keyword; #endregion } else if (Operacao == "S") // Alterar credenciado { #region Validar Credenciado if (CredenciadoModel.Validate(result, Crud.ALTERAR).Code > 0) { throw new App_DominioException(result.mensagem); } #endregion #region Atualiza o cadastro do usuário if (result.UsuarioID.HasValue && result.UsuarioID > 0 && !string.IsNullOrEmpty(result.Email)) // antes existia UsuarioID e tem E-mail { Usuario user = seguranca_db.Usuarios.Find(result.UsuarioID.Value); if (user != null) { user.login = result.Email; user.nome = result.Nome.ToUpper(); user.dt_cadastro = Funcoes.Brasilia(); seguranca_db.Entry(user).State = EntityState.Modified; seguranca_db.SaveChanges(); } } else if ((!result.UsuarioID.HasValue || result.UsuarioID.Value == 0) && !string.IsNullOrEmpty(result.Email)) // antes não existia UsuarioID e na altração passou a existir (e-mail) { Random random = new Random(); string _senha = random.Next(9999, 999999).ToString(); _keyword = random.Next(9999, 99999999).ToString(); int _grupoId = int.Parse(db.Parametros.Find(_empresaId, (int)Enumeracoes.Enumeradores.Param.GRUPO_CREDENCIADO).Valor); #region Usuario EmpresaSecurity <SecurityContext> security = new EmpresaSecurity <SecurityContext>(); Usuario user = new Usuario() { nome = r.Nome.ToUpper(), login = r.Email, empresaId = _empresaId, dt_cadastro = Funcoes.Brasilia(), situacao = "D", isAdmin = "N", senha = security.Criptografar(_senha), keyword = _keyword, dt_keyword = Funcoes.Brasilia().AddDays(1) }; // Verifica se o E-mail do usuário já não existe para a empresa if (seguranca_db.Usuarios.Where(info => info.empresaId == _empresaId && info.login == r.Email).Count() > 0) { throw new ArgumentException("E-mail já cadastrado"); } seguranca_db.Usuarios.Add(user); #endregion #region UsuarioGrupo UsuarioGrupo ug = new UsuarioGrupo() { Usuario = user, grupoId = _grupoId, situacao = "A" }; seguranca_db.UsuarioGrupos.Add(ug); #endregion seguranca_db.SaveChanges(); result.UsuarioID = user.usuarioId; EnviaEmail = true; } else if (result.UsuarioID.HasValue && result.UsuarioID > 0 && string.IsNullOrEmpty(result.Email)) // antes existia usuário e agora não existe mais => Exclui o usuário em dwm-segurança { #region Exclui o cadastro do usuário int _grupoId = int.Parse(db.Parametros.Find(_empresaId, (int)Enumeracoes.Enumeradores.Param.GRUPO_CREDENCIADO).Valor); // Exclui o usuário do Grupo UsuarioGrupo ug = seguranca_db.UsuarioGrupos.Find(result.UsuarioID, _grupoId); seguranca_db.Set <UsuarioGrupo>().Remove(ug); // Exclui o usuário da tabela Sessao seguranca_db.Database.ExecuteSqlCommand("delete from Sessao where usuarioId = " + result.UsuarioID.ToString() + " and empresaId = " + sessaoCorrente.empresaId.ToString()); // Exclui o usuário Usuario user = seguranca_db.Usuarios.Find(result.UsuarioID); seguranca_db.Set <Usuario>().Remove(user); seguranca_db.SaveChanges(); #endregion result.UsuarioID = null; } #endregion #region Alterar credenciado result = CredenciadoModel.Update(result); #endregion } else // Excluir credenciado { #region Validar Credenciado if (CredenciadoModel.Validate(result, Crud.EXCLUIR).Code > 0) { throw new App_DominioException(result.mensagem); } #endregion #region Exclui o cadastro do usuário if (result.UsuarioID.HasValue && result.UsuarioID.Value > 0) { int _grupoId = int.Parse(db.Parametros.Find(_empresaId, (int)Enumeracoes.Enumeradores.Param.GRUPO_CREDENCIADO).Valor); // Exclui o usuário do Grupo UsuarioGrupo ug = seguranca_db.UsuarioGrupos.Find(result.UsuarioID, _grupoId); seguranca_db.Set <UsuarioGrupo>().Remove(ug); // Exclui o usuário da tabela Sessao seguranca_db.Database.ExecuteSqlCommand("delete from Sessao where usuarioId = " + result.UsuarioID.ToString() + " and empresaId = " + sessaoCorrente.empresaId.ToString()); // Exclui o usuário Usuario user = seguranca_db.Usuarios.Find(result.UsuarioID); seguranca_db.Set <Usuario>().Remove(user); seguranca_db.SaveChanges(); } #endregion #region Alterar credenciado result = CredenciadoModel.Delete(result); #endregion } if (result.mensagem.Code > 0) { throw new App_DominioException(result.mensagem); } db.SaveChanges(); if (EnviaEmail) { int _sistemaId = int.Parse(db.Parametros.Find(SessaoLocal.empresaId, (int)Enumeracoes.Enumeradores.Param.SISTEMA).Valor); string _URL_CONDOMINIO = db.Parametros.Find(SessaoLocal.empresaId, (int)Enumeracoes.Enumeradores.Param.URL_CONDOMINIO).Valor; #region envio de e-mail ao credenciado para ativação int EmailTipoID = (int)DWM.Models.Enumeracoes.Enumeradores.EmailTipo.CADASTRO_CREDENCIADO; string EmailMensagem = db.EmailTemplates.Where(info => info.CondominioID == SessaoLocal.empresaId && info.EmailTipoID == EmailTipoID).FirstOrDefault().EmailMensagem; EmailMensagem = EmailMensagem.Replace("@link_credenciado", "<p><a href=\"" + _URL_CONDOMINIO + "/Account/AtivarCredenciado?id=" + result.UsuarioID.ToString() + "&key=" + _keyword + "\" target=\"_blank\"><span style=\"font-family: Verdana; font-size: small; color: #0094ff\">Acesso ao " + seguranca_db.Sistemas.Find(_sistemaId).descricao + "</span></a></p>"); CondominoUnidade cu = (from cou in db.CondominoUnidades where cou.CondominioID == SessaoLocal.empresaId && cou.CondominoID == r.CondominoID select cou).FirstOrDefault(); EmailLogViewModel EmailLogViewModel = new EmailLogViewModel() { uri = r.uri, empresaId = SessaoLocal.empresaId, EmailTipoID = EmailTipoID, // "Cadastro Credenciado" CondominioID = SessaoLocal.empresaId, EdificacaoID = cu.EdificacaoID, Descricao_Edificacao = db.Edificacaos.Find(cu.EdificacaoID).Descricao, UnidadeID = cu.UnidadeID, GrupoCondominoID = null, Descricao_GrupoCondomino = "", DataEmail = Funcoes.Brasilia(), Assunto = db.EmailTipos.Find(EmailTipoID, SessaoLocal.empresaId).Assunto, EmailMensagem = EmailMensagem, Nome = r.Nome, Email = r.Email }; EmailNotificacaoBI notificacaoBI = new EmailNotificacaoBI(this.db, this.seguranca_db); EmailLogViewModel = notificacaoBI.Run(EmailLogViewModel); if (EmailLogViewModel.mensagem.Code > 0) { throw new App_DominioException(EmailLogViewModel.mensagem); } //result.CredenciadoViewModel.mensagem.Field = factory.Mensagem.Field; // senha do credenciado //EnviarEmailCredenciadoBI EnviarEmailCredenciadoBI = new EnviarEmailCredenciadoBI(this.db, this.seguranca_db); //CredenciadoViewModel repository = EnviarEmailCredenciadoBI.Run(result); //if (repository.mensagem.Code > 0) // throw new ArgumentException(repository.mensagem.MessageBase); #endregion } else { result.mensagem.Code = -1; // Tem que devolver -1 porque na Superclasse, se devolver zero, vai executar novamente o SaveChanges. } } catch (ArgumentException ex) { result.mensagem = new Validate() { Code = 997, Message = MensagemPadrao.Message(997).ToString(), MessageBase = ex.Message }; } catch (App_DominioException ex) { result.mensagem = ex.Result; if (ex.InnerException != null) { result.mensagem.MessageBase = new App_DominioException(ex.InnerException.Message ?? ex.Message, GetType().FullName).Message; } else { result.mensagem.MessageBase = new App_DominioException(ex.Result.Message, GetType().FullName).Message; } } catch (DbUpdateException ex) { result.mensagem.MessageBase = ex.InnerException.InnerException.Message ?? ex.Message; if (result.mensagem.MessageBase.ToUpper().Contains("REFERENCE")) { if (result.mensagem.MessageBase.ToUpper().Contains("DELETE")) { result.mensagem.Code = 16; result.mensagem.Message = MensagemPadrao.Message(16).ToString(); result.mensagem.MessageType = MsgType.ERROR; } else { result.mensagem.Code = 28; result.mensagem.Message = MensagemPadrao.Message(28).ToString(); result.mensagem.MessageType = MsgType.ERROR; } } else if (result.mensagem.MessageBase.ToUpper().Contains("PRIMARY")) { result.mensagem.Code = 37; result.mensagem.Message = MensagemPadrao.Message(37).ToString(); result.mensagem.MessageType = MsgType.WARNING; } else if (result.mensagem.MessageBase.ToUpper().Contains("UNIQUE KEY")) { result.mensagem.Code = 54; result.mensagem.Message = MensagemPadrao.Message(54).ToString(); result.mensagem.MessageType = MsgType.WARNING; } else { result.mensagem.Code = 44; result.mensagem.Message = MensagemPadrao.Message(44).ToString(); result.mensagem.MessageType = MsgType.ERROR; } } catch (System.Data.Entity.Validation.DbEntityValidationException ex) { result.mensagem = new Validate() { Code = 42, Message = MensagemPadrao.Message(42).ToString(), MessageBase = ex.EntityValidationErrors.Select(m => m.ValidationErrors.First().ErrorMessage).First() }; } catch (Exception ex) { result.mensagem.Code = 17; result.mensagem.Message = MensagemPadrao.Message(17).ToString(); result.mensagem.MessageBase = new App_DominioException(ex.InnerException.InnerException.Message ?? ex.Message, GetType().FullName).Message; result.mensagem.MessageType = MsgType.ERROR; } return(result); }