예제 #1
0
        /// <summary>
        /// Вычисление и проставление полных стоимостей цены и её частей на основании подробностей цены
        /// </summary>
        /// <param name="excludedServicesID">ИД услуг, которые необходимо исключить из полной стоимости</param>
        public void CalculateTotalPrices(params int[] excludedServicesID)
        {
            if (PriceBreakdown != null)
            {
                foreach (var pricePart in PriceBreakdown)
                {
                    if (!IsExcluded(pricePart, excludedServicesID))
                    {
                        pricePart.CalculateTotalPrice();
                    }
                }

                TotalPrice = new Money(
                    PriceBreakdown.FindAll(pb => !IsExcluded(pb, excludedServicesID)).Sum(pb => pb.TotalPrice.Value),
                    PriceBreakdown[0].TotalPrice.Currency);
            }
        }
예제 #2
0
 /// <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);
     }
 }
예제 #3
0
 /// <summary>
 /// Получение всех брекдаунов цен для услуги
 /// </summary>
 /// <param name="serviceID">ИД услуги</param>
 /// <returns>Брекдауны для указанной усулги, пустой массив если ни одного не найдено</returns>
 public List <PriceBreakdown> GetServicePrice(int serviceID)
 {
     return(PriceBreakdown.FindAll(pb => pb.IsLinkedToService(serviceID)));
 }