コード例 #1
0
        public async Task <List <CryptoPrice> > GetPricesForDates(CryptoCurrency baseCurrency, List <DateTime> dates,
                                                                  CryptoCurrency quoteCurrency = CryptoCurrency.USD)
        {
            var prices = _repository.GetCryptoPricesSpecificDates(baseCurrency.ToString(),
                                                                  quoteCurrency.ToString(),
                                                                  dates);

            if (prices.Count != dates.Count)
            {
                var priceDates = prices.Select(x => x.Timestamp);
                foreach (var dateTime in dates.Where(dateTime => !priceDates.Contains(dateTime) && DateTime.Today.AddMonths(-12) < dateTime))
                {
                    var providerPrices = await _cryptoProxy.GetCryptoPrices(baseCurrency,
                                                                            quoteCurrency,
                                                                            dateTime,
                                                                            dateTime);

                    _repository.SavePrices(providerPrices);

                    prices.AddRange(providerPrices);
                }
            }

            return(prices.OrderByDescending(x => x.Timestamp).ToList());
        }