diff --git a/DigitalLearningSolutions.Data/DataServices/SelfAssessmentDataService/CompetencyDataService.cs b/DigitalLearningSolutions.Data/DataServices/SelfAssessmentDataService/CompetencyDataService.cs index 845a00b07c..76a1a199bd 100644 --- a/DigitalLearningSolutions.Data/DataServices/SelfAssessmentDataService/CompetencyDataService.cs +++ b/DigitalLearningSolutions.Data/DataServices/SelfAssessmentDataService/CompetencyDataService.cs @@ -615,6 +615,41 @@ FROM SelfAssessmentResults ); } + public IEnumerable GetSelfAssessmentResultswithSupervisorVerificationsForDelegateSelfAssessmentCompetency( + int delegateUserId, + int selfAssessmentId, + int competencyId + ) + { + return connection.Query( + @"SELECT + s.ID, + s.SelfAssessmentID, + s.CompetencyID, + s.AssessmentQuestionID, + s.Result, + s.DateTime, + s.SupportingComments, + s.DelegateUserId + FROM SelfAssessmentResults s inner join + SelfAssessmentResultSupervisorVerifications sv ON s.ID = sv.SelfAssessmentResultId AND sv.Superceded = 0 + WHERE s.CompetencyID = @competencyId + AND s.SelfAssessmentID = @selfAssessmentId + AND s.DelegateUserID = @delegateUserId", + new { selfAssessmentId, delegateUserId, competencyId } + ); + } + + public void RemoveReviewCandidateAssessmentOptionalCompetencies(int id) + { + + connection.Execute(@"UPDATE SelfAssessmentResults SET Result = NULL WHERE ID = @id", new { id}); + + connection.Execute( + @"delete from SelfAssessmentResultSupervisorVerifications WHERE SelfAssessmentResultId = @id", new { id }); + + } + private static string PrintResult( int competencyId, int selfAssessmentId, diff --git a/DigitalLearningSolutions.Data/DataServices/SelfAssessmentDataService/SelfAssessmentDataService.cs b/DigitalLearningSolutions.Data/DataServices/SelfAssessmentDataService/SelfAssessmentDataService.cs index 0528c7f907..d4b87c6f78 100644 --- a/DigitalLearningSolutions.Data/DataServices/SelfAssessmentDataService/SelfAssessmentDataService.cs +++ b/DigitalLearningSolutions.Data/DataServices/SelfAssessmentDataService/SelfAssessmentDataService.cs @@ -173,6 +173,12 @@ int GetSelfAssessmentActivityDelegatesExportCount(string searchString, string so bool IsCentreSelfAssessment(int selfAssessmentId, int centreId); bool HasMinimumOptionalCompetencies(int selfAssessmentId, int delegateUserId); int GetSelfAssessmentCategoryId(int selfAssessmentId); + void RemoveReviewCandidateAssessmentOptionalCompetencies(int id); + public IEnumerable GetSelfAssessmentResultswithSupervisorVerificationsForDelegateSelfAssessmentCompetency( + int delegateUserId, + int selfAssessmentId, + int competencyId + ); } public partial class SelfAssessmentDataService : ISelfAssessmentDataService { diff --git a/DigitalLearningSolutions.Web/Controllers/LearningPortalController/SelfAssessment.cs b/DigitalLearningSolutions.Web/Controllers/LearningPortalController/SelfAssessment.cs index cac172a725..2234f7d9eb 100644 --- a/DigitalLearningSolutions.Web/Controllers/LearningPortalController/SelfAssessment.cs +++ b/DigitalLearningSolutions.Web/Controllers/LearningPortalController/SelfAssessment.cs @@ -1532,6 +1532,22 @@ ManageOptionalCompetenciesViewModel model ); } } + var optionalCompetency = + (selfAssessmentService.GetCandidateAssessmentOptionalCompetencies(selfAssessmentId, delegateUserId)).Where(x => !x.IncludedInSelfAssessment); + if (optionalCompetency.Any()) + { + foreach (var optinal in optionalCompetency) + { + var selfAssessmentResults = selfAssessmentService.GetSelfAssessmentResultswithSupervisorVerificationsForDelegateSelfAssessmentCompetency(delegateUserId, selfAssessmentId, optinal.Id); + if (selfAssessmentResults.Any()) + { + foreach (var item in selfAssessmentResults) + { + selfAssessmentService.RemoveReviewCandidateAssessmentOptionalCompetencies(item.Id); + } + } + } + } if (model.GroupOptionalCompetenciesChecked != null) { var optionalCompetencies = @@ -1549,7 +1565,7 @@ ManageOptionalCompetenciesViewModel model } } - + return RedirectToAction("SelfAssessmentOverview", new { selfAssessmentId, vocabulary }); } diff --git a/DigitalLearningSolutions.Web/Services/SelfAssessmentService.cs b/DigitalLearningSolutions.Web/Services/SelfAssessmentService.cs index 37b44e8e34..ce7afea305 100644 --- a/DigitalLearningSolutions.Web/Services/SelfAssessmentService.cs +++ b/DigitalLearningSolutions.Web/Services/SelfAssessmentService.cs @@ -150,7 +150,17 @@ public int GetSelfAssessmentActivityDelegatesExportCount(string searchString, st bool IsCentreSelfAssessment(int selfAssessmentId, int centreId); bool HasMinimumOptionalCompetencies(int selfAssessmentId, int delegateUserId); public int GetSelfAssessmentCategoryId(int selfAssessmentId); - + IEnumerable GetSelfAssessmentResultsForDelegateSelfAssessmentCompetency( + int delegateUserId, + int selfAssessmentId, + int competencyId + ); + public IEnumerable GetSelfAssessmentResultswithSupervisorVerificationsForDelegateSelfAssessmentCompetency( + int delegateUserId, + int selfAssessmentId, + int competencyId + ); + void RemoveReviewCandidateAssessmentOptionalCompetencies(int id); } public class SelfAssessmentService : ISelfAssessmentService @@ -575,5 +585,25 @@ public int GetSelfAssessmentCategoryId(int selfAssessmentId) { return selfAssessmentDataService.GetSelfAssessmentCategoryId(selfAssessmentId); } + public IEnumerable GetSelfAssessmentResultsForDelegateSelfAssessmentCompetency( + int delegateUserId, + int selfAssessmentId, + int competencyId + ) + { + return selfAssessmentDataService.GetSelfAssessmentResultsForDelegateSelfAssessmentCompetency(delegateUserId, selfAssessmentId, competencyId); + } + public IEnumerable GetSelfAssessmentResultswithSupervisorVerificationsForDelegateSelfAssessmentCompetency( + int delegateUserId, + int selfAssessmentId, + int competencyId + ) + { + return selfAssessmentDataService.GetSelfAssessmentResultswithSupervisorVerificationsForDelegateSelfAssessmentCompetency(delegateUserId, selfAssessmentId, competencyId); + } + public void RemoveReviewCandidateAssessmentOptionalCompetencies(int id) + { + selfAssessmentDataService.RemoveReviewCandidateAssessmentOptionalCompetencies(id); + } } }