/// <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);
            }
        }