Example #1
0
        public void Should_Return_200_When_Result_Is_Calculated()
        {
            var repositoryMock        = new Mock <ISurveyRepository>();
            var expectedSurveyResults = new List <SurveyResult>
            {
                new(Department.Development,
                    answerId : 1001,
                    minimum : 1,
                    maximum : 3,
                    average : 1)
            };

            repositoryMock
            .Setup(x => x.FindAnswers(It.IsAny <int>(), It.IsAny <int>()))
            .Returns(expectedSurveyResults);

            var sut = new SurveyResultsController(
                new GetSurveyResultUseCase(repositoryMock.Object),
                new GetSurveyResultPresenter());

            var actualResult = sut.GetSurveyResultsAsync(questionnaireId: 1000, questionId: 1);

            actualResult
            .Should()
            .BeOfType <OkObjectResult>()
            .Which.Value
            .Should()
            .BeOfType <GetSurveyResultsResponse>()
            .Which.SurveyResults
            .Should()
            .BeEquivalentTo(expectedSurveyResults);
        }
Example #2
0
        protected override void OnPreRender(EventArgs e)
        {
            List <SurveysInfo> surveys = SurveysController.GetAll(ModuleId);

            foreach (SurveysInfo survey in surveys)
            {
                List <SurveyResultInfo> result          = SurveyResultsController.Get(survey.SurveyID);
                StringBuilder           labelBuilder    = new StringBuilder();
                StringBuilder           dataBuilder     = new StringBuilder();
                StringBuilder           bgColorsBuilder = new StringBuilder();
                StringBuilder           bColorsBuilder  = new StringBuilder();
                foreach (SurveyResultInfo r in result)
                {
                    labelBuilder.Append(string.Format("\"{0}\"", String.Format("{0}{1}", r.OptionName, r.IsCorrect ? string.Format(" {0}", Localization.GetString("CorrectAnswer.Text", LocalResourceFile)) : string.Empty)));
                    dataBuilder.Append(r.Votes);
                    bgColorsBuilder.Append(string.Format("\"{0}\"", Base.GetColor(result.IndexOf(r), (!(r.IsCorrect)))));
                    bColorsBuilder.Append(string.Format("\"{0}\"", r.IsCorrect ? "rgba(0,170,0,1)" : Base.GetColor(result.IndexOf(r), false)));
                    if (result.IndexOf(r) < result.Count - 1)
                    {
                        labelBuilder.Append(",");
                        dataBuilder.Append(",");
                        bgColorsBuilder.Append(",");
                        bColorsBuilder.Append(",");
                    }
                }

                CanvasControl canvas = (CanvasControl)LoadControl("Controls/CanvasControl.ascx");
                canvas.Header           = survey.Question;
                canvas.Labels           = labelBuilder.ToString();
                canvas.Data             = dataBuilder.ToString();
                canvas.BackgroundColors = bgColorsBuilder.ToString();
                canvas.BorderColors     = bColorsBuilder.ToString();
                canvas.ChartType        = survey.ChartType;
                ChartPlaceHolder.Controls.Add(canvas);
            }

            base.OnPreRender(e);
        }
Example #3
0
        private void SurveyActions_Click(object sender, ActionEventArgs e)
        {
            switch (e.Action.CommandName)
            {
            case "DeleteResults":
                if (e.Action.CommandArgument == "Delete")
                {
                    SurveyResultsController.DropAll(ModuleId);
                    ModuleController.Instance.UpdateModuleSetting(ModuleId, "ResultsVersion", (ResultsVersion + 1).ToString());
                }
                break;

            case "ExportToCsv":
                try
                {
                    string csv = SurveyBusinessController.CSVExport(ModuleId, Localization.SharedResourceFile, Separator, TextQualifier);
                    Response.Clear();
                    Response.Charset = string.Empty;
                    Response.AddHeader("content-disposition", string.Format("attachment; filename=Survey_Results_{0}_{1:yyyy-MM-dd-hhmmss}.csv", ModuleId, DateTime.Now));
                    Response.ContentType = "application/octet-stream";
                    Response.Cache.SetCacheability(HttpCacheability.NoCache);
                    StringWriter   stringWriter   = new StringWriter();
                    HtmlTextWriter htmlTextWriter = new HtmlTextWriter(stringWriter);
                    stringWriter.Write(csv);
                    Response.Write(stringWriter.ToString());
                    Response.End();
                }
                catch (Exception ex)
                {
                    Exceptions.ProcessModuleLoadException(this, ex);
                }
                break;

            default:
                break;
            }
        }
