コード例 #1
0
        public void Validate(Questionnaire questionnaire)
        {
            //проверяем уникальность имен вопросов
            var names = new HashSet <string>();

            foreach (var q in questionnaire)
            {
                if (!names.Add(q.Id))
                {
                    throw new Exception("Дублируется имя вопроса " + q.Id);
                }
            }

            //проверяем уникальность кодов альтернатив и их число
            foreach (var quest in questionnaire.Where(q => q.QuestType.Equals(QuestType.SingleAnswer)))
            {
                var codes = new HashSet <int>();

                if (!quest.Any())
                {
                    throw new Exception("В вопросе " + quest.Id + " нет альтернатив");
                }

                foreach (var questionAlternative in quest)
                {
                    if (!codes.Add(questionAlternative.Code))
                    {
                        throw new Exception("В вопросе " + quest.Id + " дублируется код альтернативы " + questionAlternative.Code);
                    }
                }
            }
        }
コード例 #2
0
 /// <summary>
 /// Проверяет, есть ли уже вопрос в опроснике с данным выражением
 /// </summary>
 /// <param name="questionnaire"></param>
 /// <param name="condition"></param>
 /// <returns></returns>
 public bool CheckQuestionByConditionIfExists(Questionnaire questionnaire, Condition condition)
 {
     return(questionnaire.Where(q => q.Condition != null).Any(q => q.Condition.Equals(condition)));
 }