/// <summary> /// Fetch all price adjustments for the given items, striped by item Id and dimension Id. /// </summary> /// <param name="items">The set of items to search by. Set of pairs of item Id and variant dimension Id. Ignores the unit.</param> /// <param name="priceGroups">Set of price groups to search by.</param> /// <param name="minActiveDate">The earliest inclusive active date to search by. Must be less than or equal to maxActiveDate.</param> /// <param name="maxActiveDate">The latest inclusive active date to search by. Must be greater than or equal to minActiveDate.</param> /// <param name="settings">The query result settings.</param> /// <returns>Collection of price adjustments striped by item Id and variant dimension Id (if any) of type ReadOnlyCollection<PriceAdjustment>.</returns> public object ReadPriceAdjustments( object items, object priceGroups, DateTimeOffset minActiveDate, DateTimeOffset maxActiveDate, QueryResultSettings settings) { IEnumerable <ItemUnit> itemSet = items as IEnumerable <ItemUnit>; ISet <string> priceGroupSet = priceGroups as ISet <string>; ReadOnlyCollection <ValidationPeriod> validationPeriods; ReadOnlyCollection <PriceAdjustment> priceAdjustments; using (SimpleProfiler profiler = new SimpleProfiler("ReadPriceAdjustments", 1)) { var dataRequest = new ReadPriceAdjustmentsDataRequest( itemSet, priceGroupSet, minActiveDate, maxActiveDate); dataRequest.QueryResultSettings = settings; priceAdjustments = this.ExecuteDataService <PriceAdjustment, ValidationPeriod>(dataRequest, out validationPeriods); } IDictionary <string, ValidationPeriod> validationPeriodLookup = validationPeriods.ToDictionary(p => p.PeriodId, p => p, StringComparer.OrdinalIgnoreCase); foreach (PriceAdjustment adjustment in priceAdjustments) { if (!string.IsNullOrWhiteSpace(adjustment.ValidationPeriodId)) { ValidationPeriod validationPeriod = null; if (validationPeriodLookup.TryGetValue(adjustment.ValidationPeriodId, out validationPeriod)) { adjustment.ValidationPeriod = validationPeriod; } } } return(priceAdjustments); }
private EntityDataServiceResponse <PriceAdjustment, ValidationPeriod> ReadPriceAdjustments(ReadPriceAdjustmentsDataRequest request) { var pricingDataManager = this.GetDataManagerInstance(request.RequestContext); ReadOnlyCollection <ValidationPeriod> validationPeriods; var priceAdjustments = pricingDataManager.ReadPriceAdjustments( request.ItemUnits, request.PriceGroups as ISet <string>, request.MinActiveDate, request.MaxActiveDate, out validationPeriods); return(new EntityDataServiceResponse <PriceAdjustment, ValidationPeriod>(priceAdjustments, validationPeriods.ToArray())); }