internal AuditLog CreateLogRecord(object userName, EventType eventType, ITrackerContext context)
        {
            Type entityType = _dbEntry.Entity.GetType().GetEntityType();

            if (!EntityTrackingConfiguration.IsTrackingEnabled(entityType))
            {
                return null;
            }

            DateTime changeTime = DateTime.UtcNow;

            //todo: make this a static class
            var mapping = new DbMapping(context, entityType);

            List<PropertyConfiguerationKey> keyNames = mapping.PrimaryKeys().ToList();

            var newlog = new AuditLog
            {
                UserName = userName?.ToString(),
                EventDateUTC = changeTime,
                EventType = eventType,
                TypeFullName = entityType.FullName,
                RecordId = GetPrimaryKeyValuesOf(_dbEntry, keyNames).ToString()
            };

            var detailsAuditor = GetDetailsAuditor(eventType, newlog);

            newlog.LogDetails = detailsAuditor.CreateLogDetails().ToList();

            if (newlog.LogDetails.Any())
                return newlog;
            else
                return null;
        }
Ejemplo n.º 2
0
        public AuditLog CreateLogRecord(object userName, EventType eventType, ITrackerContext context)
        {
            Type entityType = _dbEntry.Entity.GetType().GetEntityType();
            DateTime changeTime = DateTime.UtcNow;

            if (!entityType.IsTrackingEnabled())
            {
                return null;
            }

            IEnumerable<string> keyNames = entityType.GetPrimaryKeyNames(context);

            var newlog = new AuditLog
            {
                UserName = userName != null ? userName.ToString() : null,
                EventDateUTC = changeTime,
                EventType = eventType,
                TypeFullName = entityType.FullName,
                RecordId = _dbEntry.GetPrimaryKeyValues(keyNames).ToString()
            };

            using (var detailsAuditor = (eventType == EventType.Added)
                ? new AddedLogDetailsAuditor(_dbEntry, newlog)
                : new LogDetailsAuditor(_dbEntry, newlog))
            {
                newlog.LogDetails = detailsAuditor.CreateLogDetails().ToList();
            }

            return newlog;
        }
        private ChangeLogDetailsAuditor GetDetailsAuditor(EventType eventType, AuditLog newlog)
        {
            switch (eventType)
            {
                case EventType.Added:
                    return new AdditionLogDetailsAuditor(_dbEntry, newlog);

                case EventType.Deleted:
                    return new DeletetionLogDetailsAuditor(_dbEntry, newlog);

                case EventType.Modified:
                    return new ChangeLogDetailsAuditor(_dbEntry, newlog);

                case EventType.SoftDeleted:
                    return new SoftDeletedLogDetailsAuditor(_dbEntry, newlog);

                case EventType.UnDeleted:
                    return new UnDeletedLogDetailsAudotor(_dbEntry, newlog);

                default:
                    return null;
            }
        }
        private void UpdateEditLogRow(CancellationToken cancellationToken, Type entityType, AuditLog auditLogRow,
            string typeFullname)
        {
            cancellationToken.ThrowIfCancellationRequested();

            RenameTableNameToTypeFullname(auditLogRow, typeFullname);

            IEnumerable<PropertyInfo> properties = GetProperties(entityType);

            foreach (var propertyInfo in properties)
            {
                MigrateProperty(cancellationToken, typeFullname, propertyInfo);
            }
        }
        private void RenameTableNameToTypeFullname(AuditLog auditLogRow, string typeFullname)
        {
            string oldName = auditLogRow.TypeFullName;

            auditLogRow.TypeFullName = typeFullname;
            _trackerContext.SaveChanges();

            OnAuditLogUpdated(new NameChangedEventArgs
            {
                OldName = oldName,
                NewName = typeFullname,
                RecordId = auditLogRow.AuditLogId
            });
        }
 public ChangeLogDetailsAuditor(DbEntityEntry dbEntry, AuditLog log)
 {
     DbEntry = dbEntry;
     _log = log;
 }
 public UnDeletedLogDetailsAudotor(DbEntityEntry dbEntry, AuditLog log) : base(dbEntry, log)
 {
 }
 public DeletetionLogDetailsAuditor(DbEntityEntry dbEntry, AuditLog log) : base(dbEntry, log)
 {
 }
 public AuditLogGeneratedEventArgs(AuditLog log)
 {
     Log = log;
 }
 public LogDetailsAuditor(DbEntityEntry dbEntry, AuditLog log)
 {
     _dbEntry = dbEntry;
     _log = log;
 }
 public AddedLogDetailsAuditor(DbEntityEntry dbEntry, AuditLog log)
     : base(dbEntry, log)
 {
 }
 public AuditLogGeneratedEventArgs(AuditLog log, object entity)
 {
     Log = log;
     Entity = entity;
 }
 internal AdditionLogDetailsAuditor(DbEntityEntry dbEntry, AuditLog log)
     : base(dbEntry, log)
 {
 }