Skip to content

Commit 9d2af6a

Browse files
committed
TD-5307 Begins to implement controller, viewmodel and view (WIP)
1 parent 40be51c commit 9d2af6a

File tree

5 files changed

+97
-0
lines changed

5 files changed

+97
-0
lines changed

DigitalLearningSolutions.Data/DataServices/CompetencyAssessmentDataService.cs

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,8 @@ public interface ICompetencyAssessmentDataService
2828

2929
CompetencyAssessmentTaskStatus GetOrInsertAndReturnAssessmentTaskStatus(int assessmentId, bool frameworkBased);
3030

31+
int[] GetLinkedFrameworkIds (int assessmentId);
32+
3133
//UPDATE DATA
3234
bool UpdateCompetencyAssessmentName(int competencyAssessmentId, int adminId, string competencyAssessmentName);
3335

@@ -459,5 +461,15 @@ public bool UpdateRoleProfileLinksTaskStatus(int assessmentId, bool taskStatus)
459461
}
460462
return true;
461463
}
464+
465+
public int[] GetLinkedFrameworkIds(int assessmentId)
466+
{
467+
return [.. connection.Query<int>(
468+
@"SELECT FrameworkId
469+
FROM SelfAssessmentFrameworks
470+
WHERE (SelfAssessmentId = @assessmentId) AND (RemovedDate IS NULL)",
471+
new { assessmentId }
472+
)];
473+
}
462474
}
463475
}

DigitalLearningSolutions.Web/Controllers/CompetencyAssessmentsController/CompetencyAssessments.cs

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -389,5 +389,25 @@ public IActionResult SaveVocabulary(EditVocabularyViewModel model)
389389
competencyAssessmentService.UpdateVocabularyTaskStatus(model.ID, model.TaskStatus ?? false);
390390
return RedirectToAction("ManageCompetencyAssessment", new { competencyAssessmentId = model.ID });
391391
}
392+
[Route("/CompetencyAssessments/{competencyAssessmentId}/Frameworks/")]
393+
public IActionResult SelectFrameworkSources(int competencyAssessmentId)
394+
{
395+
var adminId = GetAdminID();
396+
var frameworks = frameworkService.GetAllFrameworks(adminId);
397+
var competencyAssessmentBase = competencyAssessmentService.GetCompetencyAssessmentBaseById(competencyAssessmentId, adminId);
398+
if (competencyAssessmentBase == null)
399+
{
400+
logger.LogWarning($"Failed to load Vocabulary page for competencyAssessmentId: {competencyAssessmentId} adminId: {adminId}");
401+
return StatusCode(500);
402+
}
403+
if (competencyAssessmentBase.UserRole < 2)
404+
{
405+
return StatusCode(403);
406+
}
407+
var selectedFrameworks = competencyAssessmentService.GetLinkedFrameworkIds(competencyAssessmentId);
408+
var competencyAssessmentTaskStatus = competencyAssessmentService.GetCompetencyAssessmentTaskStatus(competencyAssessmentId, null);
409+
var model = new SelectFrameworkSourcesViewModel(competencyAssessmentBase, frameworks, selectedFrameworks, competencyAssessmentTaskStatus.FrameworkLinksTaskStatus);
410+
return View(model);
411+
}
392412
}
393413
}

DigitalLearningSolutions.Web/Services/CompetencyAssessmentService.cs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ public interface ICompetencyAssessmentService
3737

