public AuditTrail AuditTrailFactory(DbEntityEntry entry, string userName) { AuditTrail audit = new AuditTrail(); audit.RevisionStamp = DateTime.Now; audit.TableName = entry.Entity.GetType().Name; audit.UserName = userName; audit.Deleted = false; audit.CreatedBy = userName; audit.CreatedOn = DateTime.Now; audit.UpdatedBy = userName; audit.UpdatedOn = DateTime.Now; //audit.IPAddress = GetIP(); audit.IPAddress = GetIP4Address(); if (entry.State == EntityState.Added) { //entry is Added var model = (EntityBase)entry.Entity; model.CreatedBy = DataConnector.LoginName; model.CreatedOn = DateTime.Now; model.UpdatedBy = DataConnector.LoginName; model.UpdatedOn = DateTime.Now; audit.NewData = GetEntryValueInString(entry, false); audit.Actions = AuditAction.C; } else if (entry.State == EntityState.Deleted) { //entry in deleted audit.OldData = GetEntryValueInString(entry, true); audit.Actions = AuditAction.D; } else { //entry is modified var model = (EntityBase)entry.Entity; model.UpdatedBy = DataConnector.LoginName; model.UpdatedOn = DateTime.Now; audit.OldData = GetEntryValueInString(entry, true); audit.NewData = GetEntryValueInString(entry, false); audit.Actions = AuditAction.U; IEnumerable <string> modifiedProperties = entry.CurrentValues.PropertyNames; //assing collection of mismatched Columns name as serialized string audit.ChangedColumns = XMLSerializationHelper.XmlSerialize(modifiedProperties.ToArray()); } auditTrailList.Add(audit); return(audit); }
public HttpResponseMessage GetAuditTrail(HttpRequestMessage request, int auditTrailId) { return(GetHttpResponse(request, () => { HttpResponseMessage response = null; audit.AuditTrail auditTrail = _CoreService.GetAuditTrail(auditTrailId); // notice no need to create a seperate model object since AuditTrail entity will do just fine response = request.CreateResponse <audit.AuditTrail>(HttpStatusCode.OK, auditTrail); return response; })); }