Пример #1
0
        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");
        }
Пример #2
0
        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);
        }