Skip to content

Commit 66f6074

Browse files
authored
Merge pull request #2879 from TechnologyEnhancedLearning/Develop/Features/TD-4560-ChangetheManageoptionalcompetenciesviewtoallowselectionofcompetenciesbygroup
TD-4560 Change the Manage optional competencies view to allow selection of competencies by group
2 parents a6e78a2 + 2ba2394 commit 66f6074

File tree

3 files changed

+102
-49
lines changed

3 files changed

+102
-49
lines changed

DigitalLearningSolutions.Web/Controllers/LearningPortalController/SelfAssessment.cs

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1538,6 +1538,23 @@ ManageOptionalCompetenciesViewModel model
15381538
);
15391539
}
15401540
}
1541+
if (model.GroupOptionalCompetenciesChecked != null)
1542+
{
1543+
var optionalCompetencies =
1544+
selfAssessmentService.GetCandidateAssessmentOptionalCompetencies(selfAssessmentId, delegateUserId);
1545+
foreach (var competencyGroup in model.GroupOptionalCompetenciesChecked)
1546+
{
1547+
var IncludedSelfAssessmentStructureIds = optionalCompetencies.Where(x => x.CompetencyGroup == competencyGroup).Select(x => x.SelfAssessmentStructureId).ToList();
1548+
foreach (var selfAssessmentStructureId in IncludedSelfAssessmentStructureIds)
1549+
{
1550+
selfAssessmentService.UpdateCandidateAssessmentOptionalCompetencies(
1551+
selfAssessmentStructureId.Value,
1552+
delegateUserId
1553+
);
1554+
}
1555+
}
1556+
1557+
}
15411558

15421559
return RedirectToAction("SelfAssessmentOverview", new { selfAssessmentId, vocabulary });
15431560
}

