Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -579,6 +579,9 @@ public IActionResult AddComptencies(AddCompetenciesFormData model, int competenc
competency.CompetencyFlags = competencyFlags.Where(f => f.CompetencyId == competency.CompetencyID);
}
var models = new AddCompetenciesViewModel(competencyAssessmentBase, groupedCompetencies, ungroupedCompetencies, frameworkId, framework.FrameworkName, model.SelectedCompetencyIds);
ModelState.Clear();
ModelState.AddModelError("SelectedCompetencyIds", $"You must select at least one {models.VocabularySingular}");
ViewBag.RequiredCheckboxMessage = "You must select at least one "+ models.VocabularySingular;
return View("AddCompetencies", models);
}
if (model.SelectedCompetencyIds != null)
Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,8 @@
using System.ComponentModel.DataAnnotations;

namespace DigitalLearningSolutions.Web.ViewModels.CompetencyAssessments
namespace DigitalLearningSolutions.Web.ViewModels.CompetencyAssessments
{
public class AddCompetenciesFormData
{
public int ID { get; set; }
[Required(ErrorMessage = "Select at least one competency")]
public int[] SelectedCompetencyIds { get; set; }
public int FrameworkId { get; set; }
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ public AddCompetenciesViewModel(CompetencyAssessmentBase competencyAssessmentBas
public string VocabularyPlural { get; set; }
public IEnumerable<FrameworkCompetencyGroup> GroupedCompetencies { get; set; }
public IEnumerable<FrameworkCompetency> UngroupedCompetencies { get; set; }
[Required(ErrorMessage = "Select at least one competency")]
[Required]
public int[] SelectedCompetencyIds { get; set; }
public int FrameworkId { get; set; }
public string? FrameworkName { get; set; }
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@
ViewData["Title"] = $"Add {@Model.VocabularyPlural.ToLower()} to self-assessment";
ViewData["Application"] = "Framework service";
var errorHasOccurred = !ViewData.ModelState.IsValid;
var noSelection = Model.SelectedCompetencyIds == null || !Model.SelectedCompetencyIds.Any();
var isFirst = true;
}
<link rel="stylesheet" href="@Url.Content("~/css/frameworks/frameworksShared.css")" asp-append-version="true">
@section NavMenuItems {
Expand Down Expand Up @@ -40,6 +42,11 @@
Add @Model.VocabularyPlural.ToLower() to assessment
</h1>
</legend>
<div class="nhsuk-u-padding-top-1 nhsuk-u-padding-bottom-3">
<span class="error-message--margin-bottom-1 nhsuk-error-message">
<span>@ViewBag.RequiredCheckboxMessage</span>
</span>
</div>
@if (Model.GroupedCompetencies.Count() > 0)
{
@foreach (var competencyGroup in Model.GroupedCompetencies)
Expand All @@ -62,8 +69,18 @@
<div class="nhsuk-checkboxes">
@foreach (var competency in competencyGroup.FrameworkCompetencies)
{
var shouldAutofocus = noSelection && isFirst;
isFirst = false;
<div class="nhsuk-checkboxes__item">
<input class="nhsuk-checkboxes__input select-all-checkbox" data-group="@competencyGroup.CompetencyGroupID" id="competency-check-@competencyGroup.CompetencyGroupID-@competency.CompetencyID" name="SelectedCompetencyIds" checked="@(Model.SelectedCompetencyIds != null ? Model.SelectedCompetencyIds.Contains((int)competency.CompetencyID) : false)" type="checkbox" value="@competency.CompetencyID">
<input class="nhsuk-checkboxes__input select-all-checkbox"
data-group="@competencyGroup.CompetencyGroupID"
id="competency-check-@competencyGroup.CompetencyGroupID-@competency.CompetencyID"
name="SelectedCompetencyIds"
checked="@(Model.SelectedCompetencyIds != null ?
Model.SelectedCompetencyIds.Contains((int)competency.CompetencyID) : false)"
type="checkbox"
@(shouldAutofocus ? "autofocus" : "")
value="@competency.CompetencyID">
<label class="nhsuk-label nhsuk-checkboxes__label" for="competency-check-@competencyGroup.CompetencyGroupID-@competency.CompetencyID">
@foreach (var flag in competency.CompetencyFlags)
{
Expand Down
Loading