|
|
@@ -65,17 +65,18 @@ namespace GreenTree.Nachtragsmanagement.Services.Logging
|
|
|
|
|
|
var header = String.Empty;
|
|
|
var body = String.Empty;
|
|
|
+ var entityType = GetTypeNameFromEfEntityType(entity);
|
|
|
|
|
|
switch (activity)
|
|
|
{
|
|
|
case LogEntityActivity.Insert:
|
|
|
- header = String.Format("Entität \"{0}\" wurde hinzugefügt", entity.GetType().Name);
|
|
|
+ header = String.Format("Entität \"{0}\" wurde hinzugefügt", entityType);
|
|
|
break;
|
|
|
case LogEntityActivity.Update:
|
|
|
- header = String.Format("Entität \"{0}\" mit der ID \"{1}\" wurde geändert", entity.GetType().Name, entity.Id);
|
|
|
+ header = String.Format("Entität \"{0}\" mit der ID \"{1}\" wurde geändert", entityType, entity.Id);
|
|
|
break;
|
|
|
case LogEntityActivity.Delete:
|
|
|
- header = String.Format("Entität \"{0}\" mit der ID \"{1}\" wurde gelöscht", entity.GetType().Name, entity.Id);
|
|
|
+ header = String.Format("Entität \"{0}\" mit der ID \"{1}\" wurde gelöscht", entityType, entity.Id);
|
|
|
break;
|
|
|
}
|
|
|
|
|
|
@@ -83,7 +84,7 @@ namespace GreenTree.Nachtragsmanagement.Services.Logging
|
|
|
logger.InsertLog(LogLevel.Information, header, entity, String.Empty, user);
|
|
|
else
|
|
|
{
|
|
|
- var properties = entity.GetType().GetProperties(System.Reflection.BindingFlags.GetProperty);
|
|
|
+ var properties = entity.GetType().GetProperties();
|
|
|
|
|
|
foreach (var property in properties)
|
|
|
{
|
|
|
@@ -92,8 +93,19 @@ namespace GreenTree.Nachtragsmanagement.Services.Logging
|
|
|
if (typeof(IEnumerable).IsAssignableFrom(property.PropertyType) && property.PropertyType != typeof(string))
|
|
|
{
|
|
|
var collection = property.GetValue(entity, null) as IEnumerable;
|
|
|
+ var collectionType = collection.GetType().GetGenericArguments()[0];
|
|
|
|
|
|
- body += String.Format("\t{0} = {1}\n", property.Name, String.Join(", ", collection));
|
|
|
+ if (typeof(BaseEntity).IsAssignableFrom(collectionType))
|
|
|
+ {
|
|
|
+ var collectionValues = new List<object>();
|
|
|
+
|
|
|
+ foreach (var value in collection)
|
|
|
+ collectionValues.Add(value.GetType().GetProperty("Id").GetValue(value));
|
|
|
+
|
|
|
+ body += String.Format("\t{0} = {1}\n", property.Name, String.Join(", ", collectionValues));
|
|
|
+ }
|
|
|
+ else
|
|
|
+ body += String.Format("\t{0} = {1}\n", property.Name, String.Join(", ", collection));
|
|
|
}
|
|
|
else
|
|
|
body += String.Format("\t{0} = {1}\n", property.Name, property.GetValue(entity));
|
|
|
@@ -101,8 +113,22 @@ namespace GreenTree.Nachtragsmanagement.Services.Logging
|
|
|
|
|
|
var fullMessage = String.Format("{0}:\n{1}", header, body);
|
|
|
|
|
|
- logger.InsertLog(LogLevel.Information, header, entity, String.Empty, user);
|
|
|
+ logger.InsertLog(LogLevel.Information, header, entity, fullMessage, user);
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ public static string GetTypeNameFromEfEntityType(BaseEntity entity)
|
|
|
+ {
|
|
|
+ if (entity == null) return null;
|
|
|
+
|
|
|
+ var type = entity.GetType();
|
|
|
+
|
|
|
+ if (type.Namespace == "System.Data.Entity.DynamicProxies")
|
|
|
+ return String.Join("_",
|
|
|
+ type.Name.Split('_')
|
|
|
+ .TakeWhile(s => s != type.Name.Split('_').Last()));
|
|
|
+
|
|
|
+ return type.Name;
|
|
|
+ }
|
|
|
}
|
|
|
}
|