public Money(Money money) { Value = money.Value; Currency = money.Currency; CurrencyConverter = money.CurrencyConverter; }
/// <summary> /// Вычисление и проставление полных стоимостей цены и её частей на основании подробностей цены /// </summary> public void CalculateTotalPrices() { if (TotalPrice == null && PriceBreakdown != null) { foreach (var pricePart in PriceBreakdown) { if (pricePart.TotalPrice == null && pricePart.PassengerTypePriceBreakdown != null) { pricePart.TotalPrice = new Money(pricePart.PassengerTypePriceBreakdown.Sum(passTypePrice => passTypePrice.TotalFare.Value * passTypePrice.TravellerRef.Count), pricePart.PassengerTypePriceBreakdown[0].TotalFare.Currency); } } TotalPrice = new Money(PriceBreakdown.Sum(pricePart => pricePart.TotalPrice.Value), PriceBreakdown[0].TotalPrice.Currency); } }
/// <summary> /// Приводит (если необходимо) валюту второго аргуманта к валюте первого и возращает новый объект с нужной валютой. /// </summary> /// <param name="sample">То К ЧЕМУ мы будем приводить</param> /// <param name="modifiable">То, ЧЬЮ валюту мы будем приводить</param> /// <returns>Новый объект на базе второго параметра, но приведённого к валюте первого</returns> private static void CorrectCurrency(Money sample, ref Money modifiable) { if (sample.Currency == null) { sample.Currency = modifiable.Currency; } else if (!sample.Currency.Equals(modifiable.Currency)) { modifiable = modifiable.ConvertToCurrency(sample.Currency); } }