Esempio n. 1
0
        public Response <PowerReviewAvgRateResponse> ParseResponse(IResultResponse response)
        {
            var result = new Response <PowerReviewAvgRateResponse>();

            result.resultset.AvgRates = PowerReviewHelper.GetAvgRates(response.RawData);
            return(result);
        }
Esempio n. 2
0
        public Response <PowerReviewSnapshotResponse> ParseResponse(IResultResponse response)
        {
            var result = new Response <PowerReviewSnapshotResponse>();

            result.resultset.Snapshot = PowerReviewHelper.GetSnapshot(response.RawData);
            return(result);
        }
Esempio n. 3
0
        public Response <PowerReviewsResponse> ParseResponse(IResultResponse response)
        {
            var result = new Response <PowerReviewsResponse>();

            result.resultset.Reviews = PowerReviewHelper.GetReviews(response.RawData);
            result.resultset.Pagination.DisplayFrom = _displayFrom;
            result.resultset.Pagination.DisplayTo   = _displayTo;
            result.resultset.Pagination.CurrentPage = _currentPage;
            result.resultset.Pagination.Sort        = _sort;
            return(result);
        }
Esempio n. 4
0
        private IResponseBase GetResponse(DWClientConfig config)
        {
            var result = new Response <ProductListExtensionResponse>();

            try
            {
                APIResponse apiResponse = null;
                if (_hasMultipleProducts)
                {
                    apiResponse = DWClient.GetAPIResponse <ProductResult>(config);
                }
                else
                {
                    apiResponse = DWClient.GetAPIResponse <DWProduct>(config);
                }

                if (apiResponse.ResponseStatus.Code == HttpStatusCode.OK)
                {
                    if (_hasMultipleProducts)
                    {
                        var productResult = ((APIResponse <ProductResult>)apiResponse).Model;
                        productResult.Products = SetProductBrands(productResult.Products, apiResponse.Raw);
                        result.resultset       = new ProductListExtensionResponse(productResult, _request.Colors, apiResponse.Raw);
                    }
                    else
                    {
                        var product = ((APIResponse <DWProduct>)apiResponse).Model;
                        if (_usePredefinedVariations)
                        {
                            ReplaceColors(product);
                        }

                        result.resultset = new ProductListExtensionResponse(ProductListExtensionResponse.GetProductResult(product), _request.Colors, apiResponse.Raw);
                    }

                    result.template = Config.ResponseTemplates.ProductListExtension;
                    foreach (var productItem in result.resultset.ProductIdToExtension)
                    {
                        try
                        {
                            var productsnapshot = PowerReviewHelper.GetSnapshot(productItem.Key);
                            productItem.Value.Rating = (productsnapshot.average_rating == null)? 0: decimal.Parse((productsnapshot.average_rating));
                        }
                        catch (Exception ex)
                        {
                            productItem.Value.Rating = 0;
                        }
                    }
                }
                else
                {
                    _errors.Add(new SiteError {
                        Message = new ErrorMessage(Config.Constants.GenericError, apiResponse.ResponseStatus.Message.ToString())
                    });
                }
            }
            catch (Exception ex)
            {
                _errors.Add(ex.Handle("ProductListExtension.GetResponse", ErrorSeverity.FollowUp, ErrorType.RequestError));
            }

            return(result);
        }
Esempio n. 5
0
        private Response <ProductDetailResponse> GetResponse(DWClientConfig config)
        {
            var result = new Response <ProductDetailResponse>();

            try
            {
                var apiResponse = DWClient.GetAPIResponse <DWProduct>(config);
                if (apiResponse.ResponseStatus.Code == HttpStatusCode.OK)
                {
                    result.resultset = new ProductDetailResponse(apiResponse.Model, _request.Color, _core, _errors);
                    try
                    {
                        result.resultset.RecommendedProducts = RecommendedProducts.Load(result.resultset.Product.ProductId, _core).Products;
                    }
                    catch
                    {
                        // ignored
                    }
                    result.template = Config.ResponseTemplates.ProductDetail;
                    var reviewsObj = GetPwReviews(result.resultset.Product.ProductId);
                    result.resultset.Product.PowerReview.Reviews    = reviewsObj.Item1;
                    result.resultset.Product.PowerReview.Pagination = reviewsObj.Item2;
                    result.resultset.Product.PowerReview.Snapshot   = GetPwSnapShots(result.resultset.Product.ProductId);
                    result.resultset.Product.PowerReview.MsqcTags   = PowerReviewHelper.GetMsqcsTagSummary(result.resultset.Product.PowerReview.Reviews);
                    result.resultset.Product.PowerReview.FaceOff    = GetPwFaceOff(result.resultset.Product.ProductId);
                    if (!string.IsNullOrWhiteSpace(result.resultset.Product.PowerReview.Snapshot.average_rating))
                    {
                        result.resultset.Product.ProductRating.Rating = decimal.Parse(result.resultset.Product.PowerReview.Snapshot.average_rating);
                    }
                    if (result.resultset.Product.VariantIdsSegments.Count > 0)
                    {
                        IEnumerable <KeyValuePair <string, ProductDetailItemExtension> > tempDictionary = new Dictionary <string, ProductDetailItemExtension>();
                        result.resultset.Product.VariantIdsSegments.ForEach(segment =>
                        {
                            var variantIdToExtension = GetDetailExtension(segment);
                            tempDictionary           = tempDictionary.Union(variantIdToExtension);
                        });

                        if (!_errors.Any())
                        {
                            var completeDictionary = tempDictionary.GroupBy(x => x.Key).ToDictionary(x => x.Key, x => x.First().Value);

                            if (completeDictionary.Any())
                            {
                                result.resultset.Product.Colors.ForEach(color =>
                                {
                                    color.Sizes.ForEach(size =>
                                    {
                                        if (completeDictionary.ContainsKey(size.Value))
                                        {
                                            size.SizeSegment  = completeDictionary[size.Value].SizeSegment;
                                            size.ExclusiveMsg = completeDictionary[size.Value].ExclusiveMsg;
                                            size.PriceRange   = completeDictionary[size.Value].PriceRange;
                                        }
                                        color.SizeSegments = color.Sizes
                                                             .Where(x => !string.IsNullOrEmpty(x.SizeSegment))
                                                             .GroupBy(x => x.SizeSegment)
                                                             .Select((x, i) => new Option
                                        {
                                            Name       = x.First().SizeSegment,
                                            Value      = x.First().SizeSegment,
                                            IsSelected = i == 0
                                        })
                                                             .ToList();
                                    });
                                    color.Sizes = color.Sizes;
                                });
                            }
                        }
                    }
                    result.resultset.Product.Pricing = ProductPricing.GetByID(_core, _request.Id);
                }
                else
                {
                    _errors.Add(new SiteError
                    {
                        Message = new ErrorMessage(Config.Constants.GenericError, apiResponse.ResponseStatus.Message)
                    });
                }
            }
            catch (Exception ex)
            {
                var titleMsg = string.Format("ProductDetail.GetResponse - DW Productid: {0}-{1}", result.resultset.Product.ProductId, config.Path);
                _errors.Add(ex.Handle(titleMsg, ErrorSeverity.FollowUp, ErrorType.RequestError));
            }
            return(result);
        }
Esempio n. 6
0
 public Response<PowerReviewFaceOffResponse> ParseResponse(IResultResponse response)
 {
     var result = new Response<PowerReviewFaceOffResponse>();
     result.resultset.FaceOff = PowerReviewHelper.GetFaceOffReviews(response.RawData);
     return result;
 }