コード例 #1
0
        /// <summary>
        /// Converts the assessment results.
        /// </summary>
        private void ConvertSpiritualGiftsAssessmentResults()
        {
            using (var rockContext = new RockContext())
            {
                rockContext.Database.CommandTimeout = _commandTimeout;

                var spiritualGiftsGuid = SystemGuid.AssessmentType.GIFTS.AsGuidOrNull();
                if (!spiritualGiftsGuid.HasValue)
                {
                    return;
                }

                int?assessmentTypeId = AssessmentTypeCache.GetId(spiritualGiftsGuid.Value);
                if (!assessmentTypeId.HasValue)
                {
                    return;
                }

                // Load all completed Spiritual Gifts Assessments that have AssessmentResultData
                var assessmentService = new AssessmentService(rockContext);
                var assessments       = assessmentService.Queryable("PersonAlias.Person")
                                        .Where(a => a.AssessmentTypeId == assessmentTypeId.Value)
                                        .Where(a => a.Status == AssessmentRequestStatus.Complete)
                                        .Where(a => !string.IsNullOrEmpty(a.AssessmentResultData))
                                        .ToList();

                foreach (Assessment assessment in assessments)
                {
                    if (assessment.PersonAlias?.Person == null)
                    {
                        continue;
                    }

                    // Deserialize the stored JSON
                    var resultData = assessment.AssessmentResultData.FromJsonOrNull <SpiritualGiftsService.AssessmentResultData>();
                    if (resultData == null || resultData.Result == null)
                    {
                        continue;
                    }

                    // Re-score the origninal Assessment responses
                    SpiritualGiftsService.AssessmentResults results = SpiritualGiftsService.GetResult(resultData.Result);
                    if (results == null)
                    {
                        continue;
                    }

                    // Re-save the Assessment result AttributeValues
                    SpiritualGiftsService.SaveAssessmentResults(assessment.PersonAlias.Person, results);

                    // Add the scores to the Assessment's data object
                    resultData.ResultScores         = results.SpiritualGiftScores;
                    assessment.AssessmentResultData = resultData.ToJson();
                }

                rockContext.SaveChanges();
            }
        }
コード例 #2
0
        /// <summary>
        /// Handles the Click event of the btnNext control.
        /// </summary>
        /// <param name="sender">The source of the event.</param>
        /// <param name="e">The <see cref="EventArgs" /> instance containing the event data.</param>
        protected void btnNext_Click(object sender, EventArgs e)
        {
            int pageNumber = hfPageNo.ValueAsInt() + 1;

            GetResponse();

            LinkButton btn             = ( LinkButton )sender;
            string     commandArgument = btn.CommandArgument;

            var totalQuestion = pageNumber * QuestionCount;

            if ((_assessmentResponses.Count > totalQuestion && !_assessmentResponses.All(a => a.Response.HasValue)) || "Next".Equals(commandArgument))
            {
                BindRepeater(pageNumber);
            }
            else
            {
                SpiritualGiftsService.AssessmentResults result = SpiritualGiftsService.GetResult(_assessmentResponses.ToDictionary(a => a.Code, b => b.Response.Value));
                SpiritualGiftsService.SaveAssessmentResults(_targetPerson, result);
                var resultData  = _assessmentResponses.ToDictionary(a => a.Code, b => b.Response.Value);
                var rockContext = new RockContext();

                var        assessmentService = new AssessmentService(rockContext);
                Assessment assessment        = null;

                if (hfAssessmentId.ValueAsInt() != 0)
                {
                    assessment = assessmentService.Get(int.Parse(hfAssessmentId.Value));
                }

                if (assessment == null)
                {
                    var assessmentType = new AssessmentTypeService(rockContext).Get(Rock.SystemGuid.AssessmentType.GIFTS.AsGuid());
                    assessment = new Assessment()
                    {
                        AssessmentTypeId = assessmentType.Id,
                        PersonAliasId    = _targetPerson.PrimaryAliasId.Value
                    };
                    assessmentService.Add(assessment);
                }

                assessment.Status               = AssessmentRequestStatus.Complete;
                assessment.CompletedDateTime    = RockDateTime.Now;
                assessment.AssessmentResultData = new { Result = resultData, TimeToTake = RockDateTime.Now.Subtract(StartDateTime).TotalSeconds }.ToJson();
                rockContext.SaveChanges();

                ShowResult(result, assessment);
            }
        }
