public virtual CurrencyKurs GetKurs(string walutaZ, string walutaNa) { if (walutaZ == walutaNa) { return(new CurrencyKurs(walutaZ, walutaNa, 1)); } if (!this.Kursy.Any()) { throw new Exception($"[{this.DataKursu.Date.ToString("yyyy-MM-dd")}, {walutaZ} => {walutaNa}]: Brak kursu"); } var kurs = this.Kursy.FirstOrDefault(x => x.IsoCode_Z == walutaZ && x.IsoCode_Na == walutaNa); if (kurs != null) { return(kurs); } var kursZ = this.Kursy.FirstOrDefault(x => x.IsoCode_Z == walutaZ && x.IsoCode_Na == _baseCurrency); var kursNa = this.Kursy.FirstOrDefault(x => x.IsoCode_Z == _baseCurrency && x.IsoCode_Na == walutaNa); if (kursZ != null && kursNa != null) { kurs = new CurrencyKurs(walutaZ, walutaNa, kursZ.KursReal * kursNa.KursReal); return(kurs); } throw new Exception($"[{this.DataKursu.ToString("yyyy-MM-dd")} {walutaZ} => {walutaNa}]: Brak kursu"); }
public Money Exchange(CurrencyKurs kurs) { var value = 0m; Money ret = this.GetCopy(); if (this.Currency == kurs.IsoCode_Z) { // value = kurs.IsReversed // ? this.Amount * kurs.Kurs // : this.Amount / kurs.Kurs; // 2018-04-21: Zmiana kolejności walut w parach spowodowało konieczność zmiany działań value = kurs.IsReversed ? this.Amount / kurs.Kurs : this.Amount * kurs.Kurs; ret = new Money(value, kurs.IsoCode_Na); } else if (this.Currency == kurs.IsoCode_Na) { // value = !kurs.IsReversed // ? this.Amount * kurs.Kurs // : this.Amount / kurs.Kurs; // 2018-04-21: Zmiana kolejności walut w parach spowodowało konieczność zmiany działań value = !kurs.IsReversed ? this.Amount / kurs.Kurs : this.Amount * kurs.Kurs; ret = new Money(value, kurs.IsoCode_Z); } else { throw new Exception("Para kursów nie zawiera waluty wymienianej."); } return(ret); //return new Money(this.Amount / kurs.KursReal, kurs.IsoCode_Na); }