Beispiel #1
0
        public async Task <List <Product> > Sort(SortOption sortOption)
        {
            var products = await _apiResourceProxy.GetProducts();

            var productSorter = _productSorterFactory.GetProductSorter(sortOption);

            return(productSorter.Sort(products));
        }
        public async Task <IEnumerable <Product> > GetSortedProductsAsync(SortOption type)
        {
            var byPopularity = type == SortOption.Recommended;

            var products = await GetProductsAsync();

            if (byPopularity)
            {
                var customerProducts = await GetCustomerProductsAsync();

                products = products.Concat(customerProducts);
            }

            var sorter = _factory.GetProductSorter(type);

            return(sorter.Sort(products));
        }
        public async Task <List <Product> > GetProducts(SortOption sortOption)
        {
            try
            {
                _logger.LogInformation($"{nameof(ProductService)}.{nameof(GetProducts)} called.");

                // getting the products from WooliesX
                var productResponses = await _wooliesXClient.GetProducts(_wooliesXOptions.UserToken);

                // mapping to api domain model
                var products = _mapper.Map <List <ProductResponse>, List <Product> >(productResponses);

                // getting the sort strategy implementation by srt option
                var productSorter = _productSorterFactory.GetProductSorter(sortOption);

                // return the sorted products
                return(await productSorter.SortAsync(products));
            }
            catch (Exception exp)
            {
                _logger.LogError(exp, "GetProducts failed to failed to return sorted products.");
                throw;
            }
        }