Beispiel #1
0
        /// <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;
            }
        }
Beispiel #2
0
        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);
        }