public static void UpdateCurrenciesService(provider providerName)
        {
            // ToDo: this list need to fill dynamically from config file
            List <RateHistoryRequestBase> rateRequests = new List <RateHistoryRequestBase>()
            {
                RateHistoryRequestFactory.CreateRateHistory(currency.ILS, currency.USD, providerName),
                RateHistoryRequestFactory.CreateRateHistory(currency.EUR, currency.USD, providerName),
                RateHistoryRequestFactory.CreateRateHistory(currency.JPY, currency.EUR, providerName),
                RateHistoryRequestFactory.CreateRateHistory(currency.EUR, currency.GBP, providerName)
            };

            Parallel.ForEach(rateRequests, async rateRequest =>
            {
                using (var cancellationTokenSource = new CancellationTokenSource())
                {
                    IProgress <string> p = new Progress <string>(res =>
                    {
                        RateHistoryResponseBase responseBase = RateHistoryResponseFactory.DeserializeResponse(rateRequest.providerName, rateRequest.termRate, rateRequest.baseRate, res);

                        CurrencyBL.AddCurrency(responseBase.GetCurrencyName().ToString(), responseBase.GetCurrencyService(), responseBase.GetCurrencyValue());
                    });

                    await SingleHttpClientInstance.stringPostStreamAsync(rateRequest, cancellationTokenSource.Token, p);
                }
            });
        }
        public static void UpdateCurrencies(provider providerName)
        {
            // ToDO: this list need to fill dynamically from config file
            List <RateHistoryRequestBase> rateRequests = new List <RateHistoryRequestBase>()
            {
                RateHistoryRequestFactory.CreateRateHistory(currency.ILS, currency.USD, providerName),
                RateHistoryRequestFactory.CreateRateHistory(currency.EUR, currency.USD, providerName),
                RateHistoryRequestFactory.CreateRateHistory(currency.JPY, currency.EUR, providerName),
                RateHistoryRequestFactory.CreateRateHistory(currency.EUR, currency.GBP, providerName)
            };

            rateRequests.ForEach(rateRequest =>
            {
                Task <string> jsonResponseTask = SingleHttpClientInstance.PostStreamAsync(rateRequest);
                jsonResponseTask.Wait();

                if (jsonResponseTask.IsCompleted)
                {
                    RateHistoryResponseBase response = RateHistoryResponseFactory.DeserializeResponse(rateRequest.providerName, rateRequest.termRate, rateRequest.baseRate, jsonResponseTask.Result);

                    CurrencyBL.AddCurrency(response.GetCurrencyName().ToString(), response.GetCurrencyService(), response.GetCurrencyValue());
                }
            });
        }