public CurrencyConversion(string fromCurrencyISOName, string toCurrencyISOName) { Argument.NotEmpty(fromCurrencyISOName, "fromCurrencyISOName"); Argument.NotEmpty(toCurrencyISOName, "toCurrencyISOName"); Argument.Satisfies(fromCurrencyISOName, x => x != toCurrencyISOName, "toCurrencyISOName", "Can't create conversion to the same currency."); _fromCurrencyISOName = fromCurrencyISOName; _toCurrencyISOName = toCurrencyISOName; _exchangeRateKey = new ExchangeRateKey(fromCurrencyISOName, toCurrencyISOName); }
public IList <ExchangeRate> GetActualForExchange(ExchangeRateKey key) { return(EnsureRepositoryException(() => { var rate1 = Context.Set <ExchangeRate>() .OrderByDescending(x => x.TimestampUtc) .FirstOrDefault(x => x.Base.ISOName == key.FirstCurrencyISOName && x.Foreign.ISOName == key.SecondCurrencyISOName && x.IsActual); var rate2 = Context.Set <ExchangeRate>() .OrderByDescending(x => x.TimestampUtc) .FirstOrDefault(x => x.Base.ISOName == key.SecondCurrencyISOName && x.Foreign.ISOName == key.FirstCurrencyISOName && x.IsActual); var list = new List <ExchangeRate>(); if (rate1 != null) { list.Add(rate1); } if (rate2 != null) { list.Add(rate2); } return list; })); }