From 6691d3738ff277bb8c61b1b335a8c429dafdffc4 Mon Sep 17 00:00:00 2001 From: sherif-olaboye <123654949+sherif-olaboye@users.noreply.github.com> Date: Thu, 28 May 2026 09:55:03 +0100 Subject: [PATCH] TD-7343 Needs to add error msg on Add proficiencies to assessment'screen when saving the page without selecting the proficiencies --- .../CompetencyAssessments.cs | 19 ++++++++++++++++++- .../AddCompetenciesViewFormData.cs | 5 ++++- .../AddCompetenciesViewModel.cs | 3 +++ .../AddCompetencies.cshtml | 5 +++++ 4 files changed, 30 insertions(+), 2 deletions(-) diff --git a/DigitalLearningSolutions.Web/Controllers/CompetencyAssessmentsController/CompetencyAssessments.cs b/DigitalLearningSolutions.Web/Controllers/CompetencyAssessmentsController/CompetencyAssessments.cs index 4c12f9ac4b..0b1c07b02f 100644 --- a/DigitalLearningSolutions.Web/Controllers/CompetencyAssessmentsController/CompetencyAssessments.cs +++ b/DigitalLearningSolutions.Web/Controllers/CompetencyAssessmentsController/CompetencyAssessments.cs @@ -562,7 +562,24 @@ public IActionResult AddComptencies(AddCompetenciesFormData model, int competenc { if (!ModelState.IsValid) { - //reload model and view + var adminId = GetAdminID(); + var competencyAssessmentBase = competencyAssessmentService.GetCompetencyAssessmentBaseById(competencyAssessmentId, adminId); + var framework = frameworkService.GetBaseFrameworkByFrameworkId(frameworkId, adminId); + var groupedCompetencies = frameworkService.GetFrameworkCompetencyGroups(frameworkId, competencyAssessmentId); + var ungroupedCompetencies = frameworkService.GetFrameworkCompetenciesUngrouped(frameworkId, competencyAssessmentId); + var competencyIds = ungroupedCompetencies.Select(c => c.CompetencyID).ToArray(); + var competencyFlags = frameworkService.GetSelectedCompetencyFlagsByCompetecyIds(competencyIds); + foreach (var competency in ungroupedCompetencies) + competency.CompetencyFlags = competencyFlags.Where(f => f.CompetencyId == competency.CompetencyID); + foreach (var group in groupedCompetencies) + { + competencyIds = group.FrameworkCompetencies.Select(c => c.CompetencyID).ToArray(); + competencyFlags = frameworkService.GetSelectedCompetencyFlagsByCompetecyIds(competencyIds); + foreach (var competency in group.FrameworkCompetencies) + competency.CompetencyFlags = competencyFlags.Where(f => f.CompetencyId == competency.CompetencyID); + } + var models = new AddCompetenciesViewModel(competencyAssessmentBase, groupedCompetencies, ungroupedCompetencies, frameworkId, framework.FrameworkName, model.SelectedCompetencyIds); + return View("AddCompetencies", models); } if (model.SelectedCompetencyIds != null) { diff --git a/DigitalLearningSolutions.Web/ViewModels/CompetencyAssessments/AddCompetenciesViewFormData.cs b/DigitalLearningSolutions.Web/ViewModels/CompetencyAssessments/AddCompetenciesViewFormData.cs index 0e6d2ed887..07516407bf 100644 --- a/DigitalLearningSolutions.Web/ViewModels/CompetencyAssessments/AddCompetenciesViewFormData.cs +++ b/DigitalLearningSolutions.Web/ViewModels/CompetencyAssessments/AddCompetenciesViewFormData.cs @@ -1,8 +1,11 @@ -namespace DigitalLearningSolutions.Web.ViewModels.CompetencyAssessments +using System.ComponentModel.DataAnnotations; + +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; } } diff --git a/DigitalLearningSolutions.Web/ViewModels/CompetencyAssessments/AddCompetenciesViewModel.cs b/DigitalLearningSolutions.Web/ViewModels/CompetencyAssessments/AddCompetenciesViewModel.cs index 38b9e87765..24433fe494 100644 --- a/DigitalLearningSolutions.Web/ViewModels/CompetencyAssessments/AddCompetenciesViewModel.cs +++ b/DigitalLearningSolutions.Web/ViewModels/CompetencyAssessments/AddCompetenciesViewModel.cs @@ -4,6 +4,8 @@ using DigitalLearningSolutions.Data.Models.Frameworks; using DigitalLearningSolutions.Web.Helpers; using System.Collections.Generic; + using System.ComponentModel.DataAnnotations; + public class AddCompetenciesViewModel { public AddCompetenciesViewModel(CompetencyAssessmentBase competencyAssessmentBase, IEnumerable groupedCompetencies, IEnumerable ungroupedCompetencies, int frameworkId, string? frameworkName, int[] selectedFrameworkCompetencies) @@ -26,6 +28,7 @@ public AddCompetenciesViewModel(CompetencyAssessmentBase competencyAssessmentBas public string VocabularyPlural { get; set; } public IEnumerable GroupedCompetencies { get; set; } public IEnumerable UngroupedCompetencies { get; set; } + [Required(ErrorMessage = "Select at least one competency")] public int[] SelectedCompetencyIds { get; set; } public int FrameworkId { get; set; } public string? FrameworkName { get; set; } diff --git a/DigitalLearningSolutions.Web/Views/CompetencyAssessments/AddCompetencies.cshtml b/DigitalLearningSolutions.Web/Views/CompetencyAssessments/AddCompetencies.cshtml index cb3910d8cf..30a10c2ef8 100644 --- a/DigitalLearningSolutions.Web/Views/CompetencyAssessments/AddCompetencies.cshtml +++ b/DigitalLearningSolutions.Web/Views/CompetencyAssessments/AddCompetencies.cshtml @@ -3,6 +3,7 @@ @{ ViewData["Title"] = $"Add {@Model.VocabularyPlural.ToLower()} to self-assessment"; ViewData["Application"] = "Framework service"; + var errorHasOccurred = !ViewData.ModelState.IsValid; } @section NavMenuItems { @@ -24,6 +25,10 @@ }
+ @if (errorHasOccurred) + { + + }