/// <summary> /// Проверка правильности следования этапов /// </summary> public virtual void CheckStageOrder() { bool isLastStageCalculation = true; // Имел ли предыдущий этап тип "Расчет заказа" bool isCurrentStageCalculation; // Имеет ли текущий этап тип "Расчет заказа" foreach (var stage in stages.OrderBy(x => x.OrdinalNumber)) { isCurrentStageCalculation = stage.Type == ProductionOrderBatchStageType.Calculation; if (isCurrentStageCalculation && !isLastStageCalculation) { throw new Exception(String.Format("Этапы с типом «{0}» не могут идти после других этапов.", ProductionOrderBatchStageType.Calculation.GetDisplayName())); } isLastStageCalculation = isCurrentStageCalculation; } }