Skip to content

Commit f1a555e

Browse files
committed
Includes only competencies that are not already added to the assessment in the add competencies screen
1 parent badab53 commit f1a555e

File tree

5 files changed

+33
-22
lines changed

5 files changed

+33
-22
lines changed

DigitalLearningSolutions.Data/DataServices/FrameworkDataService.cs

Lines changed: 18 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -51,9 +51,9 @@ public interface IFrameworkDataService
5151
CollaboratorNotification? GetCollaboratorNotification(int id, int invitedByAdminId);
5252

5353
// Competencies/groups:
54-
IEnumerable<FrameworkCompetencyGroup> GetFrameworkCompetencyGroups(int frameworkId);
54+
IEnumerable<FrameworkCompetencyGroup> GetFrameworkCompetencyGroups(int frameworkId, int? assessmentId);
5555

56-
IEnumerable<FrameworkCompetency> GetFrameworkCompetenciesUngrouped(int frameworkId);
56+
IEnumerable<FrameworkCompetency> GetFrameworkCompetenciesUngrouped(int frameworkId, int? assessmentId);
5757

5858
CompetencyGroupBase? GetCompetencyGroupBaseById(int Id);
5959

@@ -860,17 +860,22 @@ public void RemoveCustomFlag(int flagId)
860860
);
861861
}
862862

863-
public IEnumerable<FrameworkCompetencyGroup> GetFrameworkCompetencyGroups(int frameworkId)
863+
public IEnumerable<FrameworkCompetencyGroup> GetFrameworkCompetencyGroups(int frameworkId, int? assessmentId)
864864
{
865+
var assessmentFilter = assessmentId.HasValue ?
866+
@$"AND c.ID NOT IN (SELECT CompetencyID
867+
FROM SelfAssessmentStructure
868+
WHERE (SelfAssessmentID = {assessmentId}))"
869+
: string.Empty;
865870
var result = connection.Query<FrameworkCompetencyGroup, FrameworkCompetency, FrameworkCompetencyGroup>(
866-
@"SELECT fcg.ID, fcg.CompetencyGroupID, cg.Name, fcg.Ordering, fc.ID, c.ID AS CompetencyID, c.Name, c.Description, fc.Ordering, COUNT(caq.AssessmentQuestionID) AS AssessmentQuestions
871+
@$"SELECT fcg.ID, fcg.CompetencyGroupID, cg.Name, fcg.Ordering, fc.ID, c.ID AS CompetencyID, c.Name, c.Description, fc.Ordering, COUNT(caq.AssessmentQuestionID) AS AssessmentQuestions
867872
,(SELECT COUNT(*) FROM CompetencyLearningResources clr WHERE clr.CompetencyID = c.ID AND clr.RemovedDate IS NULL) AS CompetencyLearningResourcesCount
868873
FROM FrameworkCompetencyGroups AS fcg INNER JOIN
869874
CompetencyGroups AS cg ON fcg.CompetencyGroupID = cg.ID LEFT OUTER JOIN
870875
FrameworkCompetencies AS fc ON fcg.ID = fc.FrameworkCompetencyGroupID LEFT OUTER JOIN
871876
Competencies AS c ON fc.CompetencyID = c.ID LEFT OUTER JOIN
872877
CompetencyAssessmentQuestions AS caq ON c.ID = caq.CompetencyID
873-
WHERE (fcg.FrameworkID = @frameworkId)
878+
WHERE (fcg.FrameworkID = @frameworkId) {assessmentFilter}
874879
GROUP BY fcg.ID, fcg.CompetencyGroupID, cg.Name, fcg.Ordering, fc.ID, c.ID, c.Name, c.Description, fc.Ordering
875880
ORDER BY fcg.Ordering, fc.Ordering",
876881
(frameworkCompetencyGroup, frameworkCompetency) =>
@@ -897,16 +902,21 @@ FROM FrameworkCompetencyGroups AS fcg INNER JOIN
897902
});
898903
}
899904

900-
public IEnumerable<FrameworkCompetency> GetFrameworkCompetenciesUngrouped(int frameworkId)
905+
public IEnumerable<FrameworkCompetency> GetFrameworkCompetenciesUngrouped(int frameworkId, int? assessmentId)
901906
{
907+
var assessmentFilter = assessmentId.HasValue ?
908+
@$"AND c.ID NOT IN (SELECT CompetencyID
909+
FROM SelfAssessmentStructure
910+
WHERE (SelfAssessmentID = {assessmentId}))"
911+
: string.Empty;
902912
return connection.Query<FrameworkCompetency>(
903-
@"SELECT fc.ID, c.ID AS CompetencyID, c.Name, c.Description, fc.Ordering, COUNT(caq.AssessmentQuestionID) AS AssessmentQuestions,(select COUNT(CompetencyId) from CompetencyLearningResources where CompetencyID=c.ID) AS CompetencyLearningResourcesCount
913+
@$"SELECT fc.ID, c.ID AS CompetencyID, c.Name, c.Description, fc.Ordering, COUNT(caq.AssessmentQuestionID) AS AssessmentQuestions,(select COUNT(CompetencyId) from CompetencyLearningResources where CompetencyID=c.ID) AS CompetencyLearningResourcesCount
904914
FROM FrameworkCompetencies AS fc
905915
INNER JOIN Competencies AS c ON fc.CompetencyID = c.ID
906916
LEFT OUTER JOIN
907917
CompetencyAssessmentQuestions AS caq ON c.ID = caq.CompetencyID
908918
WHERE fc.FrameworkID = @frameworkId
909-
AND fc.FrameworkCompetencyGroupID IS NULL
919+
AND fc.FrameworkCompetencyGroupID IS NULL {assessmentFilter}
910920
GROUP BY fc.ID, c.ID, c.Name, c.Description, fc.Ordering
911921
ORDER BY fc.Ordering",
912922
new { frameworkId }

DigitalLearningSolutions.Web/Controllers/CompetencyAssessmentsController/CompetencyAssessments.cs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -557,8 +557,8 @@ public IActionResult AddCompetencies(int competencyAssessmentId, int frameworkId
557557
}
558558
var framework = frameworkService.GetBaseFrameworkByFrameworkId(frameworkId, adminId);
559559
var selectedFrameworkCompetencies = competencyAssessmentService.GetLinkedFrameworkCompetencyIds(competencyAssessmentId, frameworkId);
560-
var groupedCompetencies = frameworkService.GetFrameworkCompetencyGroups(frameworkId);
561-
var ungroupedCompetencies = frameworkService.GetFrameworkCompetenciesUngrouped(frameworkId);
560+
var groupedCompetencies = frameworkService.GetFrameworkCompetencyGroups(frameworkId, competencyAssessmentId);
561+
var ungroupedCompetencies = frameworkService.GetFrameworkCompetenciesUngrouped(frameworkId, competencyAssessmentId);
562562
var competencyIds = ungroupedCompetencies.Select(c => c.CompetencyID).ToArray();
563563
var competencyFlags = frameworkService.GetSelectedCompetencyFlagsByCompetecyIds(competencyIds);
564564
foreach (var competency in ungroupedCompetencies)
@@ -579,6 +579,7 @@ public IActionResult AddComptencies(AddCompetenciesFormData model, int competenc
579579
{
580580
if (!ModelState.IsValid)
581581
{
582+
582583
//reload model and view
583584
}
584585
return View(model);

DigitalLearningSolutions.Web/Controllers/FrameworksController/Frameworks.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -723,9 +723,9 @@ public IActionResult ViewFramework(string tabname, int frameworkId, int? framewo
723723
model.TabNavLinks = new TabsNavViewModel(FrameworkTab.Details, routeData);
724724
break;
725725
case "Structure":
726-
model.FrameworkCompetencyGroups = frameworkService.GetFrameworkCompetencyGroups(frameworkId).ToList();
726+
model.FrameworkCompetencyGroups = frameworkService.GetFrameworkCompetencyGroups(frameworkId, null).ToList();
727727
model.CompetencyFlags = frameworkService.GetCompetencyFlagsByFrameworkId(frameworkId, null, selected: true);
728-
model.FrameworkCompetencies = frameworkService.GetFrameworkCompetenciesUngrouped(frameworkId);
728+
model.FrameworkCompetencies = frameworkService.GetFrameworkCompetenciesUngrouped(frameworkId, null);
729729
model.TabNavLinks = new TabsNavViewModel(FrameworkTab.Structure, routeData);
730730
break;
731731
case "Comments":
@@ -746,9 +746,9 @@ public IActionResult PrintLayout(int frameworkId)
746746
{
747747
DetailFramework = detailFramework,
748748
};
749-
model.FrameworkCompetencyGroups = frameworkService.GetFrameworkCompetencyGroups(frameworkId).ToList();
749+
model.FrameworkCompetencyGroups = frameworkService.GetFrameworkCompetencyGroups(frameworkId, null).ToList();
750750
model.CompetencyFlags = frameworkService.GetCompetencyFlagsByFrameworkId(frameworkId, null, selected: true);
751-
model.FrameworkCompetencies = frameworkService.GetFrameworkCompetenciesUngrouped(frameworkId);
751+
model.FrameworkCompetencies = frameworkService.GetFrameworkCompetenciesUngrouped(frameworkId, null);
752752
return View("Developer/FrameworkPrintLayout", model);
753753
}
754754
[ResponseCache(CacheProfileName = "Never")]

DigitalLearningSolutions.Web/Services/FrameworkService.cs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -46,9 +46,9 @@ public interface IFrameworkService
4646
CollaboratorNotification? GetCollaboratorNotification(int id, int invitedByAdminId);
4747

4848
// Competencies/groups:
49-
IEnumerable<FrameworkCompetencyGroup> GetFrameworkCompetencyGroups(int frameworkId);
49+
IEnumerable<FrameworkCompetencyGroup> GetFrameworkCompetencyGroups(int frameworkId, int? assessmentId);
5050

51-
IEnumerable<FrameworkCompetency> GetFrameworkCompetenciesUngrouped(int frameworkId);
51+
IEnumerable<FrameworkCompetency> GetFrameworkCompetenciesUngrouped(int frameworkId, int? assessmentId);
5252

5353
CompetencyGroupBase? GetCompetencyGroupBaseById(int Id);
5454

@@ -481,9 +481,9 @@ public IEnumerable<BrandedFramework> GetFrameworkByFrameworkName(string framewor
481481
return frameworkDataService.GetFrameworkByFrameworkName(frameworkName, adminId);
482482
}
483483

484-
public IEnumerable<FrameworkCompetency> GetFrameworkCompetenciesUngrouped(int frameworkId)
484+
public IEnumerable<FrameworkCompetency> GetFrameworkCompetenciesUngrouped(int frameworkId, int? assessmentId)
485485
{
486-
return frameworkDataService.GetFrameworkCompetenciesUngrouped(frameworkId);
486+
return frameworkDataService.GetFrameworkCompetenciesUngrouped(frameworkId, assessmentId);
487487
}
488488

489489
public FrameworkCompetency? GetFrameworkCompetencyById(int Id)
@@ -496,9 +496,9 @@ public IEnumerable<FrameworkCompetency> GetFrameworkCompetenciesUngrouped(int fr
496496
return frameworkDataService.GetFrameworkCompetencyForPreview(frameworkCompetencyId);
497497
}
498498

499-
public IEnumerable<FrameworkCompetencyGroup> GetFrameworkCompetencyGroups(int frameworkId)
499+
public IEnumerable<FrameworkCompetencyGroup> GetFrameworkCompetencyGroups(int frameworkId, int? assessmentId)
500500
{
501-
return frameworkDataService.GetFrameworkCompetencyGroups(frameworkId);
501+
return frameworkDataService.GetFrameworkCompetencyGroups(frameworkId, assessmentId);
502502
}
503503

504504
public string? GetFrameworkConfigForFrameworkId(int frameworkId)

DigitalLearningSolutions.Web/Services/ImportCompetenciesFromFileService.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ public ImportCompetenciesResult PreProcessCompetenciesTable(IXLWorkbook workbook
3737
var newCompetencyIds = competencyRows.Select(row => row.ID ?? 0).ToList();
3838
var existingIds = frameworkService.GetFrameworkCompetencyOrder(frameworkId, newCompetencyIds);
3939
var existingGroups = frameworkService
40-
.GetFrameworkCompetencyGroups(frameworkId)
40+
.GetFrameworkCompetencyGroups(frameworkId, null)
4141
.Select(row => row.Name)
4242
.Distinct()
4343
.ToList();
@@ -150,7 +150,7 @@ internal ImportCompetenciesResult ProcessCompetenciesTable(IXLTable table, int a
150150
.ToList();
151151
for (int i = 0; i < competencyGroupCount; i++)
152152
{
153-
var existingGroups = frameworkService.GetFrameworkCompetencyGroups(frameworkId).Select(row => new { row.ID, row.Name })
153+
var existingGroups = frameworkService.GetFrameworkCompetencyGroups(frameworkId, null).Select(row => new { row.ID, row.Name })
154154
.Distinct()
155155
.ToList();
156156
var placesToMove = Math.Abs(existingGroups.FindIndex(group => group.Name == distinctCompetencyGroups[i]) - i);

0 commit comments

Comments
 (0)