/// <summary>
        /// Gets all the available product lookups.
        /// </summary>
        /// <returns></returns>
        public virtual Task <List <Lookup> > GetLookupsAsync()
        {
            var cacheKey = new CacheKey(CacheConfigurationCategoryNames.Lookup);

            cacheKey.AppendKeyParts("productlookups");

            // the request type uniquely identifies what type of lookup is being searched
            var request = new GetProductLookupsRequest();

            //removed await because there is no logic after return from the call
            return(_cacheProvider.GetOrAddAsync(cacheKey, () => _overtureClient.SendAsync(request)));
        }
        private static async Task <List <Lookup> > GetLookups(ProductDefinition productDef, IOvertureClient client)
        {
            var kvaLookupAttributes = productDef.VariantProperties.Where(vp => vp.IsKeyVariant && vp.DataType == PropertyDataType.Lookup)
                                      .Select(vp => vp.LookupDefinition.LookupName);

            var results     = new List <Lookup>();
            var lookupTasks = new List <Task <Lookup> >();

            foreach (var name in kvaLookupAttributes.Distinct())
            {
                var request = new GetProductLookupRequest
                {
                    LookupName = name
                };

                lookupTasks.Add(client.SendAsync(request));
            }

            var lookupResults = await Task.WhenAll(lookupTasks).ConfigureAwait(false);

            foreach (var lookup in lookupResults)
            {
                if (lookup != null)
                {
                    results.Add(lookup);
                }
            }

            return(results);
        }
Esempio n. 3
0
        public virtual async Task <IEnumerable <SitemapEntry> > GetEntriesAsync(SitemapParams sitemapParams, CultureInfo culture, int offset, int count)
        {
            Guard.NotNull(sitemapParams, nameof(sitemapParams));
            Guard.NotNullOrWhiteSpace(sitemapParams.BaseUrl, $"{nameof(sitemapParams)}.{nameof(sitemapParams.BaseUrl)}");
            Guard.NotNullOrWhiteSpace(sitemapParams.Scope, $"{nameof(sitemapParams)}.{nameof(sitemapParams.Scope)}");
            Guard.NotNull(culture, nameof(culture));

            var request = new SearchProductRequest
            {
                ScopeId                 = sitemapParams.Scope,
                CultureName             = culture.Name,
                Keywords                = "*",
                StartingIndex           = offset,
                MaximumItems            = count,
                VariantGroupingStrategy = SearchVariantGroupingStrategy.PerProduct,
            };

            var response = await _overtureClient.SendAsync(request).ConfigureAwait(false);

            if (!response.Documents.Any())
            {
                return(Enumerable.Empty <SitemapEntry>());
            }

            return(CreateStandardSitemapEntries(sitemapParams, response.Documents, culture));
        }
Esempio n. 4
0
        private static async Task <List <Lookup> > GetLookups(ProductDefinition productDef, IOvertureClient client)
        {
            var kvaLookupAttributes = productDef.VariantProperties
                                      .Where(vp => vp.IsKeyVariant && vp.DataType == PropertyDataType.Lookup)
                                      .Select(vp => vp.LookupDefinition.LookupName);

            var lookupTasks = new Dictionary <string, Task <Lookup> >();

            foreach (var name in kvaLookupAttributes)
            {
                if (lookupTasks.ContainsKey(name))
                {
                    continue;
                }
                var request = new GetProductLookupRequest
                {
                    LookupName = name
                };

                lookupTasks.Add(name, client.SendAsync(request));
            }
            var lookupResults = await Task.WhenAll(lookupTasks.Values).ConfigureAwait(false);

            return(lookupResults.Where(x => x != null).ToList());
        }
        /// <summary>
        /// Retrieve a country using its ISO code
        /// </summary>
        /// <param name="param"></param>
        /// <returns></returns>
        public async Task <Overture.ServiceModel.Country> RetrieveCountry(RetrieveCountryParam param)
        {
            if (string.IsNullOrWhiteSpace(param.IsoCode))
            {
                throw new ArgumentException(GetMessageOfNullWhiteSpace(nameof(param.IsoCode)), nameof(param));
            }

            var countryCacheKey = new CacheKey(CacheConfigurationCategoryNames.Country);

            countryCacheKey.AppendKeyParts(param.IsoCode);

            var result = await _cacheProvider.GetOrAddAsync(countryCacheKey, () =>
            {
                var request = new GetCountryRequest
                {
                    CountryIsoCode = param.IsoCode,
                    IncludeRegions = true
                };

                return(_overtureClient.SendAsync(request));
            }).ConfigureAwait(false);

            return(result);
        }
Esempio n. 6
0
        public virtual async Task <IEnumerable <SitemapEntry> > GetEntriesAsync(SitemapParams param, CultureInfo culture, int offset, int count)
        {
            if (param == null)
            {
                throw new ArgumentNullException(nameof(param));
            }
            if (string.IsNullOrWhiteSpace(param.BaseUrl))
            {
                throw new ArgumentException(GetMessageOfNullWhiteSpace(nameof(param.BaseUrl)), nameof(param));
            }
            if (string.IsNullOrWhiteSpace(param.Scope))
            {
                throw new ArgumentException(GetMessageOfNullWhiteSpace(nameof(param.Scope)), nameof(param));
            }
            if (culture == null)
            {
                throw new ArgumentNullException(nameof(culture));
            }

            var request = new SearchProductRequest
            {
                ScopeId                 = param.Scope,
                CultureName             = culture.Name,
                Keywords                = "*",
                StartingIndex           = offset,
                MaximumItems            = count,
                VariantGroupingStrategy = SearchVariantGroupingStrategy.PerProduct,
            };

            var response = await _overtureClient.SendAsync(request).ConfigureAwait(false);

            if (!response.Documents.Any())
            {
                return(Enumerable.Empty <SitemapEntry>());
            }

            return(CreateStandardSitemapEntries(param, response.Documents, culture));
        }
 public Task <TResponse> SendAsync <TResponse>(IReturn <TResponse> requestDto)
 {
     return(InterceptAsync(() => _client.SendAsync(requestDto), requestDto));
 }
        public virtual Task <ProductSearchResult> GetProductInSameCategoryAsync(GetProductsInSameCategoryParam getProductsInSameCategoryParam)
        {
            var request = CreateProductInSameCategorySearchRequest(getProductsInSameCategoryParam);

            return(_overtureClient.SendAsync(request));
        }