private static async Task PopulateResourceEventData( IResourceEventRepository resourceEventRepository, ApiOperationContext context, ResourceEvent resourceEvent) { // Get the latest after creation or update (cannot, obviously, get for a deleted record) if (resourceEvent.ChangeType != ResourceEventChangeType.Deleted) { resourceEvent.Data = await GetByIdAsync(context, resourceEvent.SelfQuery); } if (resourceEvent.ChangeType == ResourceEventChangeType.Updated) { var previousResource = await resourceEventRepository.GetCurrentDataAsync(resourceEvent.Href, resourceEvent.ResourceType); // There are cases where the old resource will not exist because resources being saved was a new // introduction after being in prod for over a year if (previousResource != null) { resourceEvent.ChangedValues = ObjectComparer.GetPreviousValues( previousResource, resourceEvent.Data); } } }
private static async Task TryPopulateChangedValuesAsync( IResourceEventRepository resourceEventRepository, ResourceEvent resourceEvent) { if (resourceEvent.ChangeType == ResourceEventChangeType.Updated && resourceEvent.Data != null) { var previousResource = await resourceEventRepository.GetCurrentDataAsync(resourceEvent.Href, resourceEvent.Data.GetType()); // There are cases where the old resource will not exist because resources being saved was a new // introduction after being in prod for over a year if (previousResource != null) { resourceEvent.ChangedValues = ObjectComparer.GetPreviousValues( previousResource, resourceEvent.Data); } } }