コード例 #1
0
        private string DetermineQuestionStatus(Question question)
        {
            var returnValue = QuestionStatus.Active;

            if (question.DisplayLogic.IsNotNullOrEmpty())
            {
                var displayLogic = question.DisplayLogic;
                var questionCode = question.DisplayLogic.Split(' ')[0];

                var query      = new QuestionByQuestionCode(questionCode);
                var parentCode = _repository.Find(query);

                if (parentCode != null)
                {
                    var parentResponses =
                        Questionnaire.Responses.Where(
                            x =>
                            x.QuestionnaireId == Questionnaire.QuestionnaireId && x.QuestionId == parentCode.QuestionId)
                        .Where(x => x.IsSelected == "True" || x.IsSelected == "_NA_");

                    foreach (var response in parentResponses)
                    {
                        var result = DisplayLogicEvaluator.Evaluate(questionCode, displayLogic, response.Value);
                        returnValue = result ? QuestionStatus.Disabled : QuestionStatus.Active;
                    }
                }
                else
                {
                    returnValue = QuestionStatus.Active;
                }
            }

            return(returnValue);
        }
コード例 #2
0
ファイル: HomeEditViewModel.cs プロジェクト: JaySmith/Survey
        private string DetermineQuestionStatus(Question question)
        {
            var returnValue = QuestionStatus.Active;

            if (question.DisplayLogic.IsNotNullOrEmpty())
            {
                var displayLogic = question.DisplayLogic;
                var questionCode = question.DisplayLogic.Split(' ')[0];

                var query = new QuestionByQuestionCode(questionCode);
                var parentCode = _repository.Find(query);

                if (parentCode != null)
                {
                    var parentResponses =
                        Questionnaire.Responses.Where(
                            x =>
                            x.QuestionnaireId == Questionnaire.QuestionnaireId && x.QuestionId == parentCode.QuestionId)
                            .Where(x => x.IsSelected == "True" || x.IsSelected == "_NA_");

                    foreach (var response in parentResponses)
                    {
                        var result = DisplayLogicEvaluator.Evaluate(questionCode, displayLogic, response.Value);
                        returnValue = result ? QuestionStatus.Disabled : QuestionStatus.Active;
                    }
                }
                else
                {
                    returnValue = QuestionStatus.Active;
                }
            }

            return returnValue;
        }