コード例 #3
0
        /// <summary>
        /// Handles the Click event of the btnNext control.
        /// </summary>
        /// <param name="sender">The source of the event.</param>
        /// <param name="e">The <see cref="EventArgs" /> instance containing the event data.</param>
        protected void btnNext_Click(object sender, EventArgs e)
        {
            int pageNumber = hfPageNo.ValueAsInt() + 1;

            GetResponse();

            LinkButton btn             = ( LinkButton )sender;
            string     commandArgument = btn.CommandArgument;

            var totalQuestion = pageNumber * QuestionCount;

            if (AssessmentResponses.Count > totalQuestion && !AssessmentResponses.All(a => a.Response.HasValue) || "Next".Equals(commandArgument))
            {
                BindRepeater(pageNumber);
            }
            else
            {
                SpiritualGiftsService.AssessmentResults result = SpiritualGiftsService.GetResult(AssessmentResponses.ToDictionary(a => a.Code, b => b.Response.Value));
                SpiritualGiftsService.SaveAssessmentResults(_targetPerson, result);
                ShowResult(result);
            }
        }
コード例 #4
0
        /// <summary>
        /// Handles the Click event of the btnNext control.
        /// </summary>
        /// <param name="sender">The source of the event.</param>
        /// <param name="e">The <see cref="EventArgs" /> instance containing the event data.</param>
        protected void btnNext_Click(object sender, EventArgs e)
        {
            int pageNumber = hfPageNo.ValueAsInt() + 1;

            GetResponse();

            LinkButton btn             = ( LinkButton )sender;
            string     commandArgument = btn.CommandArgument;

            var totalQuestion = pageNumber * QuestionCount;

            if ((_assessmentResponses.Count > totalQuestion && !_assessmentResponses.All(a => a.Response.HasValue)) || "Next".Equals(commandArgument))
            {
                BindRepeater(pageNumber);
            }
            else
            {
                var resultData = _assessmentResponses.ToDictionary(a => a.Code, b => b.Response.Value);
                SpiritualGiftsService.AssessmentResults result = SpiritualGiftsService.GetResult(resultData);
                SpiritualGiftsService.SaveAssessmentResults(_targetPerson, result);
                var rockContext = new RockContext();

                var        assessmentService = new AssessmentService(rockContext);
                Assessment assessment        = null;

                if (hfAssessmentId.ValueAsInt() != 0)
                {
                    assessment = assessmentService.Get(int.Parse(hfAssessmentId.Value));
                }

                if (assessment == null)
                {
                    var assessmentType = new AssessmentTypeService(rockContext).Get(Rock.SystemGuid.AssessmentType.GIFTS.AsGuid());
                    assessment = new Assessment()
                    {
                        AssessmentTypeId = assessmentType.Id,
                        PersonAliasId    = _targetPerson.PrimaryAliasId.Value
                    };
                    assessmentService.Add(assessment);
                }

                assessment.Status               = AssessmentRequestStatus.Complete;
                assessment.CompletedDateTime    = RockDateTime.Now;
                assessment.AssessmentResultData = new SpiritualGiftsService.AssessmentResultData
                {
                    Result       = resultData,
                    ResultScores = result.SpiritualGiftScores,
                    TimeToTake   = RockDateTime.Now.Subtract(StartDateTime).TotalSeconds
                }.ToJson();

                rockContext.SaveChanges();

                // Since we are rendering chart.js we have to register the script or reload the page.
                if (_assessmentId == 0)
                {
                    var removeParams = new List <string>
                    {
                        PageParameterKey.AssessmentId
                    };

                    NavigateToCurrentPageReferenceWithRemove(removeParams);
                }
                else
                {
                    this.NavigateToCurrentPageReference();
                }
            }
        }