Skip to content

Commit daad7ed

Browse files
committed
Continues progress with loading data into select competencies views
1 parent 6ae3e59 commit daad7ed

File tree

6 files changed

+119
-17
lines changed

6 files changed

+119
-17
lines changed

DigitalLearningSolutions.Data/DataServices/FrameworkDataService.cs

Lines changed: 14 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -881,17 +881,20 @@ FROM FrameworkCompetencyGroups AS fcg INNER JOIN
881881
},
882882
new { frameworkId }
883883
);
884-
return result.GroupBy(frameworkCompetencyGroup => frameworkCompetencyGroup.CompetencyGroupID).Select(
885-
group =>
886-
{
887-
var groupedFrameworkCompetencyGroup = group.First();
888-
groupedFrameworkCompetencyGroup.FrameworkCompetencies = group.Where(frameworkCompetencyGroup => frameworkCompetencyGroup.FrameworkCompetencies.Count > 0)
889-
.Select(
890-
frameworkCompetencyGroup => frameworkCompetencyGroup.FrameworkCompetencies.Single()
891-
).ToList();
892-
return groupedFrameworkCompetencyGroup;
893-
}
894-
);
884+
return result
885+
.GroupBy(fcg => fcg.CompetencyGroupID)
886+
.Select(group =>
887+
{
888+
var groupedFrameworkCompetencyGroup = group.First();
889+
890+
// Flatten all FrameworkCompetencies from all instances in this group
891+
groupedFrameworkCompetencyGroup.FrameworkCompetencies = group
892+
.SelectMany(g => g.FrameworkCompetencies)
893+
.Where(fc => fc != null)
894+
.ToList();
895+
896+
return groupedFrameworkCompetencyGroup;
897+
});
895898
}
896899

897900
public IEnumerable<FrameworkCompetency> GetFrameworkCompetenciesUngrouped(int frameworkId)