3838
//INSERT DATA
3939
int InsertCompetencyAssessment(int adminId, int centreId, string competencyAssessmentName, int? frameworkId);
40+
int[] GetLinkedFrameworkIds(int assessmentId);
4041
}
4142
public class CompetencyAssessmentService : ICompetencyAssessmentService
4243
{
@@ -149,5 +150,10 @@ public bool UpdateRoleProfileLinksTaskStatus(int assessmentId, bool taskStatus)
149150
{
150151
return competencyAssessmentDataService.UpdateRoleProfileLinksTaskStatus(assessmentId, taskStatus);
151152
}
153+
154+
public int[] GetLinkedFrameworkIds(int assessmentId)
155+
{
156+
return competencyAssessmentDataService.GetLinkedFrameworkIds(assessmentId);
157+
}
152158
}
153159
}
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
using AngleSharp.Css;
2+
using DigitalLearningSolutions.Data.Models.CompetencyAssessments;
3+
using DigitalLearningSolutions.Data.Models.Frameworks;
4+
using DocumentFormat.OpenXml.Office2010.Excel;
5+
using System.Collections.Generic;
6+
using System.Threading.Tasks;
7+
8+
namespace DigitalLearningSolutions.Web.ViewModels.CompetencyAssessments
9+
{
10+
public class SelectFrameworkSourcesViewModel
11+
{
12+
public SelectFrameworkSourcesViewModel() { }
13+
public SelectFrameworkSourcesViewModel(CompetencyAssessmentBase competencyAssessmentBase, IEnumerable<BrandedFramework> frameworks, int[] selectedFrameworks, bool? taskStatus)
14+
{
15+
ID = competencyAssessmentBase.ID;
16+
CompetencyAssessmentName = competencyAssessmentBase.CompetencyAssessmentName;
17+
UserRole = competencyAssessmentBase.UserRole;
18+
TaskStatus = taskStatus;
19+
Frameworks = frameworks;
20+
SelectedFrameworks = selectedFrameworks;
21+
}
22+
public IEnumerable<BrandedFramework> Frameworks { get; set; }
23+
public int[] SelectedFrameworks { get; set; }
24+
public IEnumerable<NRPRoles> Roles { get; set; }
25+
public int ID { get; set; }
26+
public string CompetencyAssessmentName { get; set; }
27+
public int UserRole { get; set; }
28+
public bool? TaskStatus { get; set; }
29+
public string? GroupName { get; set; }
30+
public string? SubGroupName { get; set; }
31+
public string? RoleName { get; set; }
32+
}
33+
}
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
@using DigitalLearningSolutions.Web.ViewModels.CompetencyAssessments
2+
@model SelectFrameworkSourcesViewModel;
3+
@{
4+
ViewData["Title"] = "Select Framework Sources";
5+
ViewData["Application"] = "Framework Service";
6+
}
7+
<link rel="stylesheet" href="@Url.Content("~/css/jodit.css")" asp-append-version="true">
8+
<link rel="stylesheet" href="@Url.Content("~/css/frameworks/frameworksShared.css")" asp-append-version="true">
9+
@section NavMenuItems {
10+
<partial name="~/Views/Frameworks/Shared/_NavMenuItems.cshtml" />
11+
}
12+
13+
@section NavBreadcrumbs {
14+
<nav class="nhsuk-breadcrumb" aria-label="Breadcrumb">
15+
<div class="nhsuk-width-container">
16+
<ol class="nhsuk-breadcrumb__list">
17+
<li class="nhsuk-breadcrumb__item"><a class="nhsuk-breadcrumb__link trigger-loader" asp-action="ViewCompetencyAssessments" asp-route-tabname="Mine">Competency Assessments</a></li>
18+
<li class="nhsuk-breadcrumb__item"><a class="nhsuk-breadcrumb__link trigger-loader" asp-action="ManageCompetencyAssessment" asp-route-competencyAssessmentId="@Model.ID">Manage Competency Assessment</a></li>
19+
<li class="nhsuk-breadcrumb__item">Introductory text</li>
20+
</ol>
21+
<p class="nhsuk-breadcrumb__back"><a class="nhsuk-breadcrumb__backlink" asp-action="ManageCompetencyAssessment" asp-route-competencyAssessmentId="@Model.ID">Back to manage competency assessment</a></p>
22+
</div>
23+
</nav>
24+
}
25+
26+
<h1>Select framework sources for @Model.CompetencyAssessmentName</h1>

0 commit comments

Comments
 (0)