Skip to content

Commit c449750

Browse files
committed
WIP optional competencies MVC
1 parent 0e63d48 commit c449750

File tree

5 files changed

+50
-5
lines changed

5 files changed

+50
-5
lines changed

DigitalLearningSolutions.Data/DataServices/CompetencyAssessmentDataService.cs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,9 @@ public class CompetencyAssessmentDataService : ICompetencyAssessmentDataService
8383
sa.NRPProfessionalGroupID,
8484
sa.NRPSubGroupID,
8585
sa.NRPRoleID,
86-
sa.PublishStatusID, sa.Vocabulary, CASE WHEN sa.CreatedByAdminID = @adminId THEN 3 WHEN sac.CanModify = 1 THEN 2 WHEN sac.CanModify = 0 THEN 1 ELSE 0 END AS UserRole";
86+
sa.PublishStatusID, sa.Vocabulary, CASE WHEN sa.CreatedByAdminID = @adminId THEN 3 WHEN sac.CanModify = 1 THEN 2 WHEN sac.CanModify = 0 THEN 1 ELSE 0 END AS UserRole,
87+
sa.MinimumOptionalCompetencies,
88+
sa.ManageOptionalCompetenciesPrompt";
8789

8890
private const string SelfAssessmentFields =
8991
@", sa.CategoryID, sa.CreatedDate,
@@ -646,7 +648,7 @@ public bool UpdateRoleRequirementsTaskStatus(int assessmentId, bool taskStatus,
646648
public IEnumerable<Competency> GetCompetenciesForCompetencyAssessment(int competencyAssessmentId)
647649
{
648650
return connection.Query<Competency>(
649-
@"SELECT sas.ID AS StructureId, sas.CompetencyID, f.ID AS FrameworkId, f.FrameworkName, cg.ID AS GroupId, cg.Name AS GroupName, c.Name AS CompetencyName, c.Description AS CompetencyDescription, sas.Optional
651+
@"SELECT sas.ID AS StructureId, sas.CompetencyID, f.ID AS FrameworkId, f.FrameworkName, cg.ID AS GroupId, cg.Name AS GroupName, c.Name AS CompetencyName, c.Description AS CompetencyDescription, sas.Optional, sas.GroupOptionalCompetencies
650652
FROM SelfAssessmentStructure AS sas INNER JOIN
651653
Competencies AS c ON sas.CompetencyID = c.ID INNER JOIN
652654
CompetencyGroups AS cg ON sas.CompetencyGroupID = cg.ID INNER JOIN

DigitalLearningSolutions.Data/Models/CompetencyAssessments/Competency.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,5 +11,6 @@ public class Competency
1111
public string? CompetencyName { get; set; }
1212
public string? CompetencyDescription { get; set; }
1313
public bool Optional { get; set; }
14+
public bool GroupOptionalCompetencies { get; set; }
1415
}
1516
}

DigitalLearningSolutions.Data/Models/CompetencyAssessments/CompetencyAssessmentBase.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,8 @@ public class CompetencyAssessmentBase
2020
public int PublishStatusID { get; set; }
2121
public int UserRole { get; set; }
2222
public string? Vocabulary { get; set; }
23-
23+
public int? MinimumOptionalCompetencies { get; set; }
24+
public string? ManageOptionalCompetenciesPrompt { get; set; }
2425
}
2526
}
2627

DigitalLearningSolutions.Web/ViewModels/CompetencyAssessments/SelectOptionalCompetenciesViewModel.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ public SelectOptionalCompetenciesViewModel(CompetencyAssessmentBase competencyAs
1313
TaskStatus = taskStatus;
1414
CompetencyAssessmentName = competencyAssessmentBase.CompetencyAssessmentName;
1515
UserRole = competencyAssessmentBase.UserRole;
16-
Competencies = competencies;
16+
Competencies = competencies.Where(c => c.Optional == true);
1717
VocabularySingular = FrameworkVocabularyHelper.VocabularySingular(competencyAssessmentBase.Vocabulary);
1818
VocabularyPlural = FrameworkVocabularyHelper.VocabularyPlural(competencyAssessmentBase.Vocabulary);
1919
SelectedCompetencyIds = competencies.Where(c => c.Optional == true).Select(c => c.CompetencyID).ToArray();
Lines changed: 42 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,44 @@
11
@using DigitalLearningSolutions.Web.ViewModels.CompetencyAssessments
22
@model SelectOptionalCompetenciesViewModel;
3-
<h1>Select optional competencies</h1>
3+
<h1>Manage optional competencies</h1>
4+
<p class="nhsuk-lede-text">
5+
Manage optional competencies for the assessment @Model.CompetencyAssessmentName. Optional competencies can be selected for inclusion in a self assessment by a learner if required. Optional competencies can be configured to be added to the assessment individually or as a group.
6+
</p>
7+
@if(!Model.SelectedCompetencyIds.Any())
8+
{
9+
<p>No competencies have been made optional for this self assessment.</p>
10+
<a class="nhsuk-button" asp-action="SelectOptionalCompetencies"></a>
11+
}
12+
else
13+
{
14+
<table class="nhsuk-table">
15+
<caption class="nhsuk-table__caption nhsuk-table__caption--m">Optional competencies for @Model.CompetencyAssessmentName</caption>
16+
<thead class="nhsuk-table__head">
17+
<tr class="nhsuk-table__row">
18+
<th scope="col" class="nhsuk-table__header">Competency group</th>
19+
<th scope="col" class="nhsuk-table__header">Competency name</th>
20+
<th scope="col" class="nhsuk-table__header">Actions</th>
21+
</tr>
22+
</thead>
23+
<tbody class="nhsuk-table__body">
24+
@foreach (var competency in Model.Competencies)
25+
{
26+
<tr class="nhsuk-table__row">
27+
<td class="nhsuk-table__cell">@competency.GroupName</td>
28+
<td class="nhsuk-table__cell">@competency.CompetencyName</td>
29+
30+
<td class="nhsuk-table__cell">
31+
<a asp-action="RemoveOptionalCompetency" asp-route-competencyId="@competency.CompetencyID" class="nhsuk-link">Remove</a>
32+
</td>
33+
</tr>
34+
}
35+
</tbody>
36+
</table>
37+
<p class="nhsuk-lede-text">
38+
You can provide optional instruction text for learners explaining how to choose optional competencies for inclusion.
39+
</p>
40+
<p class="nhsuk-lede-text">
41+
You can also, optionally define a minimum number of optional competencies that must be included in an assessment for it to be valid.
42+
</p>
43+
}
44+

0 commit comments

Comments
 (0)