Example #4
0
        protected void SubmitSurveyButton_Click(object sender, EventArgs e)
        {
            // First, check CAPTCHA
            CaptchaControl captcha = (CaptchaControl)FindControl(string.Format("Captcha_{0}", ModuleId));

            if (((captcha != null) && (captcha.IsValid)) || (captcha == null))
            {
                // Then validate page...
                Page.Validate(string.Format("Survey_{0}_ValidationGroup", ModuleId));
                if (Page.IsValid)
                {
                    if (ContactByFaxOnlyCheckBox.Checked)
                    {
                        // if someone activates this checkbox send him home :-)
                        Response.Redirect("http://localhost/");
                    }
                    List <SurveysInfo>       surveys       = SurveysController.GetAll(ModuleId);
                    List <SurveyResultsInfo> surveyResults = new List <SurveyResultsInfo>();

                    Guid resultUserID = Guid.NewGuid();

                    foreach (SurveysInfo survey in surveys)
                    {
                        SurveyResultsInfo surveyResult;
                        switch (survey.OptionType)
                        {
                        case QuestionType.RadioButtons:
                            SurveyRadioButtons surveyRadioButtons = (SurveyRadioButtons)FindControl(string.Format("SurveyRadiobutton_{0}", survey.SurveyID));
                            surveyResult = new SurveyResultsInfo();
                            surveyResult.SurveyOptionID = Convert.ToInt32(surveyRadioButtons.SelectedValue);
                            surveyResult.UserID         = (UserId < 1 ? (int?)null : UserId);
                            surveyResult.IPAddress      = Request.ServerVariables["REMOTE_ADDR"];
                            surveyResult.IsCorrect      = SurveyOptionsController.GetAll(survey.SurveyID).Find(x => x.SurveyOptionID == surveyResult.SurveyOptionID).IsCorrect;
                            surveyResult.ResultUserID   = resultUserID;
                            surveyResults.Add(surveyResult);
                            break;

                        case QuestionType.CheckBoxes:
                            SurveyCheckBoxes surveyCheckBoxes = (SurveyCheckBoxes)FindControl(string.Format("SurveyCheckbox_{0}", survey.SurveyID));
                            foreach (int surveyOptionID in surveyCheckBoxes.SelectedItems)
                            {
                                surveyResult = new SurveyResultsInfo();
                                surveyResult.SurveyOptionID = surveyOptionID;
                                surveyResult.UserID         = (UserId < 1 ? (int?)null : UserId);
                                surveyResult.IPAddress      = Request.ServerVariables["REMOTE_ADDR"];
                                surveyResult.IsCorrect      = SurveyOptionsController.GetAll(survey.SurveyID).Find(x => x.SurveyOptionID == surveyResult.SurveyOptionID).IsCorrect;
                                surveyResult.ResultUserID   = resultUserID;
                                surveyResults.Add(surveyResult);
                            }
                            break;

                        case QuestionType.Text:
                            SurveyText surveyTextBox = (SurveyText)FindControl(string.Format("SurveyTextBox_{0}", survey.SurveyID));
                            surveyResult = new SurveyResultsInfo();
                            surveyResult.SurveyOptionID = surveyTextBox.SurveyOptionID;
                            surveyResult.UserID         = (UserId < 1 ? (int?)null : UserId);
                            surveyResult.IPAddress      = Request.ServerVariables["REMOTE_ADDR"];
                            surveyResult.TextAnswer     = PortalSecurity.InputFilter(surveyTextBox.Text, PortalSecurity.FilterFlag.MultiLine | PortalSecurity.FilterFlag.NoAngleBrackets | PortalSecurity.FilterFlag.NoMarkup | PortalSecurity.FilterFlag.NoScripting | PortalSecurity.FilterFlag.NoSQL);
                            surveyResult.IsCorrect      = true;
                            surveyResult.ResultUserID   = resultUserID;
                            surveyResults.Add(surveyResult);
                            break;

                        default:
                            break;
                        }
                    }
                    if (PortalSecurity.IsInRole("Administrators"))
                    {
                        // This is just to force the SQL Script SurveyResults_Add to add the result if the user is an administrator
                        SurveyResultsController.Add(surveyResults, false);
                    }
                    else
                    {
                        SurveyResultsController.Add(surveyResults, AuthorizedUsersOnly);
                    }
                    HttpCookie cookie = new HttpCookie(_cookie);
                    cookie.Value   = "True";
                    cookie.Expires = (SurveyClosingDate == DateTime.MinValue ? DateTime.MaxValue : SurveyClosingDate.AddDays(1));
                    Response.AppendCookie(cookie);
                    SubmitSurveyButton.Visible = false;
                    if (SurveyType == SurveyType.Survey)
                    {
                        SurveyPlaceHolder.Visible = false;
                        if (HasViewResultsPermission)
                        {
                            Response.Redirect(EditUrl("SurveyResults"), false);
                        }
                        else
                        {
                            SurveyMessageLabel.Text     = Localization.GetString("HasVoted.Text", LocalResourceFile);
                            SurveyMessageLabel.CssClass = "dnnFormMessage dnnFormSuccess";
                            SurveyMessageLabel.Visible  = true;
                        }
                    }
                    else
                    {
                        SurveyMessageLabel.Text     = Localization.GetString("QuizResults.Text", LocalResourceFile);
                        SurveyMessageLabel.CssClass = "dnnFormMessage dnnFormSuccess";
                        SurveyMessageLabel.Visible  = true;
                        SurveyPlaceHolder.Controls.Clear();
                        DisplayQuizResults(surveys, surveyResults);
                    }
                }
            }
        }