Exemplo n.º 1
0
        private DWClientConfig BuildAPIConfig(IRequestParameter parameters)
        {
            _request             = (ProductListExtensionRequest)parameters;
            _hasMultipleProducts = _request.ProductsIds.Contains(",");

            var path = string.Format("{0}/{1}",
                                     Config.DWPath.ProductListExtension,
                                     _hasMultipleProducts ? string.Format("({0})", _request.ProductsIds) : _request.ProductsIds);

            var sb = new StringBuilder();

            sb.Append("expand=images,variations,promotions");
            //Per OCAPI 17.2 - Added all_images=true to Display Image_Groups
            sb.Append("&all_images=true");
            return(new DWClientConfig(_core)
            {
                Path = path,
                Query = sb.ToString(),
                Method = HttpMethod.GET
            });
        }
Exemplo n.º 2
0
        private Response <SearchResponse> GetResponse(DWClientConfig config)
        {
            var result = new Response <SearchResponse>();

            try
            {
                var apiResponse = DWClient.GetAPIResponse <ProductSearchResult>(config);
                if (apiResponse.ResponseStatus.Code == HttpStatusCode.OK)
                {
                    result.resultset = new SearchResponse(apiResponse.Model, _request, _hrefLookup, _core);
                    result.template  = Config.ResponseTemplates.ProductList;
                    if (!string.IsNullOrEmpty(result.resultset.ProductIds))
                    {
                        PowerReviews = GetPwAvgRate(result.resultset.ProductIds);
                        var colors       = new List <string>();
                        var colorsFilter = result.resultset.Filters.AppliedFilterSections.Find(x => x.Note == "c_color");
                        if (colorsFilter != null)
                        {
                            colorsFilter.FilterOptions.ForEach(
                                option => colors.Add(option.Value.ToLowerInvariant().Replace("/", "_").Replace(" ", "")));
                        }
                        var productListExtension        = new ProductListExtension(_core, _errors);
                        var productListExtensionRequest = new ProductListExtensionRequest
                        {
                            ProductsIds = result.resultset.ProductIds,
                            Colors      = colors,
                            Products    = result.resultset.Products
                        };
                        productListExtension._usePredefinedVariations = !IsViewAllProductSearch;
                        var productListExtensionResponse = productListExtension.Execute(productListExtensionRequest);
                        var productIdToExtension         =
                            ((Response <ProductListExtensionResponse>)productListExtensionResponse).resultset
                            .ProductIdToExtension;
                        if (productIdToExtension.Any())
                        {
                            result.resultset.Products.ForEach(p =>
                            {
                                if (!productIdToExtension.ContainsKey(p.ProductId))
                                {
                                    return;
                                }
                                var extension = productIdToExtension[p.ProductId];
                                if (extension == null)
                                {
                                    return;
                                }
                                var avgRate = GetPowerRewiewAverageRateById(p.ProductId);
                                if (avgRate > 0)
                                {
                                    extension.Rating = avgRate;
                                }
                                if (string.IsNullOrEmpty(p.Image.Src) || colors.Count > 0)
                                {
                                    p.Image = extension.Image;
                                }
                                p.Description = extension.Brand;
                                p.Notes       = extension.ItemFeatures;
                                p.Rating      = extension.Rating;
                                p.IsAvailableInMultipleColors = extension.IsAvailableInMultipleColors;
                                p.AvailableVariations         = extension.AvailableVariations;
                                p.ProductFlags = Product.LookupCallouts(extension.ProductFlags);
                                p.CallOuts     = extension.Callout;
                            });
                        }
                    }
                }
                else
                {
                    _errors.Add(new SiteError
                    {
                        Message = new ErrorMessage(Config.Constants.GenericError, apiResponse.ResponseStatus.Message)
                    });
                }
            }
            catch (Exception ex)
            {
                _errors.Add(ex.Handle(string.Format("Search.GetResponse({0}):{1}-{2}", ex.LineNumber(), ex.Message, ex.StackTrace), ErrorSeverity.FollowUp, ErrorType.RequestError));
            }
            return(result);
        }