diff --git a/DigitalLearningSolutions.Data.Migrations/202510221132_AddIncludeLearnerDeclarationPromptToSelfAssessmentsTable.cs b/DigitalLearningSolutions.Data.Migrations/202510221132_AddIncludeLearnerDeclarationPromptToSelfAssessmentsTable.cs new file mode 100644 index 0000000000..fbb0e4ee35 --- /dev/null +++ b/DigitalLearningSolutions.Data.Migrations/202510221132_AddIncludeLearnerDeclarationPromptToSelfAssessmentsTable.cs @@ -0,0 +1,18 @@ +namespace DigitalLearningSolutions.Data.Migrations +{ + using FluentMigrator; + + [Migration(202510221132)] + public class AddIncludeLearnerDeclarationPromptToSelfAssessmentsTable : Migration + { + public override void Up() + { + Alter.Table("SelfAssessments").AddColumn("IncludeLearnerDeclarationPrompt").AsBoolean().WithDefaultValue(false); + } + + public override void Down() + { + Delete.Column("IncludeLearnerDeclarationPrompt").FromTable("SelfAssessments"); + } + } +} diff --git a/DigitalLearningSolutions.Data/DataServices/SelfAssessmentDataService/CandidateAssessmentsDataService.cs b/DigitalLearningSolutions.Data/DataServices/SelfAssessmentDataService/CandidateAssessmentsDataService.cs index aae3988660..94076839bc 100644 --- a/DigitalLearningSolutions.Data/DataServices/SelfAssessmentDataService/CandidateAssessmentsDataService.cs +++ b/DigitalLearningSolutions.Data/DataServices/SelfAssessmentDataService/CandidateAssessmentsDataService.cs @@ -223,7 +223,8 @@ FROM SelfAssessmentSupervisorRoles AS SelfAssessmentSupervisorRoles_1 SA.ManageSupervisorsDescription, CA.NonReportable, U.FirstName +' '+ U.LastName AS DelegateName, - SA.MinimumOptionalCompetencies + SA.MinimumOptionalCompetencies, + SA.IncludeLearnerDeclarationPrompt FROM CandidateAssessments CA JOIN SelfAssessments SA ON CA.SelfAssessmentID = SA.ID @@ -248,7 +249,7 @@ GROUP BY CA.LaunchCount, CA.SubmittedDate, SA.LinearNavigation, SA.UseDescriptionExpanders, SA.ManageOptionalCompetenciesPrompt, SA.SupervisorSelfAssessmentReview, SA.SupervisorResultsReview, SA.ReviewerCommentsLabel,SA.EnforceRoleRequirementsForSignOff, SA.ManageSupervisorsDescription,CA.NonReportable, - U.FirstName , U.LastName,SA.MinimumOptionalCompetencies, CA.SelfAssessmentProcessAgreed", + U.FirstName , U.LastName,SA.MinimumOptionalCompetencies, CA.SelfAssessmentProcessAgreed, SA.IncludeLearnerDeclarationPrompt", new { delegateUserId, selfAssessmentId } ); } diff --git a/DigitalLearningSolutions.Data/Models/SelfAssessments/SelfAssessment.cs b/DigitalLearningSolutions.Data/Models/SelfAssessments/SelfAssessment.cs index dbd1da0de6..4fcf6363e2 100644 --- a/DigitalLearningSolutions.Data/Models/SelfAssessments/SelfAssessment.cs +++ b/DigitalLearningSolutions.Data/Models/SelfAssessments/SelfAssessment.cs @@ -17,6 +17,7 @@ public class SelfAssessment : CurrentLearningItem public DateTime? EnrolmentCutoffDate { get; set; } public string? RetirementReason { get; set; } + public bool IncludeLearnerDeclarationPrompt { get; set; } } } diff --git a/DigitalLearningSolutions.Web.Tests/TestHelpers/SelfAssessmentTestHelper.cs b/DigitalLearningSolutions.Web.Tests/TestHelpers/SelfAssessmentTestHelper.cs index 937fb6d7fb..b5849bebce 100644 --- a/DigitalLearningSolutions.Web.Tests/TestHelpers/SelfAssessmentTestHelper.cs +++ b/DigitalLearningSolutions.Web.Tests/TestHelpers/SelfAssessmentTestHelper.cs @@ -27,7 +27,8 @@ public static CurrentSelfAssessment CreateDefaultSelfAssessment( bool useDescriptionExpanders = true, string vocabulary = "Capability", string verificationRoleName = "Supervisor", - string signOffRoleName = "Supervisor" + string signOffRoleName = "Supervisor", + bool includeLearnerDeclarationPrompt = true ) { return new CurrentSelfAssessment @@ -47,6 +48,7 @@ public static CurrentSelfAssessment CreateDefaultSelfAssessment( Vocabulary = vocabulary, VerificationRoleName = verificationRoleName, SignOffRoleName = signOffRoleName, + IncludeLearnerDeclarationPrompt = includeLearnerDeclarationPrompt }; } diff --git a/DigitalLearningSolutions.Web/Controllers/LearningPortalController/SelfAssessment.cs b/DigitalLearningSolutions.Web/Controllers/LearningPortalController/SelfAssessment.cs index aa3153c81d..87248c7841 100644 --- a/DigitalLearningSolutions.Web/Controllers/LearningPortalController/SelfAssessment.cs +++ b/DigitalLearningSolutions.Web/Controllers/LearningPortalController/SelfAssessment.cs @@ -67,8 +67,10 @@ public IActionResult SelfAssessment(int selfAssessmentId) ); return RedirectToAction("StatusCode", "LearningSolutions", new { code = 403 }); } - - selfAssessmentService.IncrementLaunchCount(selfAssessmentId, delegateUserId); + if (selfAssessment.IncludeLearnerDeclarationPrompt) + { + selfAssessmentService.IncrementLaunchCount(selfAssessmentId, delegateUserId); + } selfAssessmentService.UpdateLastAccessed(selfAssessmentId, delegateUserId); var supervisors = selfAssessmentService.GetAllSupervisorsForSelfAssessmentId( selfAssessmentId, diff --git a/DigitalLearningSolutions.Web/ServiceFilter/RequireProcessAgreementFilter .cs b/DigitalLearningSolutions.Web/ServiceFilter/RequireProcessAgreementFilter .cs index 67e11614a0..9c480ebca7 100644 --- a/DigitalLearningSolutions.Web/ServiceFilter/RequireProcessAgreementFilter .cs +++ b/DigitalLearningSolutions.Web/ServiceFilter/RequireProcessAgreementFilter .cs @@ -49,7 +49,7 @@ public void OnActionExecuting(ActionExecutingContext context) context.Result = new RedirectToActionResult("StatusCode", "LearningSolutions", new { code = 403 }); return; } - + if (!selfAssessment.IncludeLearnerDeclarationPrompt) return; var actionName = context.RouteData.Values["action"]?.ToString(); if (actionName == "AgreeSelfAssessmentProcess" || actionName == "ProcessAgreed") {