コード例 #1
0
        public async Task <CurrencyRateQuery[]> GetAsync(CurrencyRateQueryDto queryDto)
        {
            if (queryDto.ApiKey is null)
            {
                throw new NullApiKeyException();
            }

            if (!await apiKeyService.IsApiKeyValidAsync(queryDto.ApiKey))
            {
                throw new InvalidApiKeyException(queryDto.ApiKey);
            }

            return(queryDto.CurrencyCodes
                   .SelectMany(currencyPair =>
            {
                var source = currencyPair.Key;
                var target = currencyPair.Value;
                var startDate = queryDto.StartDate == default ? DateTime.Today : queryDto.StartDate;
                var endDate = queryDto.EndDate == default ? DateTime.Today : queryDto.EndDate;

                return DateHelper.EachDay(startDate.GetRecentWorkDay(), endDate).Select(date => new CurrencyRateQuery(source, target, date));
            })
                   .ToArray());
        }