Exemple #1
0
        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;
        }
Exemple #2
0
        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;
        }
Exemple #3
0
        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");
        }
Exemple #4
0
        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 + "'");
     }
 }
Exemple #6
0
        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);
        }
Exemple #7
0
        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));
        }
Exemple #11
0
        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));
        }
Exemple #12
0
        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;
        }