public override List <AmplaRecordChanges> DetectChanges() { List <AmplaRecordChanges> recordChanges = new List <AmplaRecordChanges>(); if (amplaAuditRecord.Changes != null) { foreach (AmplaAuditSession session in amplaAuditRecord.Changes) { List <string> fieldList = new List <string>(); List <AmplaAuditField> fields = new List <AmplaAuditField>(); foreach (var auditField in session.Fields.Where(IncludeField)) { fields.Add(auditField); fieldList.Add(viewProperties.GetFieldDisplayName(auditField.Name)); } if (fields.Count > 0) { string fieldNames = string.Join(", ", fieldList); AmplaRecordChanges changes = new AmplaRecordChanges { VersionDateTime = session.EditedTime, User = session.User, Operation = Operation, Changes = fields.ToArray(), Display = string.Format("{0} modified record ({1})", session.User, fieldNames) }; recordChanges.Add(changes); } } } return(recordChanges); }
public override List <AmplaRecordChanges> DetectChanges() { List <AmplaRecordChanges> recordChanges = new List <AmplaRecordChanges>(); if (amplaRecord.GetValueOrDefault(deletedDisplayName, false)) { if (amplaAuditRecord.Changes != null) { foreach (AmplaAuditSession session in amplaAuditRecord.Changes) { AmplaAuditField isDeleted = session.Fields.FirstOrDefault(f => f.Name == deletedName); if (isDeleted != null) { AmplaRecordChanges changes = new AmplaRecordChanges { VersionDateTime = session.EditedTime, User = session.User, Operation = Operation, Changes = new [] { new AmplaAuditField() { Name = deletedName, OriginalValue = "False", EditedValue = "True" } }, Display = string.Format("{0} deleted record", session.User) }; recordChanges.Add(changes); } } } } return(recordChanges); }
public bool Bind() { versions.ModelName = modelProperties.GetModelName(); AmplaRecordHistory <TModel> history = new AmplaRecordHistory <TModel>(amplaRecord, auditRecord, viewProperties); List <AmplaRecordChanges> recordChanges = history.Reconstruct(); ModelVersion <TModel>[] modelVersions = new ModelVersion <TModel> [recordChanges.Count]; TModel clonedModel = modelProperties.CloneModel(currentModel); for (int i = 0; i < modelVersions.Length; i++) { AmplaRecordChanges recordChange = recordChanges[i]; bool isCurrent = i == (modelVersions.Length - 1); modelVersions[i] = new ModelVersion <TModel>(isCurrent, clonedModel) { Version = i + 1, User = recordChange.User, VersionDate = recordChange.VersionDateTime, Display = recordChange.Display }; } TModel current = currentModel; for (int i = modelVersions.Length - 1; i >= 0; i--) { var modelVersion = modelVersions[i]; modelVersion.Model = modelProperties.CloneModel(current); AmplaRecordChanges recordChange = recordChanges[i]; foreach (var field in recordChange.Changes) { viewProperties.UpdateModel(current, field.Name, field.OriginalValue, false); } if (i == 0) { modelVersion.Model = modelProperties.CloneModel(current); } } foreach (var modelVersion in modelVersions) { versions.Versions.Add(modelVersion); } return(true); }