diff --git a/DigitalLearningSolutions.Data/DataServices/CompetencyLearningResourcesDataService.cs b/DigitalLearningSolutions.Data/DataServices/CompetencyLearningResourcesDataService.cs index c404b6762b..600843e549 100644 --- a/DigitalLearningSolutions.Data/DataServices/CompetencyLearningResourcesDataService.cs +++ b/DigitalLearningSolutions.Data/DataServices/CompetencyLearningResourcesDataService.cs @@ -2,7 +2,7 @@ { using System.Collections.Generic; using System.Data; - using Dapper; + using Dapper; using DigitalLearningSolutions.Data.Models.LearningResources; using DigitalLearningSolutions.Data.Models.SelfAssessments; @@ -13,7 +13,7 @@ public interface ICompetencyLearningResourcesDataService IEnumerable GetCompetencyLearningResourcesByCompetencyId(int competencyId); IEnumerable GetCompetencyResourceAssessmentQuestionParameters(IEnumerable competencyLearningResourceIds); - int AddCompetencyLearningResource(int resourceRefID, string originalResourceName, int competencyID, int adminId); + int AddCompetencyLearningResource(int resourceRefID, string originalResourceName, string description, string resourceType, string link, string catalogue, decimal rating, int competencyID, int adminId); } public class CompetencyLearningResourcesDataService : ICompetencyLearningResourcesDataService @@ -52,14 +52,32 @@ FROM CompetencyLearningResources AS clr ); } - public int AddCompetencyLearningResource(int resourceRefID, string originalResourceName, int competencyID, int adminId) + public int AddCompetencyLearningResource(int resourceRefID, string resourceName, string description, string resourceType, string link, string catalogue, decimal rating, int competencyID, int adminId) { return connection.ExecuteScalar( @$" DECLARE @learningResourceReferenceID int IF NOT EXISTS(SELECT * FROM LearningResourceReferences WHERE @resourceRefID = resourceRefID) BEGIN - INSERT INTO LearningResourceReferences(ResourceRefID, OriginalResourceName, AdminID, Added) - VALUES(@resourceRefID, @originalResourceName, @adminID, GETDATE()) + INSERT INTO LearningResourceReferences( + ResourceRefID, + OriginalResourceName, + OriginalDescription, + OriginalResourceType, + ResourceLink, + OriginalCatalogueName, + OriginalRating, + AdminID, + Added) + VALUES( + @resourceRefID, + @resourceName, + @description, + @resourceType, + @link, + @catalogue, + @rating, + @adminID, + GETDATE()) SELECT @learningResourceReferenceID = SCOPE_IDENTITY() END ELSE @@ -71,7 +89,18 @@ FROM LearningResourceReferences INSERT INTO CompetencyLearningResources(CompetencyID, LearningResourceReferenceID, AdminID) VALUES (@competencyID, @learningResourceReferenceID, @adminID) SELECT SCOPE_IDENTITY() AS CompetencyLearningResourceId", - new { resourceRefID, originalResourceName, competencyID, adminId } + new + { + resourceRefID, + resourceName, + description, + resourceType, + link, + catalogue, + rating, + competencyID, + adminId + } ); } diff --git a/DigitalLearningSolutions.Web/Controllers/FrameworksController/Signposting.cs b/DigitalLearningSolutions.Web/Controllers/FrameworksController/Signposting.cs index 5402a217c6..e9876e6e0f 100644 --- a/DigitalLearningSolutions.Web/Controllers/FrameworksController/Signposting.cs +++ b/DigitalLearningSolutions.Web/Controllers/FrameworksController/Signposting.cs @@ -13,6 +13,7 @@ using DigitalLearningSolutions.Data.Models.Frameworks; using DigitalLearningSolutions.Web.Models.Enums; using DigitalLearningSolutions.Web.Models; +using DigitalLearningSolutions.Web.Helpers; namespace DigitalLearningSolutions.Web.Controllers.FrameworksController { @@ -65,7 +66,8 @@ public IActionResult AddCompetencyLearningResourceSummary(CompetencyResourceSumm public IActionResult ConfirmAddCompetencyLearningResourceSummary(CompetencyResourceSummaryViewModel model) { var frameworkCompetency = frameworkService.GetFrameworkCompetencyById(model.FrameworkCompetencyId.Value); - int competencyLearningResourceId = competencyLearningResourcesDataService.AddCompetencyLearningResource(model.ReferenceId, model.ResourceName, frameworkCompetency.CompetencyID, GetAdminId()); + string plainTextDescription = SignpostingHelper.DisplayText(model.Description); + int competencyLearningResourceId = competencyLearningResourcesDataService.AddCompetencyLearningResource(model.ReferenceId, model.ResourceName, plainTextDescription, model.ResourceType, model.Link, model.Catalogue, model.Rating.Value, frameworkCompetency.CompetencyID, GetAdminId()); return RedirectToAction("StartSignpostingParametersSession", "Frameworks", new { model.FrameworkId, model.FrameworkCompetencyId, model.FrameworkCompetencyGroupId, competencyLearningResourceId }); } diff --git a/DigitalLearningSolutions.Web/ViewModels/Frameworks/CompetencyResourceSummaryViewModel.cs b/DigitalLearningSolutions.Web/ViewModels/Frameworks/CompetencyResourceSummaryViewModel.cs index f28b7713c6..fbf2194754 100644 --- a/DigitalLearningSolutions.Web/ViewModels/Frameworks/CompetencyResourceSummaryViewModel.cs +++ b/DigitalLearningSolutions.Web/ViewModels/Frameworks/CompetencyResourceSummaryViewModel.cs @@ -8,12 +8,48 @@ namespace DigitalLearningSolutions.Web.ViewModels.Frameworks { public class CompetencyResourceSummaryViewModel : BaseSignpostingViewModel { - public int ReferenceId { get; set; } + private string _Link; + private string _Catalog; + private int _ReferenceId; + public int ReferenceId + { + get + { + return Resource?.References?.FirstOrDefault()?.RefId ?? _ReferenceId; + } + set + { + _ReferenceId = value; + } + } public string ResourceName => Resource?.Title ?? String.Empty; public string ResourceType => Resource?.ResourceType ?? String.Empty; public string Description => Resource?.Description ?? String.Empty; - public string Catalogue { get; set; } + public string Link + { + get + { + return Resource?.References?.FirstOrDefault()?.Link ?? _Link; + } + set + { + _Link = value; + } + } + public string Catalogue + { + get + { + return Resource?.References?.FirstOrDefault()?.Catalogue?.Name ?? _Catalog; + } + set + { + _Catalog = value; + } + } + public string SelectedCatalogue { get; set; } + public decimal? Rating { get; set; } public string NameOfCompetency { get; set; } public string SearchText { get; set; } public ResourceMetadata Resource { get; set; } diff --git a/DigitalLearningSolutions.Web/Views/Frameworks/Developer/AddCompetencyLearningResourceSummary.cshtml b/DigitalLearningSolutions.Web/Views/Frameworks/Developer/AddCompetencyLearningResourceSummary.cshtml index 1119801a16..319e44fe3e 100644 --- a/DigitalLearningSolutions.Web/Views/Frameworks/Developer/AddCompetencyLearningResourceSummary.cshtml +++ b/DigitalLearningSolutions.Web/Views/Frameworks/Developer/AddCompetencyLearningResourceSummary.cshtml @@ -42,7 +42,7 @@
Catalogue
-
@Model.Catalogue
+
@Model.SelectedCatalogue
Description
@@ -74,6 +74,9 @@ @Html.HiddenFor(m => m.Resource.Title) @Html.HiddenFor(m => m.Resource.ResourceType) @Html.HiddenFor(m => m.Resource.Description) + @Html.HiddenFor(m => m.Link) + @Html.HiddenFor(m => m.Catalogue) + @Html.HiddenFor(m => m.Rating) - @if (Model.Resource.References.Count() > 0) + @if (!String.IsNullOrEmpty(Model.Catalogue)) { -
- Catalogues -
- @foreach (var reference in Model.Resource.References) - { - if (reference.Catalogue != null) - { -
-
-
-
-
- @reference.Catalogue.Name -
-
- - -
-
-
+ +
+
+
+
+ Catalogue +
+
+ @Model.Catalogue +
+
+
+
+
+ + +
- @Html.HiddenFor(m => m.FrameworkId) - @Html.HiddenFor(m => m.FrameworkCompetencyGroupId) - @Html.HiddenFor(m => m.FrameworkCompetencyId) - @Html.Hidden("ReferenceId", reference.RefId) - @Html.Hidden("Resource.Title", Model.Resource?.Title) - @Html.Hidden("Resource.ResourceType", Model.Resource?.ResourceType) - @Html.Hidden("Catalogue", reference.Catalogue.Name) - @Html.HiddenFor(m => m.Resource.Description) - @Html.Hidden("NameOfCompetency", parent.NameOfCompetency) - @Html.Hidden("SearchText", parent.SearchText) - - } - } +
+
+ @Html.HiddenFor(m => m.FrameworkId) + @Html.HiddenFor(m => m.FrameworkCompetencyGroupId) + @Html.HiddenFor(m => m.FrameworkCompetencyId) + @Html.Hidden("ReferenceId", Model.ReferenceId) + @Html.Hidden("Resource.Title", Model.Resource?.Title) + @Html.Hidden("Resource.ResourceType", Model.Resource?.ResourceType) + @Html.Hidden("SelectedCatalogue", Model.Catalogue) + @Html.HiddenFor(m => m.Resource.Description) + @Html.Hidden("NameOfCompetency", parent.NameOfCompetency) + @Html.Hidden("SearchText", parent.SearchText) + @Html.HiddenFor(m => m.Link) + @Html.HiddenFor(m => m.Catalogue) + @Html.Hidden("Rating", Model.Resource?.Rating ?? 0) + }