예제 #1
0
        /// <summary>
        /// Get next page depending depending on the
        /// branching rules
        /// </summary>
        public int GetNextPage(int surveyId, int pageNumber, VoterAnswersData voterAnswers, bool evaluateScores)
        {
            BranchingRuleData surveyPageBranchingRules = new Surveys().GetSurveyPageBranchingRules(surveyId, pageNumber);

            if (surveyPageBranchingRules.BranchingRules.Rows.Count <= 0)
            {
                pageNumber++;
                return(pageNumber);
            }
            int num = pageNumber + 1;

            DataRow[] rowArray = null;
            foreach (BranchingRuleData.BranchingRulesRow row in surveyPageBranchingRules.BranchingRules.Rows)
            {
                int num2 = evaluateScores ? new Question().GetQuestionAnswersScore(row.QuestionId, voterAnswers) : 0;
                if ((evaluateScores && (row.ConditionalOperator == 3)) && (num2 == row.Score))
                {
                    return(row.TargetPageNumber);
                }
                if ((evaluateScores && (row.ConditionalOperator == 4)) && (num2 < row.Score))
                {
                    return(row.TargetPageNumber);
                }
                if ((evaluateScores && (row.ConditionalOperator == 5)) && (num2 > row.Score))
                {
                    return(row.TargetPageNumber);
                }
                if ((evaluateScores && (row.ConditionalOperator == 6)) && ((num2 >= row.Score) && (num2 <= row.ScoreMax)))
                {
                    return(row.TargetPageNumber);
                }
                if (!row.IsAnswerIdNull() && !row.IsTextFilterNull())
                {
                    string expression = this.EscapeFilterString(row.TextFilter);
                    if ((!row.IsExpressionOperatorNull() && (row.ExpressionOperator != 2)) && Information.IsDate(expression))
                    {
                        expression = "#" + expression + "#";
                    }
                    else if ((row.ExpressionOperator != 2) && !Information.IsNumeric(expression))
                    {
                        expression = "'" + expression + "'";
                    }
                    try
                    {
                        switch (row.ExpressionOperator)
                        {
                        case 1:
                            rowArray = voterAnswers.VotersAnswers.Select(string.Concat(new object[] { "AnswerId = ", row.AnswerId, " AND AnswerText = ", expression }));
                            goto Label_0319;

                        case 3:
                            rowArray = voterAnswers.VotersAnswers.Select(string.Concat(new object[] { "AnswerId = ", row.AnswerId, " AND AnswerText > ", expression }));
                            goto Label_0319;

                        case 4:
                            rowArray = voterAnswers.VotersAnswers.Select(string.Concat(new object[] { "AnswerId = ", row.AnswerId, " AND AnswerText < ", expression }));
                            goto Label_0319;
                        }
                        rowArray = voterAnswers.VotersAnswers.Select(string.Concat(new object[] { "AnswerId = ", row.AnswerId, " AND AnswerText like '%", expression, "%'" }));
                    }
                    catch (EvaluateException)
                    {
                    }
                }
                else if (!row.IsAnswerIdNull())
                {
                    rowArray = voterAnswers.VotersAnswers.Select("AnswerId=" + row.AnswerId);
                }
                else if (row.IsAnswerIdNull())
                {
                    rowArray = voterAnswers.VotersAnswers.Select("QuestionId=" + row.QuestionId);
                }
                else
                {
                    rowArray = null;
                }
Label_0319:
                if ((((rowArray != null) && (row.ConditionalOperator == 1)) && (rowArray.Length > 0)) || ((row.ConditionalOperator == 2) && (rowArray.Length == 0)))
                {
                    return(row.TargetPageNumber);
                }
            }
            return(num);
        }
예제 #2
0
        /// <summary>
        /// Get conditional thanks message based
        /// on user's answers
        /// </summary>
        public string GetThanksMessage(int surveyId, VoterAnswersData surveyAnswers, bool evaluateScores)
        {
            MessageConditionData surveyMessageConditions = new Surveys().GetSurveyMessageConditions(surveyId);

            if ((surveyMessageConditions.MessageConditions.Rows.Count > 0) && (surveyAnswers.Voters.Count > 0))
            {
                DataRow[] rowArray        = null;
                string    thankYouMessage = null;
                int       scoreTotal      = evaluateScores ? this.GetScoreTotal(surveyAnswers) : 0;
                foreach (MessageConditionData.MessageConditionsRow row in surveyMessageConditions.MessageConditions.Rows)
                {
                    if ((evaluateScores && (row.MessageConditionalOperator == 3)) && (scoreTotal < row.Score))
                    {
                        thankYouMessage = row.ThankYouMessage;
                    }
                    if ((evaluateScores && (row.MessageConditionalOperator == 2)) && (scoreTotal == row.Score))
                    {
                        thankYouMessage = row.ThankYouMessage;
                    }
                    if ((evaluateScores && (row.MessageConditionalOperator == 4)) && (scoreTotal > row.Score))
                    {
                        thankYouMessage = row.ThankYouMessage;
                    }
                    if ((evaluateScores && (row.MessageConditionalOperator == 5)) && ((scoreTotal >= row.Score) && (scoreTotal <= row.ScoreMax)))
                    {
                        thankYouMessage = row.ThankYouMessage;
                    }
                    if (row.MessageConditionalOperator != 1)
                    {
                        continue;
                    }
                    int num2 = evaluateScores ? new Question().GetQuestionAnswersScore(row.QuestionId, surveyAnswers) : 0;
                    if ((evaluateScores && (row.ConditionalOperator == 3)) && (num2 == row.Score))
                    {
                        thankYouMessage = row.ThankYouMessage;
                    }
                    if ((evaluateScores && (row.ConditionalOperator == 4)) && (num2 < row.Score))
                    {
                        thankYouMessage = row.ThankYouMessage;
                    }
                    if ((evaluateScores && (row.ConditionalOperator == 5)) && (num2 > row.Score))
                    {
                        thankYouMessage = row.ThankYouMessage;
                    }
                    if ((evaluateScores && (row.ConditionalOperator == 6)) && ((num2 >= row.Score) && (num2 <= row.ScoreMax)))
                    {
                        thankYouMessage = row.ThankYouMessage;
                    }
                    if (!row.IsAnswerIdNull() && !row.IsTextFilterNull())
                    {
                        string expression = this.EscapeFilterString(row.TextFilter);
                        if ((!row.IsExpressionOperatorNull() && (row.ExpressionOperator != 2)) && Information.IsDate(expression))
                        {
                            expression = "#" + expression + "#";
                        }
                        else if ((row.ExpressionOperator != 2) && !Information.IsNumeric(expression))
                        {
                            expression = "'" + expression + "'";
                        }
                        try
                        {
                            switch (row.ExpressionOperator)
                            {
                            case 1:
                                rowArray = surveyAnswers.VotersAnswers.Select(string.Concat(new object[] { "AnswerId = ", row.AnswerId, " AND AnswerText = ", expression }));
                                goto Label_03F9;

                            case 3:
                                rowArray = surveyAnswers.VotersAnswers.Select(string.Concat(new object[] { "AnswerId = ", row.AnswerId, " AND AnswerText > ", expression }));
                                goto Label_03F9;

                            case 4:
                                rowArray = surveyAnswers.VotersAnswers.Select(string.Concat(new object[] { "AnswerId = ", row.AnswerId, " AND AnswerText < ", expression }));
                                goto Label_03F9;
                            }
                            rowArray = surveyAnswers.VotersAnswers.Select(string.Concat(new object[] { "AnswerId = ", row.AnswerId, " AND AnswerText like '%", expression, "%'" }));
                        }
                        catch (EvaluateException)
                        {
                        }
                    }
                    else if (!row.IsAnswerIdNull())
                    {
                        rowArray = surveyAnswers.VotersAnswers.Select("AnswerId=" + row.AnswerId);
                    }
                    else if (row.IsAnswerIdNull())
                    {
                        rowArray = surveyAnswers.VotersAnswers.Select("QuestionId=" + row.QuestionId);
                    }
                    else
                    {
                        rowArray = null;
                    }
Label_03F9:
                    if ((((rowArray != null) && (row.ConditionalOperator == 1)) && (rowArray.Length > 0)) || ((row.ConditionalOperator == 2) && (rowArray.Length == 0)))
                    {
                        thankYouMessage = row.ThankYouMessage;
                        break;
                    }
                }
                if (thankYouMessage != null)
                {
                    return(ParseThankYouMessage(thankYouMessage, scoreTotal));
                }
            }
            return(null);
        }
예제 #3
0
 /// <summary>
 /// Method to handle voter data once it has been stored in the database
 /// </summary>
 /// <param name="voter">Voter information as saved in the database and its answers</param>
 public void ProcessVoterData(VoterAnswersData voter)
 {
 }