/// <summary>
        /// Store the answers received in a
        /// temporary storage
        /// </summary>
        /// <param name="sender">The question that raised the event</param>
        /// <param name="e">Answers posted with the question</param>
        protected virtual void OnAnswerPost(Object sender, QuestionItemAnswersEventArgs e)
        {
            int voterId = _voterAnswers.Voters[0].VoterId;

            foreach (PostedAnswerData postedAnswer in e.Answers)
            {
                VoterAnswersData.VotersAnswersRow voterAnswer = updatedAnswerSet.VotersAnswers.NewVotersAnswersRow();
                voterAnswer.VoterId                 = voterId;
                voterAnswer.AnswerId                = postedAnswer.AnswerId;
                voterAnswer.QuestionId              = postedAnswer.Item.QuestionId;
                voterAnswer.AnswerText              = postedAnswer.FieldText;
                voterAnswer.SectionNumber           = postedAnswer.SectionNumber;
                updatedAnswerSet.EnforceConstraints = false;
                updatedAnswerSet.VotersAnswers.AddVotersAnswersRow(voterAnswer);
            }
        }
示例#2
0
        /// <summary>
        /// A new section has been requested for edit
        /// Show a "new section" area with the section's answers
        /// </summary>
        protected virtual void AnswersGrid_EditSection(object sender, SectionAnswersItemEventArgs e)
        {
            _sectionTable.Controls.Clear();

            if (e.SectionAnswers != null)
            {
                PostedAnswerDataCollection postedAnswers = new PostedAnswerDataCollection();
                foreach (GridAnswerData answer in e.SectionAnswers)
                {
                    if (VoterAnswersState == null)
                    {
                        VoterAnswersData voterAnswersData = new VoterAnswersData();
                        voterAnswersData.EnforceConstraints = false;
                        VoterAnswersState = voterAnswersData.VotersAnswers;
                    }

                    VoterAnswersData.VotersAnswersRow voterAnswer = VoterAnswersState.NewVotersAnswersRow();
                    voterAnswer.AnswerId      = answer.AnswerId;
                    voterAnswer.QuestionId    = QuestionId;
                    voterAnswer.SectionNumber = -1;
                    voterAnswer.AnswerText    = answer.FieldText;
                    voterAnswer.VoterId       = -1;
                    VoterAnswersState.AddVotersAnswersRow(voterAnswer);
                }
            }

            // Dont use any default answers as we have
            // setup an existing answer set
            EnableAnswersDefault = false;

            AddSection(-1, 0);
            SectionCount  = 0;
            TargetSection = int.Parse(e.SectionNumber.ToString());
            AddSubmitSectionButtons(true);
            GridMode = SectionGridMode.Edit;
        }
