Beispiel #1
0
        public IActionResult Filter(decimal maxPrice = 0, string size = "", string highlight = "")
        {
            var viewModel = new FilterObjectModel();

            //get initial list
            var filterProducts = Initializer.GetInitialDataFromApi();

            //filter data
            if (!FilterLogic.CheckIfFilterListIsEmpty(filterProducts))
            {
                //filter list by max price
                if (maxPrice > 0)
                {
                    filterProducts = FilterLogic.FilterProductsByMaxPrice(filterProducts, maxPrice);
                }

                //filter list by size
                if (!string.IsNullOrEmpty(size))
                {
                    filterProducts = FilterLogic.FilterProductsBySize(filterProducts, size);
                }

                //find all sizes
                var allSIzes = FilterLogic.FindAllSizesFromProductList(filterProducts);

                //find common words
                var commonWords = FilterLogic.FindCommonWordsFromProductList(filterProducts);

                //highlight words in description
                if (!string.IsNullOrEmpty(highlight))
                {
                    filterProducts = FilterLogic.HighlightWordsInDescription(filterProducts, highlight);
                }

                viewModel = new FilterObjectModel
                {
                    Success         = "True",
                    ErrorMessage    = !FilterLogic.CheckIfFilterListIsEmpty(filterProducts) ? "" : "There are no results with this parameters!",
                    Products        = filterProducts,
                    MinPrice        = FilterLogic.FindMinPriceFromProductList(filterProducts),
                    MaxPrice        = FilterLogic.FindMaxPriceFromProductList(filterProducts),
                    AllSizes        = allSIzes,
                    MostCommonWords = commonWords
                };
            }
            else
            {
                viewModel = new FilterObjectModel
                {
                    Success      = "False",
                    ErrorMessage = "Error while retrieving products from database"
                };
            }

            Response.ContentType = "application/json";
            return(Content(JsonConvert.SerializeObject(viewModel)));
        }
        public void TestFindMinPriceFromProductList()
        {
            var products = new List <Product>();

            products.Add(testProduct1);
            products.Add(testProduct2);

            var price = FilterLogic.FindMinPriceFromProductList(products);

            Assert.True(price == 1);
        }