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); }
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; }