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 }); }
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); }