/// <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(); } }
/// <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); } }
/// <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); } }
/// <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(); } } }