int GenerateFilter()
        {
            int questionId = Convert.ToInt32(ddlAutoQuestions.SelectedValue);

            if (questionId == -1)
            {
                return(0);
            }
            var q = new Questions().GetAnswerableQuestionList(SurveyId).Questions.Single(x => x.QuestionId == questionId);
            var parentFilterId = Convert.ToInt32(ddlAutoFilterParent.SelectedValue);

            FilterData.FiltersRow p = parentFilterId == 0
                ? new Filters().GetEmptyFilter().Filters.FindByFilterId(parentFilterId)
                : new Filters().GetFilterById(parentFilterId).Filters.FindByFilterId(parentFilterId);
            int filterCount = 0;

            foreach (AnswerData.AnswersRow a in new Answers().GetAnswersList(questionId).Answers)
            {
                if (((AnswerTypeEnum)a.AnswerTypeId) == AnswerTypeEnum.SelectionTextType)
                {
                    AddFilter(q, a, p);
                    filterCount++;
                }
            }
            return(filterCount);
        }
        private string GetFilterPart(FilterData.FiltersRow f, string splitChar)
        {
            var split = f.Description.Split(new[] { splitChar[0] });

            return(split.Any()
                ? split[0]
                : f.Description);
        }
 private void CreatefilterButton_Click(object sender, System.EventArgs e)
 {
     if (FilterNameTextBox.Text.Length == 0)
     {
         MessageLabel.Visible = true;
         ((PageBase)Page).ShowErrorMessage(MessageLabel, ((PageBase)Page).GetPageResource("InvalidFilterDescriptionMessage"));
     }
     else
     {
         FilterData            filterData = new FilterData();
         FilterData.FiltersRow filterRow  = filterData.Filters.NewFiltersRow();
         filterRow.LogicalOperatorTypeID = short.Parse(LogicalOperatorDropDownList.SelectedValue);
         filterRow.Description           = FilterNameTextBox.Text;
         filterRow.SurveyId       = SurveyId;
         filterRow.ParentFilterId = int.Parse(ParentFilterNameDropDownList.SelectedValue);
         filterData.Filters.AddFiltersRow(filterRow);
         new Filter().AddFilter(filterData);
         UINavigator.NavigateToFilterEditor(SurveyId, ((PageBase)Page).MenuIndex);
     }
 }
        void AddFilter(QuestionData.QuestionsRow q, AnswerData.AnswersRow a, FilterData.FiltersRow p)
        {
            FilterData filterData = new FilterData();

            FilterData.FiltersRow filterRow = filterData.Filters.NewFiltersRow();
            filterRow.LogicalOperatorTypeID = short.Parse(LogicalOperatorDropDownList.SelectedValue);
            filterRow.Description           = FilterName(q, a, p);
            filterRow.SurveyId       = SurveyId;
            filterRow.ParentFilterId = p.FilterId;
            filterData.Filters.AddFiltersRow(filterRow);
            new Filter().AddFilter(filterData);

            FilterRuleData filterRuleData = new FilterRuleData();

            FilterRuleData.FilterRulesRow filterRuleRow = filterRuleData.FilterRules.NewFilterRulesRow();
            filterRuleRow.QuestionId = q.QuestionId;
            filterRuleRow.AnswerId   = a.AnswerId;
            filterRuleRow.FilterId   = filterRow.FilterId;
            filterRuleData.FilterRules.AddFilterRulesRow(filterRuleRow);
            new Filter().AddRule(filterRuleData);
        }
        public string FilterName(QuestionData.QuestionsRow q, AnswerData.AnswersRow a, FilterData.FiltersRow f)
        {
            const string splitChar = "|";

            return(f.FilterId == 0
                ? FilterName(q, a, splitChar)
                : FilterName(q, a, f, splitChar));
        }
 public string FilterName(QuestionData.QuestionsRow q, AnswerData.AnswersRow a, FilterData.FiltersRow f, string splitChar)
 {
     return(GetSubstr(GetFilterPart(f, splitChar)) + splitChar + FilterName(q, a, splitChar));
 }