public static RatesResponse MapToResponse(this RatesResultModel resultModel) { return(new RatesResponse { AverageRate = resultModel.AverageRate, DateOfMaxRate = resultModel.DateOfMaxRate, DateOfMinRate = resultModel.DateOfMinRate, MaxRate = resultModel.MaxRate, MinRate = resultModel.MinRate }); }
public RatesResultModel FilterAndCompute(RatesInputModel input) { var result = new RatesResultModel { MaxRate = (double)0, MinRate = Double.MaxValue }; GetHistoryByCurrency(input.BaseCurrency); double ratesSum = 0; int existingDates = 0; foreach (var date in input.Dates) { if (!_rates.ContainsKey(input.BaseCurrency)) { continue; } if (_rates[input.BaseCurrency].Rates.TryGetValue(date, out var currencies)) { existingDates++; if (currencies.ContainsKey(input.TargetCurrency)) { if (currencies.TryGetValue(input.TargetCurrency, out var rate)) { if (result.MaxRate < rate) { result.MaxRate = rate; result.DateOfMaxRate = date; } if (result.MinRate > rate) { result.MinRate = rate; result.DateOfMinRate = date; } ratesSum += rate; } } } } if (existingDates > 0) { result.AverageRate = ratesSum / existingDates; } return(result); }