public JsonNetResult GetCreditsToDollarExchangeValue()
        {
            string creditsToDollarExchangeValueString = String.Empty;

            #region (Plan A) Get data from Local Cache (We cache the exchange rate locally for 8 hours to decrease Core Service requests)

            var exchangeRateCacheKey = "CreditsToDollarExchangeValue";
            var cacheMinutes         = 480;

            var localCacheValue = System.Web.HttpRuntime.Cache.Get(exchangeRateCacheKey);

            #endregion


            if (localCacheValue == null)
            {
                //local cache is empty, get rate from Core Services
                #region (Plan B) Get data from WCF

                //If a failure occurs, or the redis cache is empty we get the user from the WCF service
                var accountCommerceServiceClient = new AccountCommerceService.AccountCommerceServiceClient();

                try
                {
                    accountCommerceServiceClient.Open();
                    creditsToDollarExchangeValueString = accountCommerceServiceClient.GetDollarsToCreditsExchangeRate(1, Common.SharedClientKey).ToString();

                    //Close the connection
                    WCFManager.CloseConnection(accountCommerceServiceClient);
                }
                catch (Exception e)
                {
                    #region Manage Exception

                    string exceptionMessage = e.Message.ToString();

                    var    currentMethod       = System.Reflection.MethodBase.GetCurrentMethod();
                    string currentMethodString = currentMethod.DeclaringType.FullName + "." + currentMethod.Name;

                    // Abort the connection & manage the exception
                    WCFManager.CloseConnection(accountCommerceServiceClient, exceptionMessage, currentMethodString);

                    #endregion
                }

                //Store data into local cache for 8 hours:
                System.Web.HttpRuntime.Cache.Insert(exchangeRateCacheKey, creditsToDollarExchangeValueString, null, DateTime.Now.AddMinutes(cacheMinutes), Cache.NoSlidingExpiration, CacheItemPriority.Default, null);

                #endregion
            }
            else
            {
                //convert local cache object to return value
                creditsToDollarExchangeValueString = localCacheValue.ToString();
            }


            JsonNetResult jsonNetResult = new JsonNetResult();
            jsonNetResult.Formatting = Newtonsoft.Json.Formatting.Indented;
            jsonNetResult.SerializerSettings.DateTimeZoneHandling = DateTimeZoneHandling.Local; //<-- Convert UTC times to LocalTime
            jsonNetResult.Data = creditsToDollarExchangeValueString;

            return(jsonNetResult);
        }