public HistoricalPriceData GetLastestHistoricalPriceFetchIfNotAvailable(string stockCode)
		{
			var historicalData = GetLatestHistoricalPrice(stockCode);

			var dataExistsInDatabase = historicalData != null &&  DateTime.Today.AddDays(-1) > historicalData.Date;
			if (dataExistsInDatabase)
			{
				return historicalData;
			}

			var yahooFinanceApi = new YahooFinanceClient();

			List<YahooHistoricalPriceData> yahooData;

			if (GetHistoricalPriceAny(stockCode))
			{
				yahooData = yahooFinanceApi.GetDailyHistoricalPriceData(stockCode, DateTime.Today, DateTime.Today.AddMonths(-1));
			}
			else
			{
				yahooData = yahooFinanceApi.GetDailyHistoricalPriceData(stockCode);
			}

			var historicalPriceData = new List<HistoricalPriceData>();

			foreach (var priceData in yahooData)
			{
				var data = new HistoricalPriceData()
				{
					Symbol = stockCode,
					DataSource = "YAHOO",
					Date = priceData.Date,
					Open = priceData.Open,
					High = priceData.High,
					Low = priceData.Low,
					Close = priceData.Close,
					Volume = priceData.Volume,
					AdjClose = priceData.AdjClose,
				};

				historicalPriceData.Add(data);

				if (!GetHistoricalPriceExists(data))
				{
					AddHistoricalPrice(data);
				}
			}

			SaveAll();

			return GetLatestHistoricalPrice(stockCode);
		}
		public void AddHistoricalPrice(HistoricalPriceData historicalPriceData)
		{
			_context.HistoricalPrices.Add(historicalPriceData);
		}
		public bool GetHistoricalPriceExists(HistoricalPriceData stock)
		{
			return _context.HistoricalPrices.Any(price => price.Symbol == stock.Symbol && price.Date == stock.Date && price.DataSource == stock.DataSource);
		}