public virtual void RecordDelete(IEntity entity) { if (!LogEventsAttribute.ShouldLog(entity.GetType())) { return; } var eventInfo = CreateApplicationEvent(); if (eventInfo == null) { return; } eventInfo.ItemType = entity.GetType().FullName; eventInfo.ItemKey = entity.GetId().ToString(); eventInfo.Event = "Delete"; eventInfo.IP = GetCurrentUserIP(); eventInfo.UserId = GetCurrentUserId(HttpContext.Current?.User); var changes = Database.GetProvider(entity.GetType()).GetUpdatedValues(entity, null); eventInfo.Data = ToChangeXml(changes); Save(eventInfo); ProcessContext <UndoContext> .Current.Perform(c => c.Append(eventInfo, entity)); }
public virtual void RecordSave(IEntity entity, SaveMode saveMode) { if (!LogEventsAttribute.ShouldLog(entity.GetType())) { return; } var eventInfo = CreateApplicationEvent(); if (eventInfo == null) { return; } eventInfo.ItemType = entity.GetType().FullName; eventInfo.ItemKey = entity.GetId().ToString(); eventInfo.Event = saveMode.ToString(); eventInfo.IP = GetCurrentUserIP(); eventInfo.UserId = GetCurrentUserId(HttpContext.Current?.User); if (saveMode == SaveMode.Update) { var changes = GetChangesXml(entity); if (changes.IsEmpty()) { // No changes have happened, ignore recording the action: return; } eventInfo.Data = changes; } else { if (!ShouldSkipInsertData) { eventInfo.Data = GetDataXml(entity); } } if (OnRecordingSave != null) { var args = new AuditSaveEventArgs { SaveMode = saveMode, ApplicationEvent = eventInfo, Entity = entity }; OnRecordingSave?.Invoke(this, args); if (args.Cancel) { return; } } Save(eventInfo); ProcessContext <UndoContext> .Current.Perform(c => c.Append(eventInfo, entity)); }
public virtual void RecordDelete(IEntity entity) { if (!LogEventsAttribute.ShouldLog(entity.GetType())) { return; } var eventInfo = CreateApplicationEvent(); if (eventInfo == null) { return; } eventInfo.ItemType = entity.GetType().FullName; eventInfo.ItemKey = entity.GetId().ToString(); eventInfo.Event = "Delete"; eventInfo.IP = GetCurrentUserIP(); eventInfo.UserId = GetCurrentUserId(CurrentUser); var changes = Database.GetProvider(entity.GetType()).GetUpdatedValues(entity, null); eventInfo.Data = ToChangeXml(changes); if (OnRecordingDelete != null) { var args = new AuditDeleteEventArgs { ApplicationEvent = eventInfo, Entity = entity }; OnRecordingDelete?.Invoke(this, args); if (args.Cancel) { return; } } Save(eventInfo); ProcessContext <UndoContext> .Current.Perform(c => c.Append(eventInfo, entity)); }