/// <summary> /// This method is to execute historical date currency conversion /// </summary> /// <returns></returns> public async Task HistoricalCurrencyConversion() { CurrencyBase currencyBase = new CurrencyBase(); Console.Clear(); Console.BackgroundColor = ConsoleColor.DarkBlue; Console.WriteLine("-------------------------Fetch currency data by date-----------------"); Console.ResetColor(); string inputBaseCurrencyMessage = "Please enter base currency data in 3 character ISO format[Example:'EUR']"; currencyBase.BaseCurrency = GetCurrencyCode(inputBaseCurrencyMessage); string baseCurrencyMessage = "Please enter amount in {0}:" + currencyBase.BaseCurrency; currencyBase.BaseAmount = ReadDouble(baseCurrencyMessage); string inputConvertedCurrencyMessage = "Please enter converted currency data in 3 character ISO format[Example:'EUR']"; currencyBase.ConvertCurrency = GetCurrencyCode(inputConvertedCurrencyMessage); Console.WriteLine("Do you want to enter historical date?(Y/N)"); if (Console.ReadKey().Key == ConsoleKey.Y) { string dateMessage = "Please enter date in YYYY-MM-DD format"; currencyBase.ExchangeRateDate = ReadDatetime(dateMessage); } else { currencyBase.ExchangeRateDate = DateTime.Now; } APIResponse aPIResponse = await _aPIInteraction.GetCurrencyConversionDataByDate(currencyBase, _configuration.GetValue <string>("URL"), _configuration.GetValue <string>("AccessKey")); ProcessCurrencyCalculationResponse(aPIResponse, currencyBase); }
/// <summary> /// Fetches the rates based on historical date /// </summary> /// <param name="baseCur"></param> /// <param name="toCur"></param> /// <param name="baseAmount"></param> /// <param name="date"></param> /// <returns></returns> public async Task <ExchangeAPIResponse> GetHistoricalRates(string baseCur, string toCur, string baseAmount, string date) { ExchangeAPIResponse exchangeResponse = new ExchangeAPIResponse(); CurrencyBase currencyBase = new CurrencyBase(); currencyBase.BaseAmount = _calculationHelper.CheckIfDouble(baseAmount); DateTime?checkDate = _calculationHelper.CheckIfDatetime(date); if (checkDate != null && !double.IsNaN(currencyBase.BaseAmount)) { currencyBase.BaseCurrency = baseCur; currencyBase.ConvertCurrency = toCur; currencyBase.ExchangeRateDate = Convert.ToDateTime(checkDate); APIResponse aPIResponse = await _aPIInteraction.GetCurrencyConversionDataByDate(currencyBase, _configuration.GetValue <string>("URL"), _configuration.GetValue <string>("AccessKey")); return(SendLatestRatesResponse(aPIResponse, currencyBase)); } else { exchangeResponse.IsSuccess = false; exchangeResponse.Description = "Parameters passed are not correct"; exchangeResponse.StatusCode = HttpStatusCode.BadRequest; return(exchangeResponse); } }