/// <summary> /// Initializes a new instance of the CSideEventArgs class. /// </summary> public CSideEventArgs(ChangeEventType type, string previous, string current) { switch (type) { case ChangeEventType.Database: PreviousDatabase = previous; CurrentDatabase = current; break; case ChangeEventType.Company: PreviousCompany = previous; CurrentCompany = current; break; default: break; } }
private List <ChangeEventItem> CreateChangeEventItems <TObj, TParent>(TObj dbObj, TParent parent, ChangeEventType type) where TObj : class { var objWithEntity = dbObj as IHasEntity; if (objWithEntity == null) { objWithEntity = parent as IHasEntity; } var changeEventItems = new List <ChangeEventItem>(); Type entityType = dbObj.GetType(); foreach (PropertyInfo entityProperty in entityType.GetProperties().ToList()) { if (entityProperty.PropertyType.IsPrimitive || entityProperty.PropertyType.IsValueType || (entityProperty.PropertyType == typeof(string))) { var property = db.Entry(dbObj).Property(entityProperty.Name); if (property.IsModified) { var changeEventItem = new ChangeEventItem() { ChangedFrom = "" + property.OriginalValue, ChangedTo = "" + property.CurrentValue, Type = type, Date = DateTime.UtcNow, UserIdCode = GetUserIdCode(), ChangeEvent = null, ColumnName = property.Name, TableName = typeof(TObj) != null ? typeof(TObj).Name : "", Entity = objWithEntity != null ? objWithEntity.Entity : null }; // only update if changed from isn't same as changed to (IsModified doesn't validate this) if (objWithEntity != null && !changeEventItem.ChangedFrom.Equals(changeEventItem.ChangedTo)) { changeEventItems.Add(changeEventItem); } } } } return(changeEventItems); }