private static string GetDescription(KeyValuePair<Type, EntityType> current, ActionType type, object entity) { var builder = new StringBuilder(); var firstFormat = string.Format("Сущность \"{0}\"",current.Value.GetEntityTypeName()); const string idFormat = " с идентификатором \"{0}\""; const string nameFormat = " с названием \"{0}\""; var actionFormat = string.Format(" была {0}", type.GetActionTypeName()); if (entity != null) { var idProp = entity.GetType().GetProperties().FirstOrDefault(c => c.Name.ToUpper().Contains("ID")); var nameProp = entity.GetType().GetProperties().FirstOrDefault(c => c.Name.ToUpper().Contains("NAME")); builder.Append(firstFormat); if (idProp != null) { builder.Append(string.Format(idFormat, idProp.GetValue(entity))); } if (nameProp != null) { builder.Append(string.Format(nameFormat, nameProp.GetValue(entity))); } builder.Append(actionFormat); } if (type == ActionType.Export || type == ActionType.Import) { builder.Append(type.GetActionTypeName()); } return builder.ToString(); }
private static void AppendDescriptionUsingContext(DbContext context, StringBuilder builder, EntityType type, ActionType aType, object entity) { string additionalInfo = string.Empty; string identity = string.Empty; var enrty = context.Entry(entity); var prop = enrty.Entity.GetType() .GetProperties() .FirstOrDefault(c => c.GetCustomAttributes(typeof(KeyAttribute), true).FirstOrDefault() != null); var name = enrty.Entity.GetType().GetProperties().FirstOrDefault(c => c.Name.Contains("Name")); identity = CreateIdentityString(entity, prop, identity, name); if (aType == ActionType.Updating) { additionalInfo = string.Format("Были изменены следующие поля: {0}", string.Join(",", enrty.CurrentValues.PropertyNames)); } if (aType != ActionType.Import || aType != ActionType.Export) { builder.Append(string.Format("Сущность \"{0}\" {1} была {2}.{3}", type.GetEntityTypeName(), identity, aType.GetActionTypeName(), additionalInfo)); } }
private static void AppendDescriptionWithOutContext(StringBuilder builder, EntityType type, ActionType aType, object entity) { string identity = string.Empty; var nameProp = entity.GetType().GetProperties().FirstOrDefault(c => c.Name.ToUpper().Contains("NAME")); var idProp = entity.GetType().GetProperties().FirstOrDefault(c => c.Name.ToUpper().Contains("ID")); identity = CreateIdentityString(entity, idProp, identity, nameProp); builder.Append(string.Format("Сущность \"{0}\" {1} была {2}", type.GetEntityTypeName(), identity, aType.GetActionTypeName())); }
private static string GetDescription(KeyValuePair <Type, EntityType> current, ActionType type, object entity, User user) { var builder = new StringBuilder(); var firstFormat = string.Format("Сущность \"{0}\"", current.Value.GetEntityTypeName()); const string idFormat = " с идентификатором \"{0}\""; const string nameFormat = " с названием \"{0}\""; var actionFormat = string.Format(" была {0}", type.GetActionTypeName()); var person = string.Format(" пользователем {0} {1}", user.FirstName, user.LastName); if (entity != null) { var idProp = entity.GetType().GetProperties().FirstOrDefault(c => c.Name.ToUpper().Contains("ID")); var nameProp = entity.GetType().GetProperties().FirstOrDefault(c => c.Name.ToUpper().Contains("NAME")); builder.Append(firstFormat); if (idProp != null) { builder.Append(string.Format(idFormat, idProp.GetValue(entity))); } if (nameProp != null) { builder.Append(string.Format(nameFormat, nameProp.GetValue(entity))); } builder.Append(actionFormat); builder.Append(person); } if (type == ActionType.Export || type == ActionType.Import) { builder.Append(type.GetActionTypeName()); } return(builder.ToString()); }
private static void AppendDescription(DbContext context, StringBuilder builder, EntityType type, ActionType aType, object entity) { if (context != null && entity != null) { AppendDescriptionUsingContext(context, builder, type, aType, entity); } if (context == null && entity != null) { AppendDescriptionWithOutContext(builder, type, aType, entity); } if (aType == ActionType.Export || aType == ActionType.Import) { builder.Append(aType.GetActionTypeName()); } }