Example #1
0
        /// <summary>
        /// Gets the ratings.
        /// </summary>
        /// <param name="feedback">The feedback.</param>
        /// <returns></returns>
        private ICollection <EbayRatingData> GetRatings(GetFeedbackCall feedback)
        {
            List <EbayRatingData> ratings = new List <EbayRatingData>();

            if (feedback.FeedbackSummary == null || CollectionUtils.IsEmpty(feedback.FeedbackSummary.SellerRatingSummaryArray))
            {
                return(ratings);
            }

            //group the relevant items by time period
            IEnumerable <IGrouping <FeedbackSummaryPeriodCodeType, AverageRatingSummaryType> > groupsByPeriod = feedback
                                                                                                                .FeedbackSummary
                                                                                                                .SellerRatingSummaryArray
                                                                                                                .Cast <AverageRatingSummaryType>()
                                                                                                                .Where(o => o.FeedbackSummaryPeriodSpecified && CollectionUtils.IsNotEmpty(o.AverageRatingDetails))
                                                                                                                .GroupBy(o => o.FeedbackSummaryPeriod);

            //group each previous group by rating detail
            foreach (var periodGroup in groupsByPeriod)
            {
                //group each previous group by rating detail
                var groupPeriodByRating = periodGroup.First()
                                          .AverageRatingDetails
                                          .Cast <AverageRatingDetailsType>()
                                          .GroupBy(o => o.RatingDetail);

                EbayRatingData ratingData = new EbayRatingData();
                ratingData.TimePeriodId = ToEbayTimePeriod(periodGroup.Key);

                //completes ratingData
                FillEbayRatingData(groupPeriodByRating, ratingData);

                ratings.Add(ratingData);
            }

            return(ratings);
        }
Example #2
0
        /// <summary>
        /// Fills the e-bay rating data.
        /// </summary>
        /// <param name="groupPeriodByRating">The group period by rating.</param>
        /// <param name="ratingData">The rating data.</param>
        /// <exception cref="System.ArgumentOutOfRangeException"></exception>
        private static void FillEbayRatingData(IEnumerable <IGrouping <FeedbackRatingDetailCodeType, AverageRatingDetailsType> > groupPeriodByRating, EbayRatingData ratingData)
        {
            foreach (var group in groupPeriodByRating)
            {
                switch (group.Key)
                {
                case FeedbackRatingDetailCodeType.ItemAsDescribed:
                    ratingData.ItemAsDescribed = group.First()
                                                 .Rating;
                    ratingData.ItemAsDescribedCount = group.First()
                                                      .RatingCount;
                    break;

                case FeedbackRatingDetailCodeType.Communication:
                    ratingData.Communication = group.First()
                                               .Rating;
                    ratingData.Communication = group.First()
                                               .RatingCount;
                    break;

                case FeedbackRatingDetailCodeType.ShippingTime:
                    ratingData.ShippingTime = group.First()
                                              .Rating;
                    ratingData.ShippingTimeCount = group.First()
                                                   .RatingCount;
                    break;

                case FeedbackRatingDetailCodeType.ShippingAndHandlingCharges:
                    ratingData.ShippingAndHandlingCharges = group.First()
                                                            .Rating;
                    ratingData.ShippingAndHandlingCharges = group.First()
                                                            .RatingCount;
                    break;

                default:
                    throw new ArgumentOutOfRangeException();
                }
            }
        }