/// <summary>
        /// Visibles the questions for group.
        /// </summary>
        /// <param name="group">The group.</param>
        /// <returns></returns>
        public List <UPQuestionnaireQuestion> VisibleQuestionsForGroup(UPQuestionnaireQuestionGroup group)
        {
            List <UPQuestionnaireQuestion> questions = new List <UPQuestionnaireQuestion>();

            foreach (UPSurveyAnswer answer in this.AnswerArray)
            {
                if (answer.Question.QuestionnaireGroup == group)
                {
                    questions.Add(answer.Question);
                }
            }

            return(questions);
        }
        private void QuestionsFromResult(UPCRMResult result)
        {
            int count = result.RowCount;
            List <UPQuestionnaireQuestion> questions = new List <UPQuestionnaireQuestion>(count);
            Dictionary <string, UPQuestionnaireQuestion>      questionDictionary      = new Dictionary <string, UPQuestionnaireQuestion>(count);
            Dictionary <string, UPQuestionnaireQuestionGroup> questionGroupDictionary = new Dictionary <string, UPQuestionnaireQuestionGroup>();
            Dictionary <string, UPQuestionnaireQuestion>      questionRecordIdentificationDictionary = new Dictionary <string, UPQuestionnaireQuestion>(count);
            List <UPQuestionnaireQuestionGroup> questionGroupArray = new List <UPQuestionnaireQuestionGroup>();
            UPQuestionnaireQuestionGroup        questionGroup      = null;
            List <UPQuestionnaireQuestion>      questionArray      = new List <UPQuestionnaireQuestion>(count);

            for (int i = 0; i < count; i++)
            {
                UPQuestionnaireQuestion question = new UPQuestionnaireQuestion((UPCRMResultRow)result.ResultRowAtIndex(i), this);
                questionArray.Add(question);
            }

            questionArray = questionArray.OrderBy(x => x.QuestionSortKey).ToList();

            List <UPQuestionnaireQuestion> foreignFieldQuestions = null;

            foreach (UPQuestionnaireQuestion question in questionArray)
            {
                if (question.StartsNewGroup)
                {
                    questionGroup = new UPQuestionnaireQuestionGroup(question);
                    questionGroupArray.Add(questionGroup);
                    questionGroupDictionary[question.QuestionId] = questionGroup;
                    question.Hide = true;
                    question.QuestionnaireGroup = questionGroup;
                    continue;
                }

                if (questionGroup == null)
                {
                    questionGroup = new UPQuestionnaireQuestionGroup(this);
                    questionGroupArray.Add(questionGroup);
                    questionGroupDictionary[question.QuestionId] = questionGroup;
                }

                questionGroup.AddQuestion(question);
                question.QuestionnaireGroup = questionGroup;
                if (!string.IsNullOrEmpty(question.QuestionId))
                {
                    question.QuestionIndex = questions.Count;
                    if (!questionDictionary.ContainsKey(question.QuestionId))
                    {
                        questions.Add(question);
                        questionDictionary[question.QuestionId] = question;
                        if (!string.IsNullOrEmpty(question.RecordIdentification))
                        {
                            questionRecordIdentificationDictionary[question.RecordIdentification] = question;
                        }

                        if (question.FieldInfo != null && (question.Read || question.Save))
                        {
                            if (foreignFieldQuestions == null)
                            {
                                foreignFieldQuestions = new List <UPQuestionnaireQuestion> {
                                    question
                                };
                            }
                            else
                            {
                                foreignFieldQuestions.Add(question);
                            }
                        }
                    }
                }
            }

            this.ForeignFieldQuestions           = foreignFieldQuestions;
            this.Questions                       = questions;
            this.QuestionsById                   = questionDictionary;
            this.QuestionsGroupById              = questionGroupDictionary;
            this.QuestionGroups                  = questionGroupArray;
            this.QuestionsByRecordIdentification = questionRecordIdentificationDictionary;
            this.currentQuery                    = new UPContainerMetaInfo(this.Manager.QuestionAnswersSearchAndList, this.filterParameters);
            this.currentQuery.SetLinkRecordIdentification(this.RecordIdentification);
            this.loadStep = 2;
            this.currentQuery.Find(this.requestOption, this);
        }
Beispiel #3
0
 /// <summary>
 /// Visibles the questions for group.
 /// </summary>
 /// <param name="questionnaireGroup">The questionnaire group.</param>
 /// <returns></returns>
 public List <UPQuestionnaireQuestion> VisibleQuestionsForGroup(UPQuestionnaireQuestionGroup questionnaireGroup)
 {
     return(this.SurveyPath.VisibleQuestionsForGroup(questionnaireGroup));
 }