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) { CredenciadoViewModel rec = (CredenciadoViewModel)value; string habilitaEmail = db.Parametros.Find(sessaoCorrente.empresaId, (int)Enumeracoes.Enumeradores.Param.HABILITA_EMAIL).Valor; if (habilitaEmail == "S") { int _empresaId = sessaoCorrente.empresaId; int _sistemaId = int.Parse(db.Parametros.Find(_empresaId, (int)Enumeracoes.Enumeradores.Param.SISTEMA).Valor); Sistema sistema = seguranca_db.Sistemas.Find(_sistemaId); Condominio condominio = db.Condominios.Find(sessaoCorrente.empresaId); CondominoUnidade CondominoUnidade = db.CondominoUnidades.Where(info => info.CondominoID == rec.CondominoID && !info.DataFim.HasValue).FirstOrDefault(); Edificacao Edificacao = db.Edificacaos.Find(CondominoUnidade.EdificacaoID); Credenciado Credenciado = db.Credenciados.Where(info => info.Email == rec.Email).FirstOrDefault(); Unidade Unidade = db.Unidades.Find(_empresaId, CondominoUnidade.EdificacaoID, CondominoUnidade.UnidadeID); string DescricaoTipoEdificacao = DWMSessaoLocal._GetTipoEdificacao(_empresaId, this.db).Descricao; rec.empresaId = _empresaId; SendEmail sendMail = new SendEmail(); MailAddress sender = new MailAddress(condominio.RazaoSocial + " <" + condominio.Email + ">"); List <string> recipients = new List <string>(); recipients.Add(rec.Nome + "<" + rec.Email + ">"); string Subject = "Confirmação de cadastro no " + condominio.RazaoSocial; string Text = "<p>Confirmação de cadastro</p>"; string Html = "<p><span style=\"font-family: Verdana; font-size: larger; color: #656464\">" + sistema.descricao + "</span></p>" + "<p><span style=\"font-family: Verdana; font-size: xx-large; color: #0094ff\">" + rec.Nome.ToUpper() + "</span></p>" + "<p></p>" + "<p><span style=\"font-family: Verdana; font-size: small; color: #000\">" + DescricaoTipoEdificacao + ": <b>" + Edificacao.Descricao + "</b></span></p>" + "<p></p>" + "<p><span style=\"font-family: Verdana; font-size: small; color: #000\">Unidade: <b>" + Unidade.Codigo + "</b></span></p>" + "<p></p>" + "<p><span style=\"font-family: Verdana; font-size: small; color: #000\">Essa é uma mensagem de confirmação de seu cadastro de credenciado. Seu registro no Sistema Administrativo do " + condominio.RazaoSocial + " foi realizado com sucesso.</span></p>" + "<p></p>"; Html += "<p></p>" + "<p><span style=\"font-family: Verdana; font-size: small; color: #000\">Seu Login de acesso é: </span></p>" + "<p></p>" + "<p><span style=\"font-family: Verdana; font-size: xx-large; color: #0094ff\">" + rec.Email + "</span></p>" + "<p></p>" + "<p><span style=\"font-family: Verdana; font-size: small; color: #000\">Clique no link abaixo para ativar o seu cadastro e acessar o sistema:</span></p>" + "<p><a href=\"http://www.parcparadiso.com.br/Account/AtivarCredenciado?id=" + Credenciado.UsuarioID.ToString() + "&key=" + rec.mensagem.Field + "\" target=\"_blank\"><span style=\"font-family: Verdana; font-size: small; color: #0094ff\">Acesso ao " + sistema.descricao + "</span></a></p>" + "<p></p>" + "<p><span style=\"font-family: Verdana; font-size: small; color: #000\">Observação: este link estará disponível para ativação por 24 h</span></p>" + "<hr />"; Html += "<p></p>" + "<p></p>" + "<p><span style=\"font-family: Verdana; font-size: small; color: #000\">Através do sistema o credenciado poderá:</span></p>" + "<p></p>" + "<p><span style=\"font-family: Verdana; font-size: small; color: #000\">- Consultar os documentos e comunicados oficiais do condomínio postados pelo síndico.</span></p>" + "<p><span style=\"font-family: Verdana; font-size: small; color: #000\">- Consultar os comunicados específicos destinados a sua torre.</span></p>" + "<p><span style=\"font-family: Verdana; font-size: small; color: #000\">- Abrir chamados à administração como por exemplo fazer o registro de uma ocorrência ou uma solicitação.</ span></p>" + "<p><span style=\"font-family: Verdana; font-size: small; color: #000\">- Receber mensagens e alertas personalizados.</ span></p>" + "<p><span style=\"font-family: Verdana; font-size: small; color: #000\">- Consultar o histórico de notificações.</ span></p>" + "<hr />" + "<p></p>" + "<p><span style=\"font-family: Verdana; font-size: small; color: #000\">Além desses recursos, estaremos implementando outras novidades. Aguarde !</span></p>" + "<p> </p>" + "<p> </p>" + "<p><span style=\"font-family: Verdana; font-size: small; color: #000\">Obrigado,</span></p>" + "<p><span style=\"font-family: Verdana; font-size: small; color: #000\">Administração " + condominio.RazaoSocial + "</span></p>"; Validate result = sendMail.Send(sender, recipients, Html, Subject, Text); if (result.Code > 0) { result.MessageBase = "Seu cadastro foi realizado com sucesso, mas por falhas de comunicação não foi possível enviar seu e-mail de confirmação. Favor entrar em contato com [email protected] e solicite seu e-mail de ativação."; throw new App_DominioException(result); } } rec.mensagem = new Validate() { Code = 0, Message = MensagemPadrao.Message(0).ToString(), MessageType = MsgType.SUCCESS }; return(rec); }
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); }