Skip to content
Merged
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 @@ -14,6 +14,7 @@ public interface ICompetencyLearningResourcesDataService

IEnumerable<CompetencyResourceAssessmentQuestionParameter> GetCompetencyResourceAssessmentQuestionParameters(IEnumerable<int> competencyLearningResourceIds);
int AddCompetencyLearningResource(int resourceRefID, string originalResourceName, string description, string resourceType, string link, string catalogue, decimal rating, int competencyID, int adminId);
IEnumerable<CompetencyLearningResource> GetActiveCompetencyLearningResourcesByCompetencyIdAndReferenceId(int competencyId, int referenceId);
}

public class CompetencyLearningResourcesDataService : ICompetencyLearningResourcesDataService
Expand Down Expand Up @@ -120,5 +121,20 @@ FROM CompetencyResourceAssessmentQuestionParameters
new { competencyLearningResourceIds }
);
}
public IEnumerable<CompetencyLearningResource> GetActiveCompetencyLearningResourcesByCompetencyIdAndReferenceId(int competencyId, int referenceId)
{
return connection.Query<CompetencyLearningResource>(
@"SELECT
clr.ID,
clr.CompetencyID,
clr.LearningResourceReferenceID,
clr.AdminID,
lrr.ResourceRefID AS LearningHubResourceReferenceId
FROM CompetencyLearningResources AS clr
INNER JOIN LearningResourceReferences AS lrr ON lrr.ID = clr.LearningResourceReferenceID
WHERE CompetencyID = @competencyId AND ResourceRefID = @referenceId AND clr.RemovedDate IS NULL",
new { competencyId, referenceId }
);
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -107,6 +107,13 @@ public IActionResult ConfirmAddCompetencyLearningResourceSummary(CompetencyResou
{
var frameworkCompetency = frameworkService.GetFrameworkCompetencyById(model.FrameworkCompetencyId.Value);
string plainTextDescription = DisplayStringHelper.RemoveMarkup(model.Description);
var competencyLearningResource = competencyLearningResourcesService.GetActiveCompetencyLearningResourcesByCompetencyIdAndReferenceId(frameworkCompetency.CompetencyID, model.ReferenceId);
if (competencyLearningResource.Any())
{
ModelState.Clear();
ModelState.AddModelError("LearningResourceExists", "This learning resource is already signposted to the selected competency.");
return View("Developer/AddCompetencyLearningResourceSummary", model);
}
int competencyLearningResourceId = competencyLearningResourcesService.AddCompetencyLearningResource(model.ReferenceId, model.ResourceName, plainTextDescription, model.ResourceType, model.Link, model.SelectedCatalogue, model.Rating.Value, frameworkCompetency.CompetencyID, GetAdminId());
return RedirectToAction("StartSignpostingParametersSession", "Frameworks", new { model.FrameworkId, model.FrameworkCompetencyId, model.FrameworkCompetencyGroupId, competencyLearningResourceId });
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ public interface ICompetencyLearningResourcesService

IEnumerable<CompetencyResourceAssessmentQuestionParameter> GetCompetencyResourceAssessmentQuestionParameters(IEnumerable<int> competencyLearningResourceIds);
int AddCompetencyLearningResource(int resourceRefID, string originalResourceName, string description, string resourceType, string link, string catalogue, decimal rating, int competencyID, int adminId);
IEnumerable<CompetencyLearningResource> GetActiveCompetencyLearningResourcesByCompetencyIdAndReferenceId(int competencyId, int referenceId);
}
public class CompetencyLearningResourcesService : ICompetencyLearningResourcesService
{
Expand Down Expand Up @@ -40,5 +41,9 @@ public IEnumerable<CompetencyResourceAssessmentQuestionParameter> GetCompetencyR
{
return competencyLearningResourcesDataService.GetCompetencyResourceAssessmentQuestionParameters(competencyLearningResourceIds);
}
public IEnumerable<CompetencyLearningResource> GetActiveCompetencyLearningResourcesByCompetencyIdAndReferenceId(int competencyId, int referenceId)
{
return competencyLearningResourcesDataService.GetActiveCompetencyLearningResourcesByCompetencyIdAndReferenceId(competencyId, referenceId);
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,72 +2,81 @@
@using DigitalLearningSolutions.Web.Helpers;
@model CompetencyResourceSummaryViewModel
@{
ViewData["Title"] = "Add Competency Learning Resource Summary";
ViewData["Application"] = "Framework Service";
ViewData["HeaderPathName"] = "Framework Service";
var errorHasOccurred = !ViewData.ModelState.IsValid;
ViewData["Title"] = errorHasOccurred ? "Error: Add Competency Learning Resource Summary" : "Add Competency Learning Resource Summary";
ViewData["Application"] = "Framework Service";
ViewData["HeaderPathName"] = "Framework Service";
}
<link rel="stylesheet" href="@Url.Content("~/css/frameworks/frameworksShared.css")" asp-append-version="true">

@section NavMenuItems {
<partial name="Shared/_NavMenuItems" />
<partial name="Shared/_NavMenuItems" />
}
@section NavBreadcrumbs {
<nav class="nhsuk-breadcrumb" aria-label="Breadcrumb">
<div class="nhsuk-width-container">
<ol class="nhsuk-breadcrumb__list">
<li class="nhsuk-breadcrumb__item"><a class="nhsuk-breadcrumb__link trigger-loader" asp-action="ViewFrameworks" asp-route-tabname="Mine">Frameworks</a></li>
<li class="nhsuk-breadcrumb__item"><a class="nhsuk-breadcrumb__link trigger-loader" asp-action="ViewFramework" asp-fragment="fc-@Model.FrameworkCompetencyId" asp-route-frameworkId="@Model.FrameworkId" asp-route-tabname="Structure">Framework Structure</a></li>
<li class="nhsuk-breadcrumb__item"><a class="nhsuk-breadcrumb__link trigger-loader" asp-action="EditCompetencyLearningResources" asp-route-frameworkId="@Model.FrameworkId" asp-route-frameworkCompetencyId="@Model.FrameworkCompetencyId" asp-route-frameworkCompetencyGroupId="@Model.FrameworkCompetencyGroupId">Signposting</a></li>
<li class="nhsuk-breadcrumb__item"><a class="nhsuk-breadcrumb__link trigger-loader" asp-action="SearchLearningResources" asp-route-frameworkId="@Model.FrameworkId" asp-route-frameworkCompetencyId="@Model.FrameworkCompetencyId" asp-route-frameworkCompetencyGroupId="@Model.FrameworkCompetencyGroupId">Add Resource</a></li>
<li class="nhsuk-breadcrumb__item">Summary</li>
</ol>
<p class="nhsuk-breadcrumb__back"><a class="nhsuk-breadcrumb__backlink" asp-action="AddCompetencyLearningResources" asp-route-frameworkId="@Model.FrameworkId" asp-route-frameworkCompetencyId="@Model.FrameworkCompetencyId" asp-route-frameworkCompetencyGroupId="@Model.FrameworkCompetencyGroupId">Back to Add Resource</a></p>
</div>
</nav>
@section NavBreadcrumbs {
<nav class="nhsuk-breadcrumb" aria-label="Breadcrumb">
<div class="nhsuk-width-container">
<ol class="nhsuk-breadcrumb__list">
<li class="nhsuk-breadcrumb__item"><a class="nhsuk-breadcrumb__link trigger-loader" asp-action="ViewFrameworks" asp-route-tabname="Mine">Frameworks</a></li>
<li class="nhsuk-breadcrumb__item"><a class="nhsuk-breadcrumb__link trigger-loader" asp-action="ViewFramework" asp-fragment="fc-@Model.FrameworkCompetencyId" asp-route-frameworkId="@Model.FrameworkId" asp-route-tabname="Structure">Framework Structure</a></li>
<li class="nhsuk-breadcrumb__item"><a class="nhsuk-breadcrumb__link trigger-loader" asp-action="EditCompetencyLearningResources" asp-route-frameworkId="@Model.FrameworkId" asp-route-frameworkCompetencyId="@Model.FrameworkCompetencyId" asp-route-frameworkCompetencyGroupId="@Model.FrameworkCompetencyGroupId">Signposting</a></li>
<li class="nhsuk-breadcrumb__item"><a class="nhsuk-breadcrumb__link trigger-loader" asp-action="SearchLearningResources" asp-route-frameworkId="@Model.FrameworkId" asp-route-frameworkCompetencyId="@Model.FrameworkCompetencyId" asp-route-frameworkCompetencyGroupId="@Model.FrameworkCompetencyGroupId">Add Resource</a></li>
<li class="nhsuk-breadcrumb__item">Summary</li>
</ol>
<p class="nhsuk-breadcrumb__back"><a class="nhsuk-breadcrumb__backlink" asp-action="AddCompetencyLearningResources" asp-route-frameworkId="@Model.FrameworkId" asp-route-frameworkCompetencyId="@Model.FrameworkCompetencyId" asp-route-frameworkCompetencyGroupId="@Model.FrameworkCompetencyGroupId">Back to Add Resource</a></p>
</div>
</nav>
}
<h1>Add Competency Learning Resource Summary</h1>
<form method="post" role="search" asp-controller="Frameworks">
<div class="nhsuk-grid-row">
<div class="nhsuk-grid-column-full">
@if (errorHasOccurred)
{
<vc:error-summary order-of-property-names="@(new[] { "LearningResourceExists" })" />
}
<h1 class="nhsuk-heading-xl">@ViewData["Title"]</h1>
</div>
</div>
<form method="post" role="search" asp-controller="Frameworks">
<dl class="nhsuk-summary-list nhsuk-u-margin-bottom-3">
<div class="nhsuk-summary-list__row">
<dt class="nhsuk-summary-list__key">Competency</dt>
<dd class="nhsuk-summary-list__value">@Model.NameOfCompetency</dd>
</div>
<div class="nhsuk-summary-list__row">
<dt class="nhsuk-summary-list__key">Resource name</dt>
<dd class="nhsuk-summary-list__value">@Model.ResourceName</dd>
</div>
<div class="nhsuk-summary-list__row">
<dt class="nhsuk-summary-list__key">Resource type</dt>
<dd class="nhsuk-summary-list__value">@Model.ResourceType</dd>
</div>
<div class="nhsuk-summary-list__row">
<dt class="nhsuk-summary-list__key">Catalogue</dt>
<dd class="nhsuk-summary-list__value">@Model.SelectedCatalogue</dd>
</div>
<div class="nhsuk-summary-list__row">
<dt class="nhsuk-summary-list__key">Description</dt>
<dd class="nhsuk-summary-list__value">@DisplayStringHelper.RemoveMarkup(Model.Description)</dd>
</div>
<div class="nhsuk-summary-list__row">
<dd class="nhsuk-summary-list__key">
<div class="nhsuk-u-margin-top-3">
<button asp-action="ConfirmAddCompetencyLearningResourceSummary" class="nhsuk-button nhsuk-u-margin-right-2">
Confirm
</button>
<button class="nhsuk-button nhsuk-button--secondary"
asp-action="SearchLearningResources"
asp-route-frameworkId="@Model.FrameworkId"
asp-route-frameworkCompetencyId="@Model.FrameworkCompetencyId"
asp-route-frameworkCompetencyGroupId="@Model.FrameworkCompetencyGroupId"
asp-route-searchText=""
asp-route-catalogueId="0"
asp-route-page="1">
Restart search
</button>
</div>
</dd>
<dd class="nhsuk-summary-list__value"></dd>
</div>
<div class="nhsuk-summary-list__row">
<dt class="nhsuk-summary-list__key">Competency</dt>
<dd class="nhsuk-summary-list__value">@Model.NameOfCompetency</dd>
</div>
<div class="nhsuk-summary-list__row">
<dt class="nhsuk-summary-list__key">Resource name</dt>
<dd class="nhsuk-summary-list__value">@Model.ResourceName</dd>
</div>
<div class="nhsuk-summary-list__row">
<dt class="nhsuk-summary-list__key">Resource type</dt>
<dd class="nhsuk-summary-list__value">@Model.ResourceType</dd>
</div>
<div class="nhsuk-summary-list__row">
<dt class="nhsuk-summary-list__key">Catalogue</dt>
<dd class="nhsuk-summary-list__value">@Model.SelectedCatalogue</dd>
</div>
<div class="nhsuk-summary-list__row">
<dt class="nhsuk-summary-list__key">Description</dt>
<dd class="nhsuk-summary-list__value">@DisplayStringHelper.RemoveMarkup(Model.Description)</dd>
</div>
<div class="nhsuk-summary-list__row">
<dd class="nhsuk-summary-list__key">
<div class="nhsuk-u-margin-top-3">
<button asp-action="ConfirmAddCompetencyLearningResourceSummary" class="nhsuk-button nhsuk-u-margin-right-2">
Confirm
</button>
<button class="nhsuk-button nhsuk-button--secondary"
asp-action="SearchLearningResources"
asp-route-frameworkId="@Model.FrameworkId"
asp-route-frameworkCompetencyId="@Model.FrameworkCompetencyId"
asp-route-frameworkCompetencyGroupId="@Model.FrameworkCompetencyGroupId"
asp-route-searchText=""
asp-route-catalogueId="0"
asp-route-page="1">
Restart search
</button>
</div>
</dd>
<dd class="nhsuk-summary-list__value"></dd>
</div>
</dl>
@Html.HiddenFor(m => m.FrameworkId)
@Html.HiddenFor(m => m.FrameworkCompetencyGroupId)
Expand All @@ -79,19 +88,19 @@
@Html.HiddenFor(m => m.Link)
@Html.HiddenFor(m => m.SelectedCatalogue)
@Html.HiddenFor(m => m.Rating)
</form>
<div class="nhsuk-back-link nhsuk-u-margin-left-1">
</form>
<div class="nhsuk-back-link nhsuk-u-margin-left-1">
<a class="nhsuk-back-link__link"
asp-action="SearchLearningResources"
asp-route-frameworkId="@Model.FrameworkId"
asp-route-frameworkCompetencyId="@Model.FrameworkCompetencyId"
asp-route-frameworkCompetencyGroupId="@Model.FrameworkCompetencyGroupId"
asp-route-searchText="@Model.SearchText"
asp-route-catalogueId="@Model.CatalogueId"
asp-route-page="@Model.Page">
<svg class="nhsuk-icon nhsuk-icon__chevron-left" focusable='false' xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" aria-hidden="true" focusable="false">
<path d="M13.41 12l5.3-5.29a1 1 0 1 0-1.42-1.42L12 10.59l-5.29-5.3a1 1 0 0 0-1.42 1.42l5.3 5.29-5.3 5.29a1 1 0 0 0 0 1.42 1 1 0 0 0 1.42 0l5.29-5.3 5.29 5.3a1 1 0 0 0 1.42 0 1 1 0 0 0 0-1.42z"></path>
</svg>
Cancel
asp-action="SearchLearningResources"
asp-route-frameworkId="@Model.FrameworkId"
asp-route-frameworkCompetencyId="@Model.FrameworkCompetencyId"
asp-route-frameworkCompetencyGroupId="@Model.FrameworkCompetencyGroupId"
asp-route-searchText="@Model.SearchText"
asp-route-catalogueId="@Model.CatalogueId"
asp-route-page="@Model.Page">
<svg class="nhsuk-icon nhsuk-icon__chevron-left" focusable='false' xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" aria-hidden="true" focusable="false">
<path d="M13.41 12l5.3-5.29a1 1 0 1 0-1.42-1.42L12 10.59l-5.29-5.3a1 1 0 0 0-1.42 1.42l5.3 5.29-5.3 5.29a1 1 0 0 0 0 1.42 1 1 0 0 0 1.42 0l5.29-5.3 5.29 5.3a1 1 0 0 0 1.42 0 1 1 0 0 0 0-1.42z"></path>
</svg>
Cancel
</a>
</div>
</div>
Loading