コード例 #1
0
            /// <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&lt;PriceAdjustment&gt;.</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);
            }
コード例 #2
0
            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()));
            }