private IList<QuestionViewModel> LoadQuestionsFromCategory(Category category) { var questionViewModels = new List<QuestionViewModel>(); var questions = category.Questions.Where(x => x.Status == QuestionStatus.Active).OrderBy(x => x.DisplayOrder).ToArray(); for (int i = 0; i < questions.Count(); i++) { var question = questions[i]; var qvm = new QuestionViewModel { Id = question.QuestionId, Question = question.DisplayText, QuestionCode = question.QuestionCode, QuestionType = question.InputType }; if (question.InputType.ToUpper() == "DATE" || question.InputType.ToUpper() == "NUMBER" || question.InputType.ToUpper() == "TEXT") { qvm.Value = LoadSingleResponseValue(question); } qvm.DisplayLogic = question.DisplayLogic; qvm.IsRequired = question.IsRequired; qvm.IsKey = question.IsKeyQuestion; qvm.Choices = LoadQuestionChoices(question); qvm.Status = DetermineQuestionStatus(question);//question.Status; questionViewModels.Add(qvm); if (qvm.Status != QuestionStatus.Disabled && qvm.IsRequired) { RequiredQuestionIds.Add(qvm.Id.ToString(CultureInfo.InvariantCulture)); } if (qvm.DisplayLogic.IsNotNullOrEmpty() && qvm.DisplayLogic.Contains("!=")) { qvm.Status = QuestionStatus.Disabled; continue; } var responses = question.Responses.Where( response => response.QuestionnaireId == Questionnaire.QuestionnaireId && response.QuestionId == question.QuestionId); foreach (var response in responses) { if (response.IsSelected == "_NA_") { qvm.Status = QuestionStatus.Disabled; if (RequiredQuestionIds.Contains(qvm.Id.ToString(CultureInfo.InvariantCulture))) { RequiredQuestionIds.Remove(qvm.Id.ToString(CultureInfo.InvariantCulture)); } } if (!string.IsNullOrEmpty(response.Value)) { if (response.Value.Contains("Other") && response.IsSelected == "True") { RequiredQuestionIds.Add(response.QuestionId.ToString(CultureInfo.InvariantCulture) + "_Comment"); } } } AddToAnsnweredIds(question); } return questionViewModels; }