From 060b754e05d5fa112598bedccef8181808342bb8 Mon Sep 17 00:00:00 2001 From: Auldrin-Possa Date: Fri, 20 Feb 2026 11:33:10 +0000 Subject: [PATCH] TD-6885-Insert framework competencies service call added --- .../CompetencyAssessmentDataService.cs | 79 ++++++++++--------- .../CompetencyAssessments.cs | 17 +++- 2 files changed, 54 insertions(+), 42 deletions(-) diff --git a/DigitalLearningSolutions.Data/DataServices/CompetencyAssessmentDataService.cs b/DigitalLearningSolutions.Data/DataServices/CompetencyAssessmentDataService.cs index d5788c2c20..279264d062 100644 --- a/DigitalLearningSolutions.Data/DataServices/CompetencyAssessmentDataService.cs +++ b/DigitalLearningSolutions.Data/DataServices/CompetencyAssessmentDataService.cs @@ -857,44 +857,44 @@ public bool UpdateCompetencyAssessmentFeaturesTaskStatus(int id, bool descriptio { var numberOfAffectedRows = connection.Execute( @"IF EXISTS (SELECT 1 FROM SelfAssessmentTaskStatus WHERE SelfAssessmentId = @id) - BEGIN - UPDATE SelfAssessmentTaskStatus - SET IntroductoryTextTaskStatus = - CASE WHEN @descriptionStatus = 1 AND IntroductoryTextTaskStatus <> 1 - THEN 0 ELSE IntroductoryTextTaskStatus END, - BrandingTaskStatus = - CASE WHEN @providerandCategoryStatus = 1 AND BrandingTaskStatus <> 1 - THEN 0 ELSE BrandingTaskStatus END, - VocabularyTaskStatus = - CASE WHEN @vocabularyStatus = 1 AND VocabularyTaskStatus <> 1 - THEN 0 ELSE VocabularyTaskStatus END, - WorkingGroupTaskStatus = - CASE WHEN @workingGroupStatus = 1 AND WorkingGroupTaskStatus <> 1 - THEN 0 ELSE WorkingGroupTaskStatus END, - FrameworkLinksTaskStatus = - CASE WHEN @AllframeworkCompetenciesStatus = 1 AND FrameworkLinksTaskStatus <> 1 - THEN 0 ELSE FrameworkLinksTaskStatus END, - SelectCompetenciesTaskStatus = - CASE WHEN @AllframeworkCompetenciesStatus = 1 AND SelectCompetenciesTaskStatus <> 1 - THEN 0 ELSE SelectCompetenciesTaskStatus END - WHERE SelfAssessmentId = @id; + BEGIN + UPDATE SelfAssessmentTaskStatus + SET IntroductoryTextTaskStatus = + CASE WHEN @descriptionStatus = 1 AND (IntroductoryTextTaskStatus IS NULL OR IntroductoryTextTaskStatus <> 1) + THEN 0 ELSE IntroductoryTextTaskStatus END, + BrandingTaskStatus = + CASE WHEN @providerandCategoryStatus = 1 AND (BrandingTaskStatus IS NULL OR BrandingTaskStatus <> 1) + THEN 0 ELSE BrandingTaskStatus END, + VocabularyTaskStatus = + CASE WHEN @vocabularyStatus = 1 AND (VocabularyTaskStatus IS NULL OR VocabularyTaskStatus <> 1) + THEN 0 ELSE VocabularyTaskStatus END, + WorkingGroupTaskStatus = + CASE WHEN @workingGroupStatus = 1 AND (WorkingGroupTaskStatus IS NULL OR WorkingGroupTaskStatus <> 1) + THEN 0 ELSE WorkingGroupTaskStatus END, + FrameworkLinksTaskStatus = + CASE WHEN @AllframeworkCompetenciesStatus = 1 AND (FrameworkLinksTaskStatus IS NULL OR FrameworkLinksTaskStatus <> 1) + THEN 0 ELSE FrameworkLinksTaskStatus END, + SelectCompetenciesTaskStatus = + CASE WHEN @AllframeworkCompetenciesStatus = 1 AND (SelectCompetenciesTaskStatus IS NULL OR SelectCompetenciesTaskStatus <> 1) + THEN 0 ELSE SelectCompetenciesTaskStatus END + WHERE SelfAssessmentId = @id; END - ELSE + ELSE BEGIN - INSERT INTO SelfAssessmentTaskStatus - (SelfAssessmentId, IntroductoryTextTaskStatus, BrandingTaskStatus, VocabularyTaskStatus, WorkingGroupTaskStatus, - FrameworkLinksTaskStatus,SelectCompetenciesTaskStatus) - VALUES - ( - @id, - CASE WHEN @descriptionStatus = 1 THEN 0 ELSE NULL END, - CASE WHEN @providerandCategoryStatus = 1 THEN 0 ELSE NULL END, - CASE WHEN @vocabularyStatus = 1 THEN 0 ELSE NULL END, - CASE WHEN @workingGroupStatus = 1 THEN 0 ELSE NULL END, - CASE WHEN @AllframeworkCompetenciesStatus = 1 THEN 0 ELSE NULL END, - CASE WHEN @AllframeworkCompetenciesStatus = 1 THEN 0 ELSE NULL END + INSERT INTO SelfAssessmentTaskStatus + (SelfAssessmentId, IntroductoryTextTaskStatus, BrandingTaskStatus, VocabularyTaskStatus, WorkingGroupTaskStatus, + FrameworkLinksTaskStatus,SelectCompetenciesTaskStatus) + VALUES + ( + @id, + CASE WHEN @descriptionStatus = 1 THEN 0 ELSE NULL END, + CASE WHEN @providerandCategoryStatus = 1 THEN 0 ELSE NULL END, + CASE WHEN @vocabularyStatus = 1 THEN 0 ELSE NULL END, + CASE WHEN @workingGroupStatus = 1 THEN 0 ELSE NULL END, + CASE WHEN @AllframeworkCompetenciesStatus = 1 THEN 0 ELSE NULL END, + CASE WHEN @AllframeworkCompetenciesStatus = 1 THEN 0 ELSE NULL END ); - END", + END", new { id, descriptionStatus, providerandCategoryStatus, vocabularyStatus, workingGroupStatus, AllframeworkCompetenciesStatus } ); if (numberOfAffectedRows < 1) @@ -961,7 +961,8 @@ public bool InsertSelfAssessmentGroupedCompetencies(int selfAssessmentId, int? f FROM FrameworkCompetencies AS FC INNER JOIN FrameworkCompetencyGroups AS FCG ON FC.FrameworkCompetencyGroupID = FCG.ID INNER JOIN SelfAssessments s ON s.id = @selfAssessmentId - WHERE FC.FrameworkID = @frameworkId" + WHERE FC.FrameworkID = @frameworkId + AND FC.CompetencyID NOT IN (SELECT CompetencyID FROM SelfAssessmentStructure WHERE SelfAssessmentID = @selfAssessmentId)" , new { selfAssessmentId, frameworkId } ); @@ -985,7 +986,8 @@ public bool InsertSelfAssessmentUngroupedCompetencies(int selfAssessmentId, int? FROM FrameworkCompetencies AS fc INNER JOIN SelfAssessments s ON s.id = @selfAssessmentId WHERE fc.FrameworkID = @frameworkId - AND fc.FrameworkCompetencyGroupID IS NULL " + AND fc.FrameworkCompetencyGroupID IS NULL + AND FC.CompetencyID NOT IN (SELECT CompetencyID FROM SelfAssessmentStructure WHERE SelfAssessmentID = @selfAssessmentId)" , new { selfAssessmentId, frameworkId } ); @@ -1485,7 +1487,8 @@ FROM FrameworkCollaborators fc INNER JOIN AdminUsers au ON fc.AdminID = au.AdminID WHERE fc.FrameworkID = @frameworkId - AND fc.IsDeleted = 0;", + AND fc.IsDeleted = 0 + AND fc.AdminID NOT IN (SELECT AdminID FROM SelfAssessmentCollaborators WHERE SelfAssessmentID = @selfAssessmentId AND IsDeleted = 0);", new { selfAssessmentId, frameworkId } ); } diff --git a/DigitalLearningSolutions.Web/Controllers/CompetencyAssessmentsController/CompetencyAssessments.cs b/DigitalLearningSolutions.Web/Controllers/CompetencyAssessmentsController/CompetencyAssessments.cs index 9357c697ae..ac127b95a7 100644 --- a/DigitalLearningSolutions.Web/Controllers/CompetencyAssessmentsController/CompetencyAssessments.cs +++ b/DigitalLearningSolutions.Web/Controllers/CompetencyAssessmentsController/CompetencyAssessments.cs @@ -845,8 +845,17 @@ public IActionResult ConfirmMaKePrimaryFramework(ConfirmMakePrimaryFrameworkView model.VocabularyStatus, model.WorkingGroupStatus, model.AllframeworkCompetenciesStatus); - competencyAssessmentService.InsertIntoSelfAssessmentCollaboratorsFromFrameworkCollaborators(model.CompetencyAssessmentId, model.FrameworkId); + + if (model.WorkingGroupStatus) + competencyAssessmentService.InsertIntoSelfAssessmentCollaboratorsFromFrameworkCollaborators(model.CompetencyAssessmentId, model.FrameworkId); + competencyAssessmentService.UpdateSelfAssessmentFromFramework(model.CompetencyAssessmentId, model.FrameworkId); + + if (model.AllframeworkCompetenciesStatus) + { + var insertSelfAssessmentGroupedCompetencies = competencyAssessmentService.InsertSelfAssessmentGroupedCompetencies(model.CompetencyAssessmentId, model.FrameworkId); + var insertSelfAssessmentUngroupedCompetencies = competencyAssessmentService.InsertSelfAssessmentUngroupedCompetencies(model.CompetencyAssessmentId, model.FrameworkId); + } return RedirectToAction("ManageCompetencyAssessment", new { model.CompetencyAssessmentId, model.FrameworkId }); } @@ -1462,7 +1471,7 @@ public IActionResult ManageSupervisionSettings(ManagesupervisionViewModel viewMo TempData.Clear(); return RedirectToAction("ManageCompetencyAssessment", new { competencyAssessmentId = viewModel.CompetencyAssessmentId }); } - [HttpGet] + [HttpGet] [Route("/CompetencyAssessments/{competencyAssessmentId}/SendForReview")] public IActionResult SendForReview(int competencyAssessmentId) { @@ -1528,7 +1537,7 @@ public IActionResult PublishWithoutReview(PublishWithoutReviewViewModel publish) return result; if (competencyAssessmentBase.PublishStatusID == 3) return RedirectToAction("StatusCode", "LearningSolutions", new { code = 410 }); var taskStatus = competencyAssessmentService.GetCompetencyAssessmentTaskStatus(publish.CompetencyAssessmentID, null); - competencyAssessmentService.UpdateCompetencyAssessmentReviewTaskStatus(publish.CompetencyAssessmentID, true); + competencyAssessmentService.UpdateCompetencyAssessmentReviewTaskStatus(publish.CompetencyAssessmentID, true); competencyAssessmentService.UpdateCompetencyAssessmentPublish(publish.CompetencyAssessmentID, 3, adminId, true, true); return RedirectToAction("ManageCompetencyAssessment", new { competencyAssessmentId = publish.CompetencyAssessmentID }); } @@ -1602,7 +1611,7 @@ public IActionResult PublishSelfAssesment(int competencyAssessmentId) return result; if (competencyAssessmentBase.PublishStatusID == 3) return RedirectToAction("StatusCode", "LearningSolutions", new { code = 410 }); var taskStatus = competencyAssessmentService.GetCompetencyAssessmentTaskStatus(competencyAssessmentId, null); - competencyAssessmentService.UpdateCompetencyAssessmentReviewTaskStatus(competencyAssessmentId, true); + competencyAssessmentService.UpdateCompetencyAssessmentReviewTaskStatus(competencyAssessmentId, true); competencyAssessmentService.UpdateCompetencyAssessmentPublish(competencyAssessmentId, 3, adminId, true, true); return RedirectToAction("ManageCompetencyAssessment", new { competencyAssessmentId = competencyAssessmentId }); }