/// <summary> /// Configura e retorna a mensagem padrão do log de sistema para as ações de insert, update e delete. /// </summary> /// <typeparam name="T">Classe referente a entidade principal.</typeparam> /// <param name="acao">Tipo do log de sistema.</param> /// <param name="entity">Entidade principal do módulo.</param> /// <returns>Mensagem padronizada formatada conforme a ação(insert, update ou delete).</returns> public static string GetDescricaoDIU <T>(LOG_SistemaTipo acao, T entity) { Type t = typeof(T); string ids = String.Empty; PropertyInfo[] properties = t.GetProperties(BindingFlags.Public | BindingFlags.Instance); foreach (PropertyInfo p in properties) { DataObjectFieldAttribute[] attrs = (DataObjectFieldAttribute[])p.GetCustomAttributes(typeof(DataObjectFieldAttribute), true); foreach (DataObjectFieldAttribute a in attrs) { if (a.PrimaryKey) { if (!String.IsNullOrEmpty(ids)) { ids += String.Format("\"{0}\" : \"{1}\"", p.Name, p.GetValue(entity, null)); } else { ids += String.Format("\"{0}\" : \"{1}\"", p.Name, p.GetValue(entity, null)); } } } } ids = String.Concat("{", ids, "}"); return(GetDescricaoDIU(acao, t.Name, ids)); }
/// <summary> /// Configura e retorna a mensagem padrão do log de sistema para as ações de insert, update e delete. /// </summary> /// <param name="acao">Tipo do log de sistema.</param> /// <param name="entidade">Nome da entidade principal do módulo.</param> /// <param name="id">ids da entidade principal.</param> /// <returns>Mensagem padronizada formatada conforme a ação(insert, update ou delete).</returns> public static string GetDescricaoDIU(LOG_SistemaTipo acao, string entidade, string id) { switch (acao) { case LOG_SistemaTipo.Insert: return(String.Format(messageInsert, entidade, id)); case LOG_SistemaTipo.Update: return(String.Format(messageUpdate, entidade, id)); case LOG_SistemaTipo.Delete: return(String.Format(messageDelete, entidade, id)); default: throw new ArgumentOutOfRangeException("acao", "Somente são permitidos os tipos de ação Insert, Update e Delete."); } }
/// <summary> /// Grava log de sistema no banco de dados. /// </summary> /// <param name="acao">Ação executada pelo usuário</param> /// <param name="descricao">Descrição do log</param> /// <param name="usu_login">Login do usuário que tentou realizar a operação (utilizado para operações de login sem sucesso)</param> /// <returns>Informa se o log de sistema foi salvo com sucesso.</returns> public static Guid _GravaLogSistema(LOG_SistemaTipo acao, string descricao) { try { LOG_Sistema entity = new LOG_Sistema(); entity.log_acao = Enum.GetName(typeof(LOG_SistemaTipo), acao); entity.log_dataHora = DateTime.Now; entity.log_descricao = descricao; if (HttpContext.Current != null) { //Preenche dados do host do site LOG_SistemaBO.GenerateLogID(); entity.log_id = new Guid(HttpContext.Current.Session[LOG_Sistema.SessionName].ToString()); entity.log_ip = HttpContext.Current.Request.UserHostAddress; entity.log_machineName = HttpContext.Current.Server.MachineName; if (HttpContext.Current.Session != null) { SessionWEB session = (SessionWEB)HttpContext.Current.Session[SessSessionWEB]; if (session != null) { //Preenche dados referente ao usuário if (session.__UsuarioWEB != null && session.__UsuarioWEB.Usuario != null) { entity.usu_id = session.__UsuarioWEB.Usuario.usu_id; entity.usu_login = session.__UsuarioWEB.Usuario.usu_login; } //Preenche dados referente ao grupo do usuário if (session.__UsuarioWEB != null && session.__UsuarioWEB.Grupo != null) { //Preenche os dados do grupo entity.gru_id = session.__UsuarioWEB.Grupo.gru_id; entity.gru_nome = session.__UsuarioWEB.Grupo.gru_nome; //Preenche os dados do sistema SYS_Sistema sistema = new SYS_Sistema { sis_id = session.__UsuarioWEB.Grupo.sis_id }; SYS_SistemaBO.GetEntity(sistema); entity.sis_id = sistema.sis_id; entity.sis_nome = sistema.sis_nome; //Preenche os dados do módulo if (HttpContext.Current.Session[SYS_Modulo.SessionName] != null) { SYS_Modulo modulo = (SYS_Modulo)HttpContext.Current.Session[SYS_Modulo.SessionName]; entity.mod_id = modulo.mod_id; entity.mod_nome = modulo.mod_nome; } else { entity.mod_id = 0; entity.mod_nome = string.Empty; } //Preenche as entidades e unidades administrativa do grupo if (session.__UsuarioWEB.GrupoUA != null) { //Formata a entidade no padrão JSON JavaScriptSerializer oSerializer = new JavaScriptSerializer(); entity.log_grupoUA = oSerializer.Serialize(session.__UsuarioWEB.GrupoUA); } } } } } if (!LOG_SistemaBO.Save(entity)) { throw new Exception("Não foi possível salvar o log do sistema."); } if (HttpContext.Current != null) { HttpContext.Current.Session[LOG_Sistema.SessionName] = null; } return(entity.log_id); } catch (Exception) { throw; } }