DigitalLearningSolutions.Data/Models/Frameworks/FrameworkCompetency.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
namespace DigitalLearningSolutions.Data.Models.Frameworks
22
{
33
using DigitalLearningSolutions.Data.Models.SearchSortFilterPaginate;
4+
using System.Collections.Generic;
45
using System.ComponentModel.DataAnnotations;
56
public class FrameworkCompetency : BaseSearchableItem
67
{
@@ -15,6 +16,7 @@ public class FrameworkCompetency : BaseSearchableItem
1516
public int CompetencyLearningResourcesCount { get; set; }
1617
public string? FrameworkName { get; set; }
1718
public bool? AlwaysShowDescription { get; set; }
19+
public IEnumerable<CompetencyFlag> CompetencyFlags { get; set; } = new List<CompetencyFlag>();
1820

1921
public override string SearchableName
2022
{

DigitalLearningSolutions.Web/Controllers/CompetencyAssessmentsController/CompetencyAssessments.cs

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -560,9 +560,21 @@ public IActionResult AddCompetencies(int competencyAssessmentId, int frameworkId
560560
{
561561
return StatusCode(403);
562562
}
563+
var framework = frameworkService.GetBaseFrameworkByFrameworkId(frameworkId, adminId);
563564
var groupedCompetencies = frameworkService.GetFrameworkCompetencyGroups(frameworkId);
564565
var ungroupedCompetencies = frameworkService.GetFrameworkCompetenciesUngrouped(frameworkId);
565-
var model = new AddCompetenciesViewModel(competencyAssessmentBase, groupedCompetencies, ungroupedCompetencies, frameworkId);
566+
var competencyIds = ungroupedCompetencies.Select(c => c.CompetencyID).ToArray();
567+
var competencyFlags = frameworkService.GetSelectedCompetencyFlagsByCompetecyIds(competencyIds);
568+
foreach (var competency in ungroupedCompetencies)
569+
competency.CompetencyFlags = competencyFlags.Where(f => f.CompetencyId == competency.CompetencyID);
570+
foreach (var group in groupedCompetencies)
571+
{
572+
competencyIds = group.FrameworkCompetencies.Select(c => c.CompetencyID).ToArray();
573+
competencyFlags = frameworkService.GetSelectedCompetencyFlagsByCompetecyIds(competencyIds);
574+
foreach (var competency in group.FrameworkCompetencies)
575+
competency.CompetencyFlags = competencyFlags.Where(f => f.CompetencyId == competency.CompetencyID);
576+
}
577+
var model = new AddCompetenciesViewModel(competencyAssessmentBase, groupedCompetencies, ungroupedCompetencies, frameworkId, framework.FrameworkName);
566578
return View(model);
567579
}
568580
}

DigitalLearningSolutions.Web/ViewModels/CompetencyAssessments/AddCompetenciesViewModel.cs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
using System.Collections.Generic;
77
public class AddCompetenciesViewModel
88
{
9-
public AddCompetenciesViewModel(CompetencyAssessmentBase competencyAssessmentBase, IEnumerable<FrameworkCompetencyGroup> groupedCompetencies, IEnumerable<FrameworkCompetency> ungroupedCompetencies, int frameworkId)
9+
public AddCompetenciesViewModel(CompetencyAssessmentBase competencyAssessmentBase, IEnumerable<FrameworkCompetencyGroup> groupedCompetencies, IEnumerable<FrameworkCompetency> ungroupedCompetencies, int frameworkId, string? frameworkName)
1010
{
1111
ID = competencyAssessmentBase.ID;
1212
CompetencyAssessmentName = competencyAssessmentBase.CompetencyAssessmentName;
@@ -15,6 +15,8 @@ public AddCompetenciesViewModel(CompetencyAssessmentBase competencyAssessmentBas
1515
VocabularyPlural = FrameworkVocabularyHelper.VocabularyPlural(competencyAssessmentBase.Vocabulary);
1616
GroupedCompetencies = groupedCompetencies;
1717
UngroupedCompetencies = ungroupedCompetencies;
18+
FrameworkId = frameworkId;
19+
FrameworkName = frameworkName;
1820
}
1921
public int ID { get; set; }
2022
public string CompetencyAssessmentName { get; set; }
@@ -23,6 +25,8 @@ public AddCompetenciesViewModel(CompetencyAssessmentBase competencyAssessmentBas
2325
public string VocabularyPlural { get; set; }
2426
public IEnumerable<FrameworkCompetencyGroup> GroupedCompetencies { get; set; }
2527
public IEnumerable<FrameworkCompetency> UngroupedCompetencies { get; set; }
28+
public List<int> SelectedCompetencyIds { get; set; }
2629
public int FrameworkId { get; set; }
30+
public string? FrameworkName { get; set; }
2731
}
2832
}

DigitalLearningSolutions.Web/Views/CompetencyAssessments/AddCompetencies.cshtml

Lines changed: 79 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,4 +22,82 @@
2222
</nav>
2323
}
2424

25-
<h1>Add @Model.VocabularyPlural.ToLower() to @Model.CompetencyAssessmentName</h1>
25+
<h1>Add @Model.VocabularyPlural.ToLower() to assessment: @Model.CompetencyAssessmentName</h1>
26+
<form method="post">
27+
<nhs-form-group nhs-validation-for="SelectedCompetencyIds">
28+
<fieldset class="nhsuk-fieldset">
29+
<legend class="nhsuk-fieldset__legend">
30+
<h2>
31+
Select @Model.VocabularyPlural.ToLower() to include from @Model.FrameworkName
32+
</h2>
33+
</legend>
34+
35+
@if (Model.GroupedCompetencies.Count() > 0)
36+
{
37+
@foreach (var competencyGroup in Model.GroupedCompetencies)
38+
{
39+
@if (competencyGroup.FrameworkCompetencies.Count() > 1)
40+
{
41+
42+
<div class="nhsuk-u-margin-bottom-6">
43+
<h3>
44+
@competencyGroup.Name
45+
</h3>
46+
<div class="nhsuk-checkboxes">
47+
@foreach (var competency in competencyGroup.FrameworkCompetencies)
48+
{
49+
<div class="nhsuk-checkboxes__item">
50+
<input class="nhsuk-checkboxes__input" data-group="@competencyGroup.Name" id="[email protected]" name="IncludedSelfAssessmentStructureIds" checked="@(Model.SelectedCompetencyIds != null ? Model.SelectedCompetencyIds.Contains((int)competency.CompetencyID) : false)" type="checkbox" value="@competency.CompetencyID">
51+
<label class="nhsuk-label nhsuk-checkboxes__label" for="[email protected]">
52+
@foreach (var flag in competency.CompetencyFlags)
53+
{
54+
<span class="nhsuk-u-padding-right-2 @(ViewData["cssClass"]?.ToString())">
55+
<strong class="nhsuk-tag @flag.FlagTagClass">
56+
@flag.FlagName
57+
</strong>
58+
</span>
59+
}
60+
61+
@competency.Name
62+
</label>
63+
</div>
64+
65+
}
66+
</div>
67+
</div>
68+
}
69+
70+
}
71+
}
72+
73+
@if (Model.UngroupedCompetencies.Any())
74+
{
75+
<h3>
76+
Ungrouped @Model.VocabularyPlural.ToLower()
77+
</h3>
78+
@foreach (var competency in Model.UngroupedCompetencies)
79+
{
80+
81+
<div class="nhsuk-checkboxes__item">
82+
<input class="nhsuk-checkboxes__input" data-group="@competency.Name" id="[email protected]" name="IncludedSelfAssessmentStructureIds" checked="@(Model.SelectedCompetencyIds != null ? Model.SelectedCompetencyIds.Contains((int)competency.CompetencyID) : false)" type="checkbox" value="@competency.CompetencyID">
83+
<label class="nhsuk-label nhsuk-checkboxes__label" for="[email protected]">
84+
@foreach (var flag in competency.CompetencyFlags)
85+
{
86+
<span class="nhsuk-u-padding-right-2 @(ViewData["cssClass"]?.ToString())">
87+
<strong class="nhsuk-tag @flag.FlagTagClass">
88+
@flag.FlagName
89+
</strong>
90+
</span>
91+
}
92+
93+
@competency.Name
94+
</label>
95+
</div>
96+
97+
}
98+
}
99+
100+
</fieldset>
101+
</nhs-form-group>
102+
<button class="nhsuk-button" type="submit">Submit</button>
103+
</form>

DigitalLearningSolutions.Web/Views/CompetencyAssessments/ViewSelectedCompetencies.cshtml

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,21 +21,24 @@
2121
</div>
2222
</nav>
2323
}
24-
<h1>Select @Model.VocabularyPlural.ToLower() to assess for @Model.CompetencyAssessmentName</h1>
24+
<h1>@Model.VocabularyPlural to assess for @Model.CompetencyAssessmentName</h1>
2525
<table class="nhsuk-table">
2626
<caption class="nhsuk-table__caption">@Model.VocabularyPlural</caption>
2727
<thead class="nhsuk-table__head">
2828
<tr>
2929
<th scope="col" class="nhsuk-table__header">Framework</th>
3030
<th scope="col" class="nhsuk-table__header">Group</th>
31-
<th scope="col" class="nhsuk-table__header">Group</th>
31+
<th scope="col" class="nhsuk-table__header">Competency</th>
32+
<th scope="col" class="nhsuk-table__header">Action</th>
3233
</tr>
3334
</thead>
3435
<tbody class="nhsuk-table__body">
3536
@foreach (var competency in Model.Competencies)
3637
{
3738
<tr class="nhsuk-table__row">
38-
<td class="nhsuk-table__cell"></td>
39+
<td class="nhsuk-table__cell">@competency.FrameworkName</td>
40+
<td class="nhsuk-table__cell">@competency.GroupName</td>
41+
<td class="nhsuk-table__cell">@competency.CompetencyName</td>
3942
<td class="nhsuk-table__cell"></td>
4043
</tr>
4144
}

0 commit comments

Comments
 (0)