private static void TryToAddToGraduationDictionary(Dictionary<UInt32, GraduationInfo> Dictionary, GraduationInfo Item, GraduationPeriods Period) { if (Item != null && (Item.Period == Period /*|| Period == GraduationPeriods.Inappllicable убрано просто так - нигде не используется*/) && !Dictionary.ContainsKey(Item.ID)) Dictionary.Add(Item.ID, Item); }
/// <summary>Возвращает список градаций скидок для периодов тарифов, используемых договором. В списке гарантированно нет повторяющихся градаций. /// Будут возвращены градации с указанным периодом</summary> internal List<GraduationInfo> GetGraduationsForPeriod(GraduationPeriods Period) { // проходимся по всем градациям всех тарифов договора var ContractGraduations = new Dictionary<UInt32, GraduationInfo>(); foreach (var TariffPeriod in TariffPeriods) { // градации в скидках на чек if (TariffPeriod.ReceiptDiscount.GraduationGroup != null) { foreach (var Graduation in TariffPeriod.ReceiptDiscount.GraduationGroup.Graduations) TryToAddToGraduationDictionary(ContractGraduations, Graduation, Period); } else if (TariffPeriod.ReceiptDiscount.Graduation != null) TryToAddToGraduationDictionary(ContractGraduations, TariffPeriod.ReceiptDiscount.Graduation, Period); // градации в скидках на позиции чека foreach (var PurseDiscount in TariffPeriod.PurseDiscounts) { if (PurseDiscount.GraduationGroup != null) { foreach (var Graduation in PurseDiscount.GraduationGroup.Graduations) TryToAddToGraduationDictionary(ContractGraduations, Graduation, Period); } else if (PurseDiscount.Graduation != null) TryToAddToGraduationDictionary(ContractGraduations, PurseDiscount.Graduation, Period); } // градации в бонусах foreach (var PurseBonus in TariffPeriod.PurseBonuses) { if (PurseBonus.GraduationGroup != null) { foreach (var Graduation in PurseBonus.GraduationGroup.Graduations) TryToAddToGraduationDictionary(ContractGraduations, Graduation, Period); } else if (PurseBonus.Graduation != null) TryToAddToGraduationDictionary(ContractGraduations, PurseBonus.Graduation, Period); } } return ContractGraduations.Values.ToList(); }