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; }
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) { }