public ManagerResponse <GetAvailableRegionsResult, Dictionary <string, string> > GetAvailableRegions(string countryCode)
        {
            Assert.ArgumentNotNullOrEmpty(countryCode, nameof(countryCode));

            var request = new GetAvailableRegionsRequest(countryCode);
            var result  = new GetAvailableRegionsResult();
            var key     = $"GetAvailableRegionsResult{countryCode}";

            var cachedRegions = GetFromCache <GetAvailableRegionsResult>(key);

            if (cachedRegions != null)
            {
                result = cachedRegions;
            }
            else
            {
                result = OrderServiceProvider.GetAvailableRegions(request);
                AddToCache(key, result);
            }

            result.WriteToSitecoreLog();

            var response = new ManagerResponse <GetAvailableRegionsResult, Dictionary <string, string> >(result, new Dictionary <string, string>(result.AvailableRegions));

            return(response);
        }
        public ManagerResponse <GetAvailableCountriesResult, Dictionary <string, string> > GetAvailableCountries()
        {
            var request         = new GetAvailableCountriesRequest();
            var result          = new GetAvailableCountriesResult();
            var cachedCountries = GetFromCache <GetAvailableCountriesResult>("GetAvailableCountriesResult");

            if (cachedCountries != null)
            {
                result = cachedCountries;
            }
            else
            {
                result = OrderServiceProvider.GetAvailableCountries(request);
                AddToCache("GetAvailableCountriesResult", result);
            }

            result.WriteToSitecoreLog();

            var response = new ManagerResponse <GetAvailableCountriesResult, Dictionary <string, string> >(result, new Dictionary <string, string>(result.AvailableCountries));

            return(response);
        }