示例#3
0
        /// <summary>
        /// Generates the answers list for the question
        /// </summary>
        /// <param name="questionId"></param>
        /// <param name="onlyAnswered">show only answers that have been answered</param>
        string GenerateAnswersReport(int questionId, bool onlyAnswered, int sectionNumber)
        {
            StringBuilder answersReport = new StringBuilder();

            AnswerData questionAnswers   = new Answers().GetAnswers(questionId, null);
            int        longestTextLength = GetLongestAnswerLength(questionAnswers);

            foreach (AnswerData.AnswersRow answer in questionAnswers.Answers.Rows)
            {
                AnswerTypeMode typeMode = (AnswerTypeMode)answer.TypeMode;

                VoterAnswersData.VotersAnswersRow voterAnswer = _voterAnswers.VotersAnswers.FindByVoterIdAnswerIdSectionNumber(_voterAnswers.Voters[0].VoterId, answer.AnswerId, sectionNumber);
                string answerText = new PipeManager().PipeValuesInText(questionId, answer.AnswerText, _voterAnswers.VotersAnswers, null);

                if (voterAnswer != null)
                {
                    // Check answer type
                    if ((((typeMode & AnswerTypeMode.Field) > 0) ||
                         ((typeMode & AnswerTypeMode.Custom) > 0) ||
                         ((typeMode & AnswerTypeMode.DataSource) > 0)) &&
                        ((typeMode & AnswerTypeMode.Selection) == 0))
                    {
                        if (voterAnswer.AnswerText.Length > 0)
                        {
                            answersReport.Append(" " + answerText + GenerateMissingSpaces(answerText.Length, longestTextLength) + " " + voterAnswer.AnswerText + Environment.NewLine + "<br />");
                        }
                        else if (!onlyAnswered)
                        {
                            answersReport.Append(" " + answerText + GenerateMissingSpaces(answerText.Length, longestTextLength) + " " + ResourceManager.GetString("AnswerNotAnsweredMessage") + Environment.NewLine + "<br />");
                        }
                    }
                    else if (((AnswerTypeMode)answer.TypeMode & AnswerTypeMode.Field) > 0 &&
                             ((AnswerTypeMode)answer.TypeMode & AnswerTypeMode.Selection) > 0)
                    {
                        answersReport.Append(" " + answerText + GenerateMissingSpaces(answerText.Length, longestTextLength) + " [x] " + voterAnswer.AnswerText + Environment.NewLine + "<br />");
                        _questionScore += answer.ScorePoint;
                    }
                    else if (((AnswerTypeMode)typeMode & AnswerTypeMode.Upload) > 0)
                    {
                        answersReport.Append(" " + answerText + GenerateMissingSpaces(answerText.Length, longestTextLength) + " " + GenerateFileList(voterAnswer.AnswerText) + Environment.NewLine + "<br />");
                    }

                    else
                    {
                        answersReport.Append(" " + answerText + GenerateMissingSpaces(answerText.Length, longestTextLength) + " [x]" + Environment.NewLine + "<br />");
                        _questionScore += answer.ScorePoint;
                    }
                }
                else if (!onlyAnswered)
                {
                    // Check answer type
                    if ((((typeMode & AnswerTypeMode.Field) > 0) ||
                         ((typeMode & AnswerTypeMode.Custom) > 0) ||
                         ((typeMode & AnswerTypeMode.DataSource) > 0)) &&
                        ((typeMode & AnswerTypeMode.Selection) == 0))
                    {
                        answersReport.Append(" " + answerText + GenerateMissingSpaces(answerText.Length, longestTextLength) + " " + ResourceManager.GetString("AnswerNotAnsweredMessage") + Environment.NewLine + "<br />");
                    }
                    else if (((AnswerTypeMode)answer.TypeMode & AnswerTypeMode.Field) > 0 &&
                             ((AnswerTypeMode)answer.TypeMode & AnswerTypeMode.Selection) > 0)
                    {
                        answersReport.Append(" " + answerText + GenerateMissingSpaces(answerText.Length, longestTextLength) + " [] " + ResourceManager.GetString("AnswerNotAnsweredMessage") + Environment.NewLine + "<br />");
                    }
                    else
                    {
                        answersReport.Append(" " + answerText + GenerateMissingSpaces(answerText.Length, longestTextLength) + " []" + Environment.NewLine + "<br />");
                    }
                }
            }

            return(answersReport.ToString());
        }
示例#4
0
        private void BindMatrix(DataView childQuestions, PlaceHolder container, int sectionNumber)
        {
            Table    selectionTable  = new Table();
            TableRow selectionRow    = new TableRow(),
                     matrixHeaderRow = new TableRow();
            TableCell selectionCell;                    // Selection cell for the answer item
            bool      generateHeader = true;            // Header generation in progress

            System.Web.UI.WebControls.Image spotImage = new System.Web.UI.WebControls.Image();

            selectionTable.CssClass = (sectionNumber % 2) == 0 ?
                                      "innerText" : "alternatingSection";

            // Creates header's first empty cell
            TableCell answerHeaderCell = new TableCell();

            matrixHeaderRow.Cells.Add(answerHeaderCell);

            // Get all answer items available for this
            // question
            foreach (DataRowView questionRow in childQuestions)
            {
                selectionRow = new TableRow();
                TableCell questionCell = new TableCell();
                questionCell.VerticalAlign = VerticalAlign.Top;
                questionCell.Text          = new PipeManager().PipeValuesInText(
                    int.Parse(questionRow["QuestionId"].ToString()), questionRow["QuestionText"].ToString(), _voterAnswers.VotersAnswers, null);

                selectionRow.Cells.Add(questionCell);

                // Parse the child question's answers
                AnswerData questionAnswers = new Answers().GetAnswers(int.Parse(questionRow["QuestionId"].ToString()), null);
                foreach (AnswerData.AnswersRow answer in questionAnswers.Answers)
                {
                    // New spot image
                    spotImage = new System.Web.UI.WebControls.Image();

                    // Creates a new answer text in the matrix header
                    if (generateHeader)
                    {
                        answerHeaderCell = new TableCell();
                        answerHeaderCell.VerticalAlign   = VerticalAlign.Top;
                        answerHeaderCell.HorizontalAlign = HorizontalAlign.Center;
                        answerHeaderCell.Wrap            = false;
                        answerHeaderCell.Text            =
                            new PipeManager().PipeValuesInText(answer.QuestionId, answer.AnswerText, _voterAnswers.VotersAnswers, null);
                        matrixHeaderRow.Cells.Add(answerHeaderCell);
                    }

                    // Add a new selection to the matrix's child question
                    selectionCell = new TableCell();
                    selectionCell.VerticalAlign   = VerticalAlign.Top;
                    selectionCell.HorizontalAlign = HorizontalAlign.Center;
                    selectionCell.Wrap            = false;

                    // Check if the voter has answered this answer
                    VoterAnswersData.VotersAnswersRow voterAnswer = _voterAnswers.VotersAnswers.FindByVoterIdAnswerIdSectionNumber(_voterId, answer.AnswerId, sectionNumber);
                    if (voterAnswer != null)
                    {
                        // Check answer type
                        if ((((AnswerTypeMode)answer.TypeMode & AnswerTypeMode.Field) > 0) ||
                            (((AnswerTypeMode)answer.TypeMode & AnswerTypeMode.Custom) > 0) ||
                            (((AnswerTypeMode)answer.TypeMode & AnswerTypeMode.DataSource) > 0))
                        {
                            selectionCell.Text = FormatVoterAnswer(null, voterAnswer.AnswerText, true);
                        }
                        else if (((AnswerTypeMode)answer.TypeMode & AnswerTypeMode.Upload) > 0)
                        {
                            selectionCell.Controls.Add(GenerateFileList(voterAnswer.AnswerText));
                        }
                        else
                        {
                            spotImage.ImageUrl = "images/spot_on.gif";
                            selectionCell.Controls.Add(spotImage);
                        }
                    }
                    else
                    {
                        // Check answer type
                        if ((((AnswerTypeMode)answer.TypeMode & AnswerTypeMode.Field) > 0) ||
                            (((AnswerTypeMode)answer.TypeMode & AnswerTypeMode.Custom) > 0) ||
                            (((AnswerTypeMode)answer.TypeMode & AnswerTypeMode.DataSource) > 0))
                        {
                            selectionCell.Text = FormatVoterAnswer(null, null, false);
                        }
                        else if (((AnswerTypeMode)answer.TypeMode & AnswerTypeMode.Upload) > 0)
                        {
                            selectionCell.Text = GetPageResource("NoFileUploadedMessage");
                        }
                        else
                        {
                            spotImage.ImageUrl = "images/spot_off.gif";
                            selectionCell.Controls.Add(spotImage);
                        }
                    }

                    selectionRow.Cells.Add(selectionCell);
                }

                // Generates the answer text header
                if (generateHeader)
                {
                    selectionTable.Rows.Add(matrixHeaderRow);
                    generateHeader = false;
                }

                selectionTable.Rows.Add(selectionRow);
            }


            selectionTable.Width = Unit.Percentage(100);

            container.Controls.Add(selectionTable);
        }
示例#5
0
        private void BindAnswerTable(AnswerData questionAnswers, PlaceHolder container, int sectionNumber)
        {
            Table     selectionTable = new Table();
            TableRow  selectionRow;
            TableCell answerTypeCell,
                      answerTextCell;

            selectionTable.CssClass = (sectionNumber % 2) == 0 ?
                                      "innerText" : "alternatingSection";

            // Get all answer items available for this
            // question
            foreach (AnswerData.AnswersRow answer in questionAnswers.Answers)
            {
                selectionRow                 = new TableRow();
                answerTypeCell               = new TableCell();
                answerTypeCell.Width         = Unit.Pixel(10);
                answerTypeCell.VerticalAlign = VerticalAlign.Top;
                answerTextCell               = new TableCell();

                string answerText = Server.HtmlEncode(
                    System.Text.RegularExpressions.Regex.Replace(new PipeManager().PipeValuesInText(
                                                                     answer.QuestionId, answer.AnswerText, _voterAnswers.VotersAnswers, null), "<[^>]*>", " "));
                System.Web.UI.WebControls.Image spotImage = new System.Web.UI.WebControls.Image();
                spotImage.ImageUrl = "images/spot_on.gif";

                // Check if the voter has answered this answer
                VoterAnswersData.VotersAnswersRow voterAnswer = _voterAnswers.VotersAnswers.FindByVoterIdAnswerIdSectionNumber(_voterId, answer.AnswerId, sectionNumber);
                if (voterAnswer != null)
                {
                    // Check answer type
                    if (((((AnswerTypeMode)answer.TypeMode & AnswerTypeMode.Field) > 0) ||
                         (((AnswerTypeMode)answer.TypeMode & AnswerTypeMode.Custom) > 0) ||
                         (((AnswerTypeMode)answer.TypeMode & AnswerTypeMode.DataSource) > 0)) &&
                        (((AnswerTypeMode)answer.TypeMode & AnswerTypeMode.Selection) == 0))
                    {
                        spotImage.ImageUrl  = "images/spot_text.gif";
                        answerTextCell.Text = FormatVoterAnswer(answerText, voterAnswer.AnswerText, true);
                    }
                    else if (((AnswerTypeMode)answer.TypeMode & AnswerTypeMode.Field) > 0 &&
                             ((AnswerTypeMode)answer.TypeMode & AnswerTypeMode.Selection) > 0)
                    {
                        answerTextCell.Text = FormatVoterAnswer(answerText, voterAnswer.AnswerText, true);
                        _questionScore     += answer.ScorePoint;
                    }
                    else if (((AnswerTypeMode)answer.TypeMode & AnswerTypeMode.Upload) > 0)
                    {
                        spotImage.ImageUrl = "images/spot_file.gif";
                        answerTextCell.Controls.Add(new LiteralControl(answerText + "<br />"));
                        answerTextCell.Controls.Add(GenerateFileList(voterAnswer.AnswerText));
                    }
                    else
                    {
                        answerTextCell.Text = string.Format("<b>{0}</b>", answerText);
                        _questionScore     += answer.ScorePoint;
                    }
                }
                else
                {
                    // Check answer type
                    if (((((AnswerTypeMode)answer.TypeMode & AnswerTypeMode.Field) > 0) ||
                         (((AnswerTypeMode)answer.TypeMode & AnswerTypeMode.Custom) > 0) ||
                         (((AnswerTypeMode)answer.TypeMode & AnswerTypeMode.DataSource) > 0)) &&
                        (((AnswerTypeMode)answer.TypeMode & AnswerTypeMode.Selection) == 0))
                    {
                        spotImage.ImageUrl  = "images/spot_text.gif";
                        answerTextCell.Text = FormatVoterAnswer(answerText, null, false);
                    }
                    else if (((AnswerTypeMode)answer.TypeMode & AnswerTypeMode.Upload) > 0)
                    {
                        spotImage.ImageUrl  = "images/spot_file.gif";
                        answerTextCell.Text = answerText + "<br />" + GetPageResource("NoFileUploadedMessage");
                    }
                    else
                    {
                        answerTextCell.Text = answerText;
                        spotImage.ImageUrl  = "images/spot_off.gif";
                    }
                }

                answerTypeCell.Controls.Add(spotImage);


                selectionRow.Cells.Add(answerTypeCell);
                selectionRow.Cells.Add(answerTextCell);
                selectionTable.Rows.Add(selectionRow);
            }

            selectionTable.Width = Unit.Percentage(100);
            container.Controls.Add(selectionTable);
        }