DigitalLearningSolutions.Web/ViewModels/LearningPortal/SelfAssessments/ManageOptionalCompetenciesViewModel.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ public class ManageOptionalCompetenciesViewModel
1010
public CurrentSelfAssessment? SelfAssessment { get; set; }
1111
public IEnumerable<IGrouping<string, Competency>>? CompetencyGroups { get; set; }
1212
public List<int>? IncludedSelfAssessmentStructureIds { get; set; }
13+
public List<string>? GroupOptionalCompetenciesChecked { get; set; }
1314
public string VocabPlural()
1415
{
1516
return FrameworkVocabularyHelper.VocabularyPlural(SelfAssessment.Vocabulary);

DigitalLearningSolutions.Web/Views/LearningPortal/SelfAssessments/ManageOptionalCompetencies.cshtml

Lines changed: 84 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,11 @@
88
ViewData["SelfAssessmentTitle"] = @Model.SelfAssessment.Name;
99
var backLinkData = Html.GetRouteValues();
1010
}
11+
<style>
12+
.nhsuk-details__summary-text {
13+
padding: 10px;
14+
}
15+
</style>
1116
@if (ViewBag.FromAddOptionalPage != null)
1217
{
1318
@section breadcrumbs {
@@ -82,67 +87,97 @@ else
8287
@foreach (var competencyGroup in Model.CompetencyGroups)
8388
{
8489
<fieldset class="nhsuk-fieldset nhsuk-u-margin-bottom-4">
85-
<legend class="nhsuk-fieldset__legend nhsuk-fieldset__legend--l">
86-
<span class="nhsuk-fieldset__heading">
87-
@competencyGroup.Key
88-
</span>
89-
</legend>
90+
9091
@if (competencyGroup.Count() > 1)
9192
{
92-
<div class="nhsuk-grid-row nhsuk-u-margin-top-3 nhsuk-u-margin-bottom-1 js-only-block">
93-
<div class="nhsuk-grid-column-full">
94-
<a class="nhsuk-button select-all-button select-all status-tag nhsuk-u-margin-bottom-1" role="button" data-group="@competencyGroup.Key" name="selectAll" value="true">Select all @Model.VocabPlural().ToLower()</a>
95-
<a class="nhsuk-button select-all-button deselect-all status-tag nhsuk-u-margin-bottom-1" role="button" data-group="@competencyGroup.Key" id="" name="selectAll" value="false">Deselect all @Model.VocabPlural().ToLower()</a>
96-
</div>
97-
</div>
98-
}
99-
100-
<div class="nhsuk-checkboxes">
101-
@foreach (var competency in competencyGroup)
93+
@if (competencyGroup.Any(x => x.GroupOptionalCompetencies))
10294
{
103-
@if (competency.GroupOptionalCompetencies)
104-
{
105-
<div class="nhsuk-checkboxes__item">
106-
107-
<input data-group="@competencyGroup.Key" class="nhsuk-checkboxes__input select-all-checkbox" id="[email protected]" name="resultChecked" type="checkbox" value="@competency.SelfAssessmentStructureId">
108-
<label class="nhsuk-label nhsuk-checkboxes__label nhsuk-u-font-size-16" for="[email protected]">
109-
<h3 class="nhsuk-details__summary-text nhsuk-u-margin-bottom-0"> @competencyGroup.Key</h3>
110-
</label>
111-
</div>
11295

113-
<details class="nhsuk-details">
114-
<summary class="nhsuk-details__summary nhsuk-u-padding-0">
96+
<div class="nhsuk-checkboxes__item">
97+
<input data-group="@competencyGroup.Key" class="nhsuk-checkboxes__input select-all-checkbox" id="[email protected]" name="groupOptionalCompetenciesChecked" checked="@(competencyGroup.Any(x => x.IncludedInSelfAssessment == true) ? true : false)" type="checkbox" value="@competencyGroup.Key">
98+
<label class="nhsuk-label nhsuk-checkboxes__label nhsuk-u-font-size-16" for="[email protected]">
99+
<legend class="nhsuk-fieldset__legend nhsuk-fieldset__legend--l">
100+
<span class="nhsuk-fieldset__heading">
101+
@competencyGroup.Key
102+
</span>
103+
</legend>
104+
</label>
105+
</div>
106+
<details class="nhsuk-details">
107+
<summary class="nhsuk-details__summary nhsuk-u-padding-0">
108+
<h3 class="nhsuk-details__summary-text nhsuk-u-margin-bottom-0">
115109
<span class="nhsuk-u-margin-bottom-0">
116-
<span class="nhsuk-details__summary-text"> &nbsp;&nbsp; What&rsquo;s included in the @competency.CompetencyGroup </span>
110+
<span class="nhsuk-details__summary-text" id="@competencyGroup.Key">
111+
What&rsquo;s included in the @competencyGroup.Key
112+
</span>
117113
</span>
118-
</summary>
119114

120-
<div class="nhsuk-details__text nhsuk-u-margin-left-6 nhsuk-u-margin-top-2">
121-
@(Html.Raw(@competency.Name))
122-
</div>
123-
</details>
124-
<br />
125-
}
126-
else
127-
{
128-
<div class="nhsuk-checkboxes__item">
129-
<input class="nhsuk-checkboxes__input select-all-checkbox" data-group="@competencyGroup.Key" id="[email protected]" name="IncludedSelfAssessmentStructureIds" checked="@(Model.IncludedSelfAssessmentStructureIds != null ? Model.IncludedSelfAssessmentStructureIds.Contains((int)competency.SelfAssessmentStructureId) : false)" type="checkbox" value="@competency.SelfAssessmentStructureId">
130-
<label class="nhsuk-label nhsuk-checkboxes__label" for="[email protected]">
131-
@foreach (var flag in competency.CompetencyFlags)
115+
</h3>
116+
</summary>
117+
118+
<div class="nhsuk-details__text nhsuk-card">
119+
<dl class="nhsuk-summary-list">
120+
121+
@foreach (var competency in competencyGroup)
132122
{
133-
<span class="nhsuk-u-padding-right-2 @(ViewData["cssClass"]?.ToString())">
134-
<strong class="nhsuk-tag @flag.FlagTagClass">
135-
@flag.FlagName
136-
</strong>
137-
</span>
123+
<div class="nhsuk-summary-list__row">
124+
@foreach (var flag in competency.CompetencyFlags)
125+
{
126+
<span class="nhsuk-u-padding-right-2 @(ViewData["cssClass"]?.ToString())">
127+
<strong class="nhsuk-tag @flag.FlagTagClass">
128+
@flag.FlagName
129+
</strong>
130+
</span>
131+
}
132+
<dd class="nhsuk-summary-list__value">
133+
@competency.Name
134+
</dd>
135+
</div>
138136
}
137+
</dl>
139138

140-
@competency.Name
141-
</label>
139+
140+
</div>
141+
142+
143+
</details>
144+
}
145+
else
146+
{
147+
<legend class="nhsuk-fieldset__legend nhsuk-fieldset__legend--l">
148+
<span class="nhsuk-fieldset__heading">
149+
@competencyGroup.Key
150+
</span>
151+
</legend>
152+
<div class="nhsuk-grid-row nhsuk-u-margin-top-3 nhsuk-u-margin-bottom-1 js-only-block">
153+
<div class="nhsuk-grid-column-full">
154+
<a class="nhsuk-button select-all-button select-all status-tag nhsuk-u-margin-bottom-1" role="button" data-group="@competencyGroup.Key" name="selectAll" value="true">Select all @Model.VocabPlural().ToLower()</a>
155+
<a class="nhsuk-button select-all-button deselect-all status-tag nhsuk-u-margin-bottom-1" role="button" data-group="@competencyGroup.Key" id="" name="selectAll" value="false">Deselect all @Model.VocabPlural().ToLower()</a>
142156
</div>
143-
}
157+
</div>
158+
<div class="nhsuk-checkboxes">
159+
@foreach (var competency in competencyGroup)
160+
{
161+
<div class="nhsuk-checkboxes__item">
162+
<input class="nhsuk-checkboxes__input select-all-checkbox" data-group="@competencyGroup.Key" id="[email protected]" name="IncludedSelfAssessmentStructureIds" checked="@(Model.IncludedSelfAssessmentStructureIds != null ? Model.IncludedSelfAssessmentStructureIds.Contains((int)competency.SelfAssessmentStructureId) : false)" type="checkbox" value="@competency.SelfAssessmentStructureId">
163+
<label class="nhsuk-label nhsuk-checkboxes__label" for="[email protected]">
164+
@foreach (var flag in competency.CompetencyFlags)
165+
{
166+
<span class="nhsuk-u-padding-right-2 @(ViewData["cssClass"]?.ToString())">
167+
<strong class="nhsuk-tag @flag.FlagTagClass">
168+
@flag.FlagName
169+
</strong>
170+
</span>
171+
}
172+
173+
@competency.Name
174+
</label>
175+
</div>
176+
177+
}
178+
</div>
144179
}
145-
</div>
180+
}
146181
</fieldset>
147182
}
148183
</nhs-form-group>

0 commit comments

Comments
 (0)