public string GetFareFamiliesNames() { if ((FareFamiliesDescriptions == null || !FareFamiliesDescriptions.Any()) || (PriceBreakdown == null || !PriceBreakdown.Any())) { return(null); } var result = new StringBuilder(); foreach (var price in PriceBreakdown) { var tariffs = price.PassengerTypePriceBreakdown.SelectMany(pf => pf.Tariffs).Cast <AirTariff>(); foreach (var tariff in tariffs) { var ffDescr = FareFamiliesDescriptions.Find(d => d.ID == tariff.FareFamilyDescID); if (ffDescr != null) { result.Append(ffDescr.Name); } result.Append(';'); } } return(result.ToString()); }
/// <summary> /// Получение эквивалентной стоимости для 1 пассажира определённого типа /// </summary> /// <param name="passengerID">ИД пассажира, для которого требуется получить стоимость</param> /// <returns>Стоимость для указанного пассажира. null если нет цены для такого пассажира</returns> public Money GetEquivePrice(int passengerID) { if (PriceBreakdown != null && PriceBreakdown.Any(pi => pi.PassengerTypePriceBreakdown != null && pi.PassengerTypePriceBreakdown.Any(pf => pf.IsLinkedToTraveller(passengerID)))) { Money result = null; foreach (var price in PriceBreakdown.FindAll(pb => pb.PassengerTypePriceBreakdown != null && pb.PassengerTypePriceBreakdown.Any(pf => pf.IsLinkedToTraveller(passengerID)))) { var passTypePrice = price.PassengerTypePriceBreakdown.Find(pf => pf.IsLinkedToTraveller(passengerID)); if (result == null) { result = passTypePrice.EquiveFare; } else { result += passTypePrice.EquiveFare; } } return(result); } else { return(null); } }