private void TrackChanges(List <ChangedProperty> changeList, object target, object id, ChangeTypes changeType) { ITrackable trackableObject = target as ITrackable; if (trackableObject == null || trackableObject.isTracked() == false) { return; } if (HttpContext.Current == null) { return; } ChangeTracking trackChange = new ChangeTracking(); if (trackableObject.arePropertiesTracked()) { trackChange.AppendProperties(changeList, trackChange); } trackChange.ChangeType = new NHibernateDaoFactory().GetChangeTypeDao().GetById((int)changeType, false); trackChange.UserName = HttpContext.Current.User.Identity.Name; trackChange.ObjectChanged = target.GetType().Name; trackChange.ObjectChangedID = id == null ? null : id.ToString(); //Now we have a tracking object with the changed properties added to its change list //Make sure it is valid if (ValidateBO <ChangeTracking> .isValid(trackChange)) { //Don't put this in a transaction becuase we are already in a transaction from the save/update/delete new NHibernateDaoFactory().GetChangeTrackingDao().SaveOrUpdate(trackChange); } //System.IO.StreamWriter writer = new System.IO.StreamWriter(HttpContext.Current.Server.MapPath("RecruitmentTracking.txt"),true); //writer.WriteLine("ChangeID {0} => Object type {1} with ID {2} was modified as follows", Guid.NewGuid(), target.GetType().Name, id.ToString()); //foreach (ChangedProperty change in changeList) //{ // //trackChange.PropertyChanged = change.type.Name; // //trackChange.PropertyChangedValue = change.NewValue; // writer.WriteLine("--- Property {0} was changed to {1}", change.PropertyChanged, change.PropertyChangedValue); //} //writer.Close(); }