private void SortProducts(ProductSearchBlock currentContent, ProductSearchResults result) { var newList = new List <ProductTileViewModel>(); switch (currentContent.SortOrder) { case ProductSearchSortOrder.BestSellerByQuantity: var byQuantitys = GetBestSellerByQuantity(); newList = result.ProductViewModels.Where(x => !byQuantitys.Any(y => y.Code.Equals(x.Code))).ToList(); newList.InsertRange(0, byQuantitys); break; case ProductSearchSortOrder.BestSellerByRevenue: var byRevenues = GetBestSellerByRevenue(); newList = result.ProductViewModels.Where(x => !byRevenues.Any(y => y.Code.Equals(x.Code))).ToList(); newList.InsertRange(0, byRevenues); break; case ProductSearchSortOrder.NewestProducts: newList = result.ProductViewModels.OrderByDescending(x => x.Created).ToList(); break; default: newList = result.ProductViewModels.ToList(); break; } result.ProductViewModels = newList; }
private void MergePriorityProducts(ProductSearchBlock currentContent, ProductSearchResults result) { var products = new List <EntryContentBase>(); if (currentContent != null) { products = currentContent.PriorityProducts?.FilteredItems?.Select(x => x.GetContent() as EntryContentBase).ToList() ?? new List <EntryContentBase>(); } products = products.Where(x => !result.ProductViewModels.Any(y => y.Code.Equals(x.Code))) .Select(x => x) .ToList(); if (!products.Any()) { return; } var market = _currentMarket.GetCurrentMarket(); var currency = _currencyService.GetCurrentCurrency(); var ratings = _reviewService.GetRatings(products.Select(x => x.Code)) ?? null; var newList = result.ProductViewModels.ToList(); newList.InsertRange(0, products.Select(document => document.GetProductTileViewModel(market, currency))); result.ProductViewModels = newList; }
public void When_i_SearchForCheapestT_Shirt_Then_Product_Page_should_display_Cheapest_TShirt() { SearchPage searchPage = new SearchPage(driver); ProductSearchResults productSearchResults = searchPage.SearchForProduct("Jeans"); driver = productSearchResults.SortProductBasedOn_PriceLowToHigh(); var cheapTshirts = productSearchResults.GetListOfCheapTshirts(driver); cheapTshirts.Should().NotBeNullOrEmpty("No cheap Tshirt returns from search web page"); }
public void Verify_ProductIsVisibleInBag_After_AddingProductToBag() { SearchPage searchPage = new SearchPage(this.driver); ProductSearchResults productSearchResults = searchPage.SearchForProduct("Jeans"); driver = productSearchResults.SortProductBasedOn_PriceLowToHigh(); ProductPage productPage = productSearchResults.SelectAnyRandomProduct(); BagPage bagPage = productPage.AddtoBagProduct(); var productNameFromBag = bagPage.GetProductNameFromBag(driver); ProductSearchResults.productName.Should().Be(productNameFromBag); }
protected void SearchButton_Click(object sender, EventArgs e) { ConfigurePanel.Visible = false; SearchPanel.Visible = true; ProductSearchResults.Visible = true; ProductSearchResults.DataBind(); // ONLY SHOW THE ADD BUTTON IF RESULTS ARE AVAILABLE AddProductsButton.Visible = (ProductSearchResults.Rows.Count > 0); foreach (GridViewRow gvr in ProductSearchResults.Rows) { CheckBox cb = (CheckBox)gvr.FindControl("Selected"); ScriptManager.RegisterArrayDeclaration(ProductSearchResults, "CheckBoxIDs", "'" + cb.ClientID + "'"); } }
public ProductSearchResults ToCanonicalResult() { ProductSearchResults results = new ProductSearchResults(); AmazonApi.Items items = this.Items[0]; results.Valid = Int32.TryParse(items.TotalResults, out results.TotalResults); foreach (AmazonApi.Item item in items.Item) { results.ResultList.Add(item.ToCanonicalResult()); } return(results); }
public override ActionResult Index(Commerce.Models.Blocks.ProductSearchBlock currentBlock) { var currentLang = _languageService.GetCurrentLanguage(); ProductSearchResults result; try { result = GetSearchResults(currentLang.Name, currentBlock); } catch (ServiceException) { return(View("FindError")); } if (result == null) { result = new ProductSearchResults { ProductViewModels = Enumerable.Empty <ProductTileViewModel>(), FacetGroups = Enumerable.Empty <FacetGroupOption>() }; } SortProducts(currentBlock, result); MergePriorityProducts(currentBlock, result); HandleDiscontinuedProducts(currentBlock, result); if (!result.ProductViewModels.Any()) { return(View("EmptyResult")); } var productSearchResult = new ProductSearchResultViewModel(currentBlock) { Heading = currentBlock.Heading, ItemsPerRow = currentBlock.ItemsPerRow, PaddingStyles = currentBlock.PaddingStyles, Products = result.ProductViewModels.ToList() }; return(PartialView("~/Features/Search/ProductSearchBlock/Index.cshtml", productSearchResult)); }
public async Task <ProductSearchResults> GetProductSearchResults(Guid resultsId) { Request request = await _requestRepo.GetRequestByGuidAsync(resultsId); ProductSearchResults results = null; if (request != null && request.ProductId != null) { Customer customer = await _customerRepo.GetByIdAsync(request.CustomerId); var product = await _productRepo.GetByIdAsync((int)request.ProductId); results = new ProductSearchResults(customer, new List <Product> { product }); } return(results); }
private void VerifyProductAttributes() { try { if (ProductSearchResults.Any()) { while (ShowMoreProductsButton.DoesExistsOnPage()) { ShowMoreProductsButton.Click(); WaitForJqueryAjax(); } foreach (IWebElement product in ProductSearchResults) { string productId = product.GetAttribute("data-productid"); string productPrice = product.FindElement(By.CssSelector(ProductPriceCssselector)).Text; string productDetails = product.Text; productDetails = productDetails.Replace("\r\n", "|"); _productSearchResultsDetails.Add(productId, productDetails); //Sometimes search results returns N/A as first productunder search results,but the price in description page is high //it is unclear to me about this functionality,hence not considering n/a product. if (productPrice.ToLower().Contains("n/a")) { _productSearchPriceDetails.Add(productId, -1); } else { productPrice = productPrice.Replace("$", ""); if (productPrice.ToLower().Contains("shipping")) { productPrice = productPrice.Replace("\r\nFree Shipping", ""); } _productSearchPriceDetails.Add(productId, Convert.ToDouble(productPrice)); } } } } catch (WebDriverException e) { Reporter.Fail("VerifyProductAttributes", e.Message); } }
private async Task <TargetSearchResults> GetSimilarProductsFile(ImageAnnotatorClient imageAnnotatorClient, GetSimilarProductsOptions opts) { // Create annotate image request along with product search feature. Image image = Image.FromBytes(opts.ImageBinaries); // Product Search specific parameters var productSearchParams = new ProductSearchParams { ProductSetAsProductSetName = new ProductSetName(opts.ProjectID, opts.ComputeRegion, opts.ProductSetId), ProductCategories = { opts.ProductCategory }, Filter = opts.Filter }; // Search products similar to the image. ProductSearchResults results = await imageAnnotatorClient.DetectSimilarProductsAsync(image, productSearchParams); return(this.mapper.Map <TargetSearchResults>(results)); }
public IActionResult GetAllProducts() { var(products, totalResults) = this.productRepository.GetAllProducts(); var searchMeta = new ProductSearchMeta() { ProductIds = string.Join(",", products.Select(p => p.ProductId)), PageSize = products.Count().ToString(), Page = new SearchResultsPage() { TotalResults = totalResults, PageSize = products.Count().ToString(), }, }; var results = new ProductSearchResults() { Products = products, SearchMeta = searchMeta, }; return(this.Ok(results)); }
private void HandleDiscontinuedProducts(ProductSearchBlock currentContent, ProductSearchResults result) { var newList = new List <ProductTileViewModel>(); switch (currentContent.DiscontinuedProductsMode) { case DiscontinuedProductMode.Hide: newList = result.ProductViewModels.Where(x => !x.ProductStatus.Equals("Discontinued")).ToList(); break; case DiscontinuedProductMode.DemoteToBottom: var discontinueds = result.ProductViewModels.Where(x => x.ProductStatus.Equals("Discontinued")).ToList(); var products = result.ProductViewModels.Where(x => !x.ProductStatus.Equals("Discontinued")).ToList(); discontinueds.InsertRange(0, products); newList = discontinueds; break; default: newList = result.ProductViewModels.ToList(); break; } result.ProductViewModels = newList; }