diff --git a/AdminUI/LearningHub.Nhs.AdminUI/LearningHub.Nhs.AdminUI.csproj b/AdminUI/LearningHub.Nhs.AdminUI/LearningHub.Nhs.AdminUI.csproj index a0de54f8f..a60321fe6 100644 --- a/AdminUI/LearningHub.Nhs.AdminUI/LearningHub.Nhs.AdminUI.csproj +++ b/AdminUI/LearningHub.Nhs.AdminUI/LearningHub.Nhs.AdminUI.csproj @@ -89,7 +89,7 @@ - + diff --git a/LearningHub.Nhs.WebUI.AutomatedUiTests/LearningHub.Nhs.WebUI.AutomatedUiTests.csproj b/LearningHub.Nhs.WebUI.AutomatedUiTests/LearningHub.Nhs.WebUI.AutomatedUiTests.csproj index 1569f9734..9e5550cdb 100644 --- a/LearningHub.Nhs.WebUI.AutomatedUiTests/LearningHub.Nhs.WebUI.AutomatedUiTests.csproj +++ b/LearningHub.Nhs.WebUI.AutomatedUiTests/LearningHub.Nhs.WebUI.AutomatedUiTests.csproj @@ -12,6 +12,7 @@ + diff --git a/LearningHub.Nhs.WebUI/LearningHub.Nhs.WebUI.csproj b/LearningHub.Nhs.WebUI/LearningHub.Nhs.WebUI.csproj index dc2cf661d..3f62a30de 100644 --- a/LearningHub.Nhs.WebUI/LearningHub.Nhs.WebUI.csproj +++ b/LearningHub.Nhs.WebUI/LearningHub.Nhs.WebUI.csproj @@ -113,7 +113,7 @@ - + diff --git a/OpenAPI/LearningHub.Nhs.OpenApi.Models/LearningHub.Nhs.OpenApi.Models.csproj b/OpenAPI/LearningHub.Nhs.OpenApi.Models/LearningHub.Nhs.OpenApi.Models.csproj index 727560e3f..a6783cf90 100644 --- a/OpenAPI/LearningHub.Nhs.OpenApi.Models/LearningHub.Nhs.OpenApi.Models.csproj +++ b/OpenAPI/LearningHub.Nhs.OpenApi.Models/LearningHub.Nhs.OpenApi.Models.csproj @@ -16,7 +16,7 @@ - + diff --git a/OpenAPI/LearningHub.Nhs.OpenApi.Repositories.Interface/LearningHub.Nhs.OpenApi.Repositories.Interface.csproj b/OpenAPI/LearningHub.Nhs.OpenApi.Repositories.Interface/LearningHub.Nhs.OpenApi.Repositories.Interface.csproj index cbab74f45..85e7dbccd 100644 --- a/OpenAPI/LearningHub.Nhs.OpenApi.Repositories.Interface/LearningHub.Nhs.OpenApi.Repositories.Interface.csproj +++ b/OpenAPI/LearningHub.Nhs.OpenApi.Repositories.Interface/LearningHub.Nhs.OpenApi.Repositories.Interface.csproj @@ -17,6 +17,7 @@ + diff --git a/OpenAPI/LearningHub.Nhs.OpenApi.Repositories/EntityFramework/LearningHubDbContext.cs b/OpenAPI/LearningHub.Nhs.OpenApi.Repositories/EntityFramework/LearningHubDbContext.cs index d055990ce..7680c822e 100644 --- a/OpenAPI/LearningHub.Nhs.OpenApi.Repositories/EntityFramework/LearningHubDbContext.cs +++ b/OpenAPI/LearningHub.Nhs.OpenApi.Repositories/EntityFramework/LearningHubDbContext.cs @@ -15,6 +15,7 @@ namespace LearningHub.Nhs.OpenApi.Repositories.EntityFramework using LearningHub.Nhs.Models.Hierarchy; using LearningHub.Nhs.Models.Messaging; using LearningHub.Nhs.Models.MyLearning; + using LearningHub.Nhs.Models.Notification; using LearningHub.Nhs.Models.Resource; using LearningHub.Nhs.Models.Resource.ResourceDisplay; using LearningHub.Nhs.Models.User; @@ -124,6 +125,11 @@ public LearningHubDbContextOptions Options /// public virtual DbSet Notification { get; set; } + /// + /// Gets or sets the Notification Count. + /// + public virtual DbSet NotificationCount { get; set; } + /// /// Gets or sets the user notification.. /// diff --git a/OpenAPI/LearningHub.Nhs.OpenApi.Repositories/LearningHub.Nhs.OpenApi.Repositories.csproj b/OpenAPI/LearningHub.Nhs.OpenApi.Repositories/LearningHub.Nhs.OpenApi.Repositories.csproj index 009e83ef8..83b7551bc 100644 --- a/OpenAPI/LearningHub.Nhs.OpenApi.Repositories/LearningHub.Nhs.OpenApi.Repositories.csproj +++ b/OpenAPI/LearningHub.Nhs.OpenApi.Repositories/LearningHub.Nhs.OpenApi.Repositories.csproj @@ -24,6 +24,7 @@ + diff --git a/OpenAPI/LearningHub.Nhs.OpenApi.Repositories/Repositories/UserNotificationRepository.cs b/OpenAPI/LearningHub.Nhs.OpenApi.Repositories/Repositories/UserNotificationRepository.cs index 02e67126a..09076e800 100644 --- a/OpenAPI/LearningHub.Nhs.OpenApi.Repositories/Repositories/UserNotificationRepository.cs +++ b/OpenAPI/LearningHub.Nhs.OpenApi.Repositories/Repositories/UserNotificationRepository.cs @@ -1,12 +1,14 @@ namespace LearningHub.Nhs.OpenApi.Repositories.Repositories { using System; + using System.Data; using System.Linq; using System.Threading.Tasks; using LearningHub.Nhs.Models.Entities; using LearningHub.Nhs.Models.Enums; using LearningHub.Nhs.OpenApi.Repositories.EntityFramework; using LearningHub.Nhs.OpenApi.Repositories.Interface.Repositories; + using Microsoft.Data.SqlClient; using Microsoft.EntityFrameworkCore; /// @@ -42,9 +44,23 @@ public async Task GetByIdAsync(int id) /// The . public async Task GetUserUnreadNotificationCountAsync(int userId) { - return await GetActiveNotifications(userId, DateTimeOffset.Now) - .Where(n => !n.UserNotification.ReadOnDate.HasValue) - .CountAsync(); + try + { + var param0 = new SqlParameter("@p0", SqlDbType.Int) { Value = userId }; + var param1 = new SqlParameter("@p1", SqlDbType.Int) { Value = this.TimezoneOffsetManager.UserTimezoneOffset ?? (object)DBNull.Value }; + + var result = await this.DbContext + .NotificationCount + .FromSqlRaw("EXEC hub.GetActiveNotificationCount @p0, @p1", param0, param1) + .ToListAsync(); + + return result.FirstOrDefault()?.UserNotificationCount ?? 0; + } + catch (Exception ex) + { + // Optional: log ex + throw new Exception("Failed to get unread notification count: " + ex.Message); + } } /// diff --git a/OpenAPI/LearningHub.Nhs.OpenApi.Services.Interface/LearningHub.Nhs.OpenApi.Services.Interface.csproj b/OpenAPI/LearningHub.Nhs.OpenApi.Services.Interface/LearningHub.Nhs.OpenApi.Services.Interface.csproj index aa019e18c..4492e002c 100644 --- a/OpenAPI/LearningHub.Nhs.OpenApi.Services.Interface/LearningHub.Nhs.OpenApi.Services.Interface.csproj +++ b/OpenAPI/LearningHub.Nhs.OpenApi.Services.Interface/LearningHub.Nhs.OpenApi.Services.Interface.csproj @@ -17,7 +17,7 @@ - + diff --git a/OpenAPI/LearningHub.Nhs.OpenApi.Services.Interface/Services/IResourceService.cs b/OpenAPI/LearningHub.Nhs.OpenApi.Services.Interface/Services/IResourceService.cs index e8427c4a6..dae96a14b 100644 --- a/OpenAPI/LearningHub.Nhs.OpenApi.Services.Interface/Services/IResourceService.cs +++ b/OpenAPI/LearningHub.Nhs.OpenApi.Services.Interface/Services/IResourceService.cs @@ -415,6 +415,13 @@ Task GetAssessmentProgress( /// The . Task CreateResourceVersionValidationResultAsync(ResourceVersionValidationResultViewModel validationResultViewModel); + /// + /// The get resource header view model async. + /// + /// The resourceReferenceId. + /// The . + Task GetResourceHeaderViewModelAsync(int resourceReferenceId); + /// /// The set resource type. /// diff --git a/OpenAPI/LearningHub.Nhs.OpenApi.Services/LearningHub.Nhs.OpenApi.Services.csproj b/OpenAPI/LearningHub.Nhs.OpenApi.Services/LearningHub.Nhs.OpenApi.Services.csproj index 9002a0237..2b379315b 100644 --- a/OpenAPI/LearningHub.Nhs.OpenApi.Services/LearningHub.Nhs.OpenApi.Services.csproj +++ b/OpenAPI/LearningHub.Nhs.OpenApi.Services/LearningHub.Nhs.OpenApi.Services.csproj @@ -30,7 +30,7 @@ - + diff --git a/OpenAPI/LearningHub.Nhs.OpenApi.Services/Services/DashboardService.cs b/OpenAPI/LearningHub.Nhs.OpenApi.Services/Services/DashboardService.cs index dfc2bfde2..05cda2b76 100644 --- a/OpenAPI/LearningHub.Nhs.OpenApi.Services/Services/DashboardService.cs +++ b/OpenAPI/LearningHub.Nhs.OpenApi.Services/Services/DashboardService.cs @@ -3,9 +3,11 @@ using System; using System.Collections.Generic; using System.Linq; + using System.Text.Json; using System.Threading.Tasks; using AutoMapper; using LearningHub.Nhs.Models.Dashboard; + using LearningHub.Nhs.Models.Provider; using LearningHub.Nhs.OpenApi.Repositories.Interface.Repositories.Hierarchy; using LearningHub.Nhs.OpenApi.Repositories.Interface.Repositories.Resources; using LearningHub.Nhs.OpenApi.Services.Interface.Services; @@ -56,7 +58,10 @@ public async Task GetMyAccessLearnings(str { foreach (var catalogue in catalogueList) { - catalogue.Providers = await providerService.GetByCatalogueVersionIdAsync(catalogue.NodeVersionId); + if (!string.IsNullOrEmpty(catalogue.ProvidersJson)) + { + catalogue.Providers = JsonSerializer.Deserialize>(catalogue.ProvidersJson); + } } } @@ -65,7 +70,10 @@ public async Task GetMyAccessLearnings(str { foreach (var resource in resourceList) { - resource.Providers = await providerService.GetByResourceVersionIdAsync(resource.ResourceVersionId); + if (!string.IsNullOrEmpty(resource.ProvidersJson)) + { + resource.Providers = JsonSerializer.Deserialize>(resource.ProvidersJson); + } } } @@ -95,7 +103,10 @@ public async Task GetCatalogues(string dash var catalogueList = catalogues.Any() ? mapper.Map>(catalogues) : new List(); foreach (var catalogue in catalogueList) { - catalogue.Providers = await providerService.GetByCatalogueVersionIdAsync(catalogue.NodeVersionId); + if (!string.IsNullOrEmpty(catalogue.ProvidersJson)) + { + catalogue.Providers = JsonSerializer.Deserialize>(catalogue.ProvidersJson); + } } var response = new DashboardCatalogueResponseViewModel @@ -123,7 +134,10 @@ public async Task GetResources(string dashbo foreach (var resource in resourceList) { - resource.Providers = await providerService.GetByResourceVersionIdAsync(resource.ResourceVersionId); + if (!string.IsNullOrEmpty(resource.ProvidersJson)) + { + resource.Providers = JsonSerializer.Deserialize>(resource.ProvidersJson); + } } var response = new DashboardResourceResponseViewModel diff --git a/OpenAPI/LearningHub.Nhs.OpenApi.Services/Services/ResourceService.cs b/OpenAPI/LearningHub.Nhs.OpenApi.Services/Services/ResourceService.cs index c14d04edc..4534e4756 100644 --- a/OpenAPI/LearningHub.Nhs.OpenApi.Services/Services/ResourceService.cs +++ b/OpenAPI/LearningHub.Nhs.OpenApi.Services/Services/ResourceService.cs @@ -3587,6 +3587,23 @@ private LearningHubValidationResult ValidateRequestWithSourceResource(ResourceVe return result; } + /// + /// The get resource header view model async. + /// + /// The resourceReferenceId. + /// The . + public async Task GetResourceHeaderViewModelAsync(int resourceReferenceId) + { + var retVal = new ResourceHeaderViewModel(); + + var rv = await this.resourceVersionRepository.GetCurrentForResourceReferenceIdAsync(resourceReferenceId); + + retVal.Id = resourceReferenceId; + retVal.Title = rv.Title; + + return retVal; + } + private LearningHubValidationResult ValidateRequestWithSourceBlockCollection(BlockCollection sourceBlockCollection, DuplicateBlocksRequestModel requestModel) { var result = new LearningHubValidationResult(false, "Duplicate Blocks async: "); diff --git a/OpenAPI/LearningHub.Nhs.OpenApi.Tests/LearningHub.Nhs.OpenApi.Tests.csproj b/OpenAPI/LearningHub.Nhs.OpenApi.Tests/LearningHub.Nhs.OpenApi.Tests.csproj index c16540ee6..1a280bb2f 100644 --- a/OpenAPI/LearningHub.Nhs.OpenApi.Tests/LearningHub.Nhs.OpenApi.Tests.csproj +++ b/OpenAPI/LearningHub.Nhs.OpenApi.Tests/LearningHub.Nhs.OpenApi.Tests.csproj @@ -10,6 +10,7 @@ + diff --git a/OpenAPI/LearningHub.Nhs.OpenApi/Controllers/ResourceController.cs b/OpenAPI/LearningHub.Nhs.OpenApi/Controllers/ResourceController.cs index b3a685de3..f14e9c3c1 100644 --- a/OpenAPI/LearningHub.Nhs.OpenApi/Controllers/ResourceController.cs +++ b/OpenAPI/LearningHub.Nhs.OpenApi/Controllers/ResourceController.cs @@ -330,6 +330,18 @@ public async Task GetFileTypes() return this.Ok(await this.fileTypeService.GetAllAsync()); } + /// + /// The get resource header view model async. + /// + /// The resourceReferenceId. + /// The . + [HttpGet] + [Route("GetResourceHeaderViewModelAsync/{resourceReferenceId}")] + public async Task GetResourceHeaderViewModelAsync(int resourceReferenceId) + { + return this.Ok(await this.resourceService.GetResourceHeaderViewModelAsync(resourceReferenceId)); + } + /// /// The get file async. /// diff --git a/OpenAPI/LearningHub.Nhs.OpenApi/LearningHub.NHS.OpenAPI.csproj b/OpenAPI/LearningHub.Nhs.OpenApi/LearningHub.NHS.OpenAPI.csproj index e8ddf4415..aba7a167a 100644 --- a/OpenAPI/LearningHub.Nhs.OpenApi/LearningHub.NHS.OpenAPI.csproj +++ b/OpenAPI/LearningHub.Nhs.OpenApi/LearningHub.NHS.OpenAPI.csproj @@ -18,6 +18,7 @@ + diff --git a/ReportAPI/LearningHub.Nhs.ReportApi.Services.Interface/LearningHub.Nhs.ReportApi.Services.Interface.csproj b/ReportAPI/LearningHub.Nhs.ReportApi.Services.Interface/LearningHub.Nhs.ReportApi.Services.Interface.csproj index 227e30bf8..5d2fd2dda 100644 --- a/ReportAPI/LearningHub.Nhs.ReportApi.Services.Interface/LearningHub.Nhs.ReportApi.Services.Interface.csproj +++ b/ReportAPI/LearningHub.Nhs.ReportApi.Services.Interface/LearningHub.Nhs.ReportApi.Services.Interface.csproj @@ -16,7 +16,7 @@ - + diff --git a/ReportAPI/LearningHub.Nhs.ReportApi.Services.UnitTests/LearningHub.Nhs.ReportApi.Services.UnitTests.csproj b/ReportAPI/LearningHub.Nhs.ReportApi.Services.UnitTests/LearningHub.Nhs.ReportApi.Services.UnitTests.csproj index 3af90e39a..9dbe65eb4 100644 --- a/ReportAPI/LearningHub.Nhs.ReportApi.Services.UnitTests/LearningHub.Nhs.ReportApi.Services.UnitTests.csproj +++ b/ReportAPI/LearningHub.Nhs.ReportApi.Services.UnitTests/LearningHub.Nhs.ReportApi.Services.UnitTests.csproj @@ -18,7 +18,7 @@ - + diff --git a/ReportAPI/LearningHub.Nhs.ReportApi.Services/LearningHub.Nhs.ReportApi.Services.csproj b/ReportAPI/LearningHub.Nhs.ReportApi.Services/LearningHub.Nhs.ReportApi.Services.csproj index c6d03d856..61499e837 100644 --- a/ReportAPI/LearningHub.Nhs.ReportApi.Services/LearningHub.Nhs.ReportApi.Services.csproj +++ b/ReportAPI/LearningHub.Nhs.ReportApi.Services/LearningHub.Nhs.ReportApi.Services.csproj @@ -19,7 +19,7 @@ - + diff --git a/ReportAPI/LearningHub.Nhs.ReportApi.Shared/LearningHub.Nhs.ReportApi.Shared.csproj b/ReportAPI/LearningHub.Nhs.ReportApi.Shared/LearningHub.Nhs.ReportApi.Shared.csproj index 78f41769e..c2fd5f750 100644 --- a/ReportAPI/LearningHub.Nhs.ReportApi.Shared/LearningHub.Nhs.ReportApi.Shared.csproj +++ b/ReportAPI/LearningHub.Nhs.ReportApi.Shared/LearningHub.Nhs.ReportApi.Shared.csproj @@ -17,7 +17,7 @@ - + diff --git a/ReportAPI/LearningHub.Nhs.ReportApi/LearningHub.Nhs.ReportApi.csproj b/ReportAPI/LearningHub.Nhs.ReportApi/LearningHub.Nhs.ReportApi.csproj index f87bb47d5..412aa5635 100644 --- a/ReportAPI/LearningHub.Nhs.ReportApi/LearningHub.Nhs.ReportApi.csproj +++ b/ReportAPI/LearningHub.Nhs.ReportApi/LearningHub.Nhs.ReportApi.csproj @@ -20,7 +20,7 @@ - + diff --git a/WebAPI/LearningHub.Nhs.API/LearningHub.Nhs.Api.csproj b/WebAPI/LearningHub.Nhs.API/LearningHub.Nhs.Api.csproj index 3b09a079f..b9bf9a637 100644 --- a/WebAPI/LearningHub.Nhs.API/LearningHub.Nhs.Api.csproj +++ b/WebAPI/LearningHub.Nhs.API/LearningHub.Nhs.Api.csproj @@ -29,7 +29,7 @@ - + diff --git a/WebAPI/LearningHub.Nhs.Api.Shared/LearningHub.Nhs.Api.Shared.csproj b/WebAPI/LearningHub.Nhs.Api.Shared/LearningHub.Nhs.Api.Shared.csproj index 1963fd724..2019c36fd 100644 --- a/WebAPI/LearningHub.Nhs.Api.Shared/LearningHub.Nhs.Api.Shared.csproj +++ b/WebAPI/LearningHub.Nhs.Api.Shared/LearningHub.Nhs.Api.Shared.csproj @@ -9,7 +9,7 @@ - + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/WebAPI/LearningHub.Nhs.Api.UnitTests/LearningHub.Nhs.Api.UnitTests.csproj b/WebAPI/LearningHub.Nhs.Api.UnitTests/LearningHub.Nhs.Api.UnitTests.csproj index e7a054e23..cb598417e 100644 --- a/WebAPI/LearningHub.Nhs.Api.UnitTests/LearningHub.Nhs.Api.UnitTests.csproj +++ b/WebAPI/LearningHub.Nhs.Api.UnitTests/LearningHub.Nhs.Api.UnitTests.csproj @@ -11,7 +11,7 @@ - + diff --git a/WebAPI/LearningHub.Nhs.Database/LearningHub.Nhs.Database.sqlproj b/WebAPI/LearningHub.Nhs.Database/LearningHub.Nhs.Database.sqlproj index 59f6120a2..ae03ab2ae 100644 --- a/WebAPI/LearningHub.Nhs.Database/LearningHub.Nhs.Database.sqlproj +++ b/WebAPI/LearningHub.Nhs.Database/LearningHub.Nhs.Database.sqlproj @@ -539,6 +539,7 @@ + diff --git a/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Hierarchy/GetDashboardCatalogues.sql b/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Hierarchy/GetDashboardCatalogues.sql index 6210d7846..5120cbf10 100644 --- a/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Hierarchy/GetDashboardCatalogues.sql +++ b/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Hierarchy/GetDashboardCatalogues.sql @@ -14,6 +14,7 @@ -- 11 Aug 2023 RS Added CardImageUrl column -- 27 Sep 2023 HV Included Paging and user accessed catalogues -- 13 Nov 2023 SA Included Node VersionId in also. +-- 29 Sep 2025 SA Integrated the provider dertails ------------------------------------------------------------------------------- CREATE PROCEDURE [hierarchy].[GetDashboardCatalogues] @DashboardType nvarchar(30), @@ -57,10 +58,25 @@ BEGIN ,CAST(CASE WHEN cnv.RestrictedAccess = 1 AND auth.CatalogueNodeId IS NULL THEN 0 ELSE 1 END AS bit) AS HasAccess ,ub.Id AS BookMarkId ,CAST(ISNULL(ub.[Deleted], 1) ^ 1 AS BIT) AS IsBookmarked + ,cpAgg.ProvidersJson FROM @Catalogues tc JOIN [hierarchy].[Node] n ON tc.NodeId = n.Id JOIN [hierarchy].[NodeVersion] nv ON nv.NodeId = n.Id JOIN [hierarchy].[CatalogueNodeVersion] cnv ON cnv.NodeVersionId = nv.Id + LEFT JOIN ( + SELECT + cnp.CatalogueNodeVersionId, + JSON_QUERY('[' + STRING_AGG( + '{"Id":' + CAST(p.Id AS NVARCHAR) + + ',"Name":"' + p.Name + '"' + + ',"Description":"' + p.Description + '"' + + ',"Logo":"' + ISNULL(p.Logo, '') + '"}', + ',') + ']') AS ProvidersJson + FROM hierarchy.CatalogueNodeVersionProvider cnp + JOIN hub.Provider p ON p.Id = cnp.ProviderId + WHERE p.Deleted = 0 and cnp.Deleted = 0 + GROUP BY cnp.CatalogueNodeVersionId + ) cpAgg ON cpAgg.CatalogueNodeVersionId = cnv.Id JOIN hub.Scope s ON n.Id = s.CatalogueNodeId LEFT JOIN hub.UserBookmark ub ON ub.UserId = @UserId AND ub.NodeId = nv.NodeId LEFT JOIN ( SELECT DISTINCT CatalogueNodeId @@ -88,10 +104,25 @@ BEGIN ,CAST(CASE WHEN cnv.RestrictedAccess = 1 AND auth.CatalogueNodeId IS NULL THEN 0 ELSE 1 END AS bit) AS HasAccess ,ub.Id AS BookMarkId ,CAST(ISNULL(ub.[Deleted], 1) ^ 1 AS BIT) AS IsBookmarked + ,cpAgg.ProvidersJson INTO #recentcatalogues FROM [hierarchy].[Node] n JOIN [hierarchy].[NodeVersion] nv ON nv.NodeId = n.Id JOIN [hierarchy].[CatalogueNodeVersion] cnv ON cnv.NodeVersionId = nv.Id + LEFT JOIN ( + SELECT + cnp.CatalogueNodeVersionId, + JSON_QUERY('[' + STRING_AGG( + '{"Id":' + CAST(p.Id AS NVARCHAR) + + ',"Name":"' + p.Name + '"' + + ',"Description":"' + p.Description + '"' + + ',"Logo":"' + ISNULL(p.Logo, '') + '"}', + ',') + ']') AS ProvidersJson + FROM hierarchy.CatalogueNodeVersionProvider cnp + JOIN hub.Provider p ON p.Id = cnp.ProviderId + WHERE p.Deleted = 0 and cnp.Deleted = 0 + GROUP BY cnp.CatalogueNodeVersionId + ) cpAgg ON cpAgg.CatalogueNodeVersionId = cnv.Id LEFT JOIN hub.UserBookmark ub ON ub.UserId = @UserId AND ub.NodeId = nv.NodeId LEFT JOIN ( SELECT DISTINCT CatalogueNodeId FROM [hub].[RoleUserGroupView] rug JOIN hub.UserUserGroup uug ON rug.UserGroupId = uug.UserGroupId @@ -141,10 +172,25 @@ BEGIN ) AS AverageRating ,ub.Id AS BookMarkId ,CAST(ISNULL(ub.[Deleted], 1) ^ 1 AS BIT) AS IsBookmarked + ,cpAgg.ProvidersJson FROM @Catalogues tc JOIN [hierarchy].[Node] n ON tc.NodeId = n.Id JOIN [hierarchy].[NodeVersion] nv ON nv.NodeId = n.Id JOIN [hierarchy].[CatalogueNodeVersion] cnv ON cnv.NodeVersionId = nv.Id + LEFT JOIN ( + SELECT + cnp.CatalogueNodeVersionId, + JSON_QUERY('[' + STRING_AGG( + '{"Id":' + CAST(p.Id AS NVARCHAR) + + ',"Name":"' + p.Name + '"' + + ',"Description":"' + p.Description + '"' + + ',"Logo":"' + ISNULL(p.Logo, '') + '"}', + ',') + ']') AS ProvidersJson + FROM hierarchy.CatalogueNodeVersionProvider cnp + JOIN hub.Provider p ON p.Id = cnp.ProviderId + WHERE p.Deleted = 0 and cnp.Deleted = 0 + GROUP BY cnp.CatalogueNodeVersionId + ) cpAgg ON cpAgg.CatalogueNodeVersionId = cnv.Id LEFT JOIN hub.UserBookmark ub ON ub.UserId = @UserId AND ub.NodeId = nv.NodeId LEFT JOIN ( SELECT DISTINCT CatalogueNodeId FROM [hub].[RoleUserGroupView] rug JOIN hub.UserUserGroup uug ON rug.UserGroupId = uug.UserGroupId @@ -178,9 +224,24 @@ BEGIN ,CAST(CASE WHEN cnv.RestrictedAccess = 1 AND auth.CatalogueNodeId IS NULL THEN 0 ELSE 1 END AS bit) AS HasAccess ,ub.Id AS BookMarkId ,CAST(ISNULL(ub.[Deleted], 1) ^ 1 AS BIT) AS IsBookmarked + ,cpAgg.ProvidersJson FROM [hierarchy].[Node] n JOIN [hierarchy].[NodeVersion] nv ON nv.NodeId = n.Id JOIN [hierarchy].[CatalogueNodeVersion] cnv ON cnv.NodeVersionId = nv.Id + LEFT JOIN ( + SELECT + cnp.CatalogueNodeVersionId, + JSON_QUERY('[' + STRING_AGG( + '{"Id":' + CAST(p.Id AS NVARCHAR) + + ',"Name":"' + p.Name + '"' + + ',"Description":"' + p.Description + '"' + + ',"Logo":"' + ISNULL(p.Logo, '') + '"}', + ',') + ']') AS ProvidersJson + FROM hierarchy.CatalogueNodeVersionProvider cnp + JOIN hub.Provider p ON p.Id = cnp.ProviderId + WHERE p.Deleted = 0 and cnp.Deleted = 0 + GROUP BY cnp.CatalogueNodeVersionId + ) cpAgg ON cpAgg.CatalogueNodeVersionId = cnv.Id LEFT JOIN hub.UserBookmark ub ON ub.UserId = @UserId AND ub.NodeId = nv.NodeId LEFT JOIN ( SELECT DISTINCT CatalogueNodeId FROM [hub].[RoleUserGroupView] rug JOIN hub.UserUserGroup uug ON rug.UserGroupId = uug.UserGroupId @@ -222,10 +283,25 @@ BEGIN ,CAST(CASE WHEN cnv.RestrictedAccess = 1 AND auth.CatalogueNodeId IS NULL THEN 0 ELSE 1 END AS bit) AS HasAccess ,ub.Id AS BookMarkId ,CAST(ISNULL(ub.[Deleted], 1) ^ 1 AS BIT) AS IsBookmarked + ,cpAgg.ProvidersJson FROM @MyActivity ma JOIN [hierarchy].[Node] n ON ma.NodeId = n.Id JOIN [hierarchy].[NodeVersion] nv ON nv.NodeId = ma.CatalogueNodeId LEFT JOIN [hierarchy].[CatalogueNodeVersion] cnv ON cnv.NodeVersionId = nv.Id + LEFT JOIN ( + SELECT + cnp.CatalogueNodeVersionId, + JSON_QUERY('[' + STRING_AGG( + '{"Id":' + CAST(p.Id AS NVARCHAR) + + ',"Name":"' + p.Name + '"' + + ',"Description":"' + p.Description + '"' + + ',"Logo":"' + ISNULL(p.Logo, '') + '"}', + ',') + ']') AS ProvidersJson + FROM hierarchy.CatalogueNodeVersionProvider cnp + JOIN hub.Provider p ON p.Id = cnp.ProviderId + WHERE p.Deleted = 0 and cnp.Deleted = 0 + GROUP BY cnp.CatalogueNodeVersionId + ) cpAgg ON cpAgg.CatalogueNodeVersionId = cnv.Id INNER JOIN hub.Scope s ON ma.CatalogueNodeId = s.CatalogueNodeId LEFT JOIN hub.UserBookmark ub ON ub.UserId = @UserId AND ub.NodeId = nv.NodeId LEFT JOIN ( SELECT DISTINCT CatalogueNodeId diff --git a/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Hub/GetActiveNotificationCount.sql b/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Hub/GetActiveNotificationCount.sql new file mode 100644 index 000000000..b3c5f1fc2 --- /dev/null +++ b/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Hub/GetActiveNotificationCount.sql @@ -0,0 +1,30 @@ +------------------------------------------------------------------------------- +-- Author Swapnamol ABraham +-- Created 29 Sep 2025 +-- Purpose Move User notification EF call into the SP +-- +-- Modification History +-- +-- 29 Sep 2025 SA Initial Revision +------------------------------------------------------------------------------- + +CREATE PROCEDURE [hub].[GetActiveNotificationCount] + @UserId INT, + @UserTimezoneOffset int = NULL +AS +BEGIN + SET NOCOUNT ON; + DECLARE @NOW datetimeoffset(7) = ISNULL(TODATETIMEOFFSET(DATEADD(mi, @UserTimezoneOffset, GETUTCDATE()), @UserTimezoneOffset), SYSDATETIMEOFFSET()) + + SELECT 1 as Id, COUNT(*) AS UserNotificationCount + FROM [hub].[Notification] AS n + LEFT JOIN [hub].[UserNotification] AS t + ON n.Id = t.NotificationId + AND t.UserId = @UserId + AND t.Deleted = 0 + WHERE n.Deleted = 0 + AND @Now BETWEEN n.StartDate AND n.EndDate + AND (n.IsUserSpecific = 0 OR t.UserId = @UserId) + AND (t.Id IS NULL OR t.Dismissed = 0) + AND t.ReadOnDate IS NULL; +END diff --git a/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Resources/GetMyInProgressDashboardResources.sql b/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Resources/GetMyInProgressDashboardResources.sql index a56e37084..59ddb3bff 100644 --- a/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Resources/GetMyInProgressDashboardResources.sql +++ b/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Resources/GetMyInProgressDashboardResources.sql @@ -8,6 +8,7 @@ -- 24 Jun 2024 OA Initial Revision -- 27 Jun 2024 SA My Learning Dashboard Tray showing Wrong Counts -- 17 Jan 2025 TD-5255: SA The My learning page does show the activity but it's not showing up under accessed learning +-- 29 Sep 2025 SA Integrated the provider dertails ------------------------------------------------------------------------------- CREATE PROCEDURE [resources].[GetMyInProgressDashboardResources] @@ -78,10 +79,25 @@ BEGIN ,CAST(ISNULL(ub.[Deleted], 1) ^ 1 AS BIT) AS IsBookmarked ,rvrs.AverageRating ,rvrs.RatingCount + ,rpAgg.ProvidersJson FROM @MyActivity ma JOIN activity.ResourceActivity ra ON ra.id = ma.ResourceActivityId JOIN resources.resourceversion rv ON rv.id = ra.ResourceVersionId AND rv.Deleted = 0 JOIN Resources.Resource r ON r.Id = rv.ResourceId + LEFT JOIN ( + SELECT + rp.ResourceVersionId, + JSON_QUERY('[' + STRING_AGG( + '{"Id":' + CAST(p.Id AS NVARCHAR) + + ',"Name":"' + p.Name + '"' + + ',"Description":"' + p.Description + '"' + + ',"Logo":"' + ISNULL(p.Logo, '') + '"}', + ',') + ']') AS ProvidersJson + FROM resources.ResourceVersionProvider rp + JOIN hub.Provider p ON p.Id = rp.ProviderId + WHERE p.Deleted = 0 and rp.Deleted = 0 + GROUP BY rp.ResourceVersionId + ) rpAgg ON rpAgg.ResourceVersionId = r.CurrentResourceVersionId JOIN hierarchy.Publication p ON rv.PublicationId = p.Id AND p.Deleted = 0 JOIN resources.ResourceVersionRatingSummary rvrs ON rv.Id = rvrs.ResourceVersionId AND rvrs.Deleted = 0 JOIN hierarchy.NodeResource nr ON r.Id = nr.ResourceId AND nr.Deleted = 0 @@ -120,4 +136,4 @@ BEGIN FROM [hub].[RoleUserGroupView] rug JOIN hub.UserUserGroup uug ON rug.UserGroupId = uug.UserGroupId WHERE rug.ScopeTypeId = 1 and rug.RoleId in (1,2,3) and uug.Deleted = 0 and uug.UserId = @userId) auth ON n.Id = auth.CatalogueNodeId -END \ No newline at end of file +END diff --git a/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Resources/GetMyLearningCertificatesDashboardResources.sql b/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Resources/GetMyLearningCertificatesDashboardResources.sql index 986e25423..8b141b80f 100644 --- a/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Resources/GetMyLearningCertificatesDashboardResources.sql +++ b/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Resources/GetMyLearningCertificatesDashboardResources.sql @@ -6,6 +6,7 @@ -- Modification History -- -- 24 Jun 2024 OA Initial Revision +-- 29 Sep 2025 SA Integrated the provider dertails ------------------------------------------------------------------------------- CREATE PROCEDURE [resources].[GetMyLearningCertificatesDashboardResources] @@ -75,10 +76,25 @@ BEGIN ,CAST(ISNULL(ub.[Deleted], 1) ^ 1 AS BIT) AS IsBookmarked ,rvrs.AverageRating ,rvrs.RatingCount + ,rpAgg.ProvidersJson FROM @MyActivity ma JOIN activity.ResourceActivity ra ON ra.id = ma.ResourceActivityId JOIN resources.resourceversion rv ON rv.id = ra.ResourceVersionId AND rv.Deleted = 0 JOIN Resources.Resource r ON r.Id = rv.ResourceId +LEFT JOIN ( + SELECT + rp.ResourceVersionId, + JSON_QUERY('[' + STRING_AGG( + '{"Id":' + CAST(p.Id AS NVARCHAR) + + ',"Name":"' + p.Name + '"' + + ',"Description":"' + p.Description + '"' + + ',"Logo":"' + ISNULL(p.Logo, '') + '"}', + ',') + ']') AS ProvidersJson + FROM resources.ResourceVersionProvider rp + JOIN hub.Provider p ON p.Id = rp.ProviderId + WHERE p.Deleted = 0 and rp.Deleted = 0 + GROUP BY rp.ResourceVersionId + ) rpAgg ON rpAgg.ResourceVersionId = r.CurrentResourceVersionId JOIN hierarchy.Publication p ON rv.PublicationId = p.Id AND p.Deleted = 0 JOIN resources.ResourceVersionRatingSummary rvrs ON rv.Id = rvrs.ResourceVersionId AND rvrs.Deleted = 0 JOIN hierarchy.NodeResource nr ON r.Id = nr.ResourceId AND nr.Deleted = 0 diff --git a/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Resources/GetMyRecentCompletedDashboardResources.sql b/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Resources/GetMyRecentCompletedDashboardResources.sql index cb12b2a10..465cc84a3 100644 --- a/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Resources/GetMyRecentCompletedDashboardResources.sql +++ b/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Resources/GetMyRecentCompletedDashboardResources.sql @@ -7,6 +7,7 @@ -- -- 24 Jun 2024 OA Initial Revision -- 27 Jun 2024 SA Removed unused temp tables +-- 29 Sep 2025 SA Integrated the provider dertails ------------------------------------------------------------------------------- CREATE PROCEDURE [resources].[GetMyRecentCompletedDashboardResources] @@ -74,10 +75,25 @@ BEGIN ,CAST(ISNULL(ub.[Deleted], 1) ^ 1 AS BIT) AS IsBookmarked ,rvrs.AverageRating ,rvrs.RatingCount + ,rpAgg.ProvidersJson FROM @MyActivity ma JOIN activity.ResourceActivity ra ON ra.id = ma.ResourceActivityId JOIN resources.resourceversion rv ON rv.id = ra.ResourceVersionId AND rv.Deleted = 0 JOIN Resources.Resource r ON r.Id = rv.ResourceId +LEFT JOIN ( + SELECT + rp.ResourceVersionId, + JSON_QUERY('[' + STRING_AGG( + '{"Id":' + CAST(p.Id AS NVARCHAR) + + ',"Name":"' + p.Name + '"' + + ',"Description":"' + p.Description + '"' + + ',"Logo":"' + ISNULL(p.Logo, '') + '"}', + ',') + ']') AS ProvidersJson + FROM resources.ResourceVersionProvider rp + JOIN hub.Provider p ON p.Id = rp.ProviderId + WHERE p.Deleted = 0 and rp.Deleted = 0 + GROUP BY rp.ResourceVersionId + ) rpAgg ON rpAgg.ResourceVersionId = r.CurrentResourceVersionId JOIN hierarchy.Publication p ON rv.PublicationId = p.Id AND p.Deleted = 0 JOIN resources.ResourceVersionRatingSummary rvrs ON rv.Id = rvrs.ResourceVersionId AND rvrs.Deleted = 0 JOIN hierarchy.NodeResource nr ON r.Id = nr.ResourceId AND nr.Deleted = 0 @@ -116,4 +132,4 @@ LEFT JOIN ( SELECT DISTINCT CatalogueNodeId FROM [hub].[RoleUserGroupView] rug JOIN hub.UserUserGroup uug ON rug.UserGroupId = uug.UserGroupId WHERE rug.ScopeTypeId = 1 and rug.RoleId in (1,2,3) and uug.Deleted = 0 and uug.UserId = @userId) auth ON n.Id = auth.CatalogueNodeId -END \ No newline at end of file +END diff --git a/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Resources/GetPopularDashboardResources.sql b/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Resources/GetPopularDashboardResources.sql index c9904f0fc..3c0186a08 100644 --- a/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Resources/GetPopularDashboardResources.sql +++ b/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Resources/GetPopularDashboardResources.sql @@ -7,6 +7,7 @@ -- -- 24 Jun 2024 OA Initial Revision -- 27 Jun 2024 SA Removed unused temp tables +-- 29 Sep 2025 SA Integarted providerid details ------------------------------------------------------------------------------- CREATE PROCEDURE [resources].[GetPopularDashboardResources] @@ -70,9 +71,24 @@ BEGIN ,CAST(ISNULL(ub.[Deleted], 1) ^ 1 AS BIT) AS IsBookmarked ,rvrs.AverageRating ,rvrs.RatingCount + ,rpAgg.ProvidersJson FROM @Resources tr JOIN resources.Resource r ON r.id = tr.ResourceId JOIN resources.resourceversion rv ON rv.ResourceId = r.Id AND rv.id = r.CurrentResourceVersionId AND rv.Deleted = 0 + LEFT JOIN ( + SELECT + rp.ResourceVersionId, + JSON_QUERY('[' + STRING_AGG( + '{"Id":' + CAST(p.Id AS NVARCHAR) + + ',"Name":"' + p.Name + '"' + + ',"Description":"' + p.Description + '"' + + ',"Logo":"' + ISNULL(p.Logo, '') + '"}', + ',') + ']') AS ProvidersJson + FROM resources.ResourceVersionProvider rp + JOIN hub.Provider p ON p.Id = rp.ProviderId + WHERE p.Deleted = 0 and rp.Deleted = 0 + GROUP BY rp.ResourceVersionId + ) rpAgg ON rpAgg.ResourceVersionId = r.CurrentResourceVersionId JOIN resources.ResourceVersionRatingSummary rvrs ON r.CurrentResourceVersionId = rvrs.ResourceVersionId AND rvrs.Deleted = 0 JOIN hierarchy.NodeResource nr ON r.Id = nr.ResourceId AND nr.Deleted = 0 JOIN hierarchy.Node n ON n.Id = nr.NodeId AND n.Hidden = 0 AND n.Deleted = 0 @@ -93,4 +109,4 @@ BEGIN SELECT @TotalRecords = CASE WHEN COUNT(*) > 12 THEN @MaxRows ELSE COUNT(*) END FROM @Resources -END \ No newline at end of file +END diff --git a/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Resources/GetRatedDashboardResources.sql b/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Resources/GetRatedDashboardResources.sql index 56b994092..b9c7969c6 100644 --- a/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Resources/GetRatedDashboardResources.sql +++ b/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Resources/GetRatedDashboardResources.sql @@ -7,6 +7,7 @@ -- -- 24 Jun 2024 OA Initial Revision -- 27 Jun 2024 SA Removed unused temp tables +-- 29 Sep 2025 SA Integrated the provider dertails ------------------------------------------------------------------------------- CREATE PROCEDURE [resources].[GetRatedDashboardResources] @@ -53,9 +54,24 @@ BEGIN ,CAST(ISNULL(ub.[Deleted], 1) ^ 1 AS BIT) AS IsBookmarked ,rvrs.AverageRating ,rvrs.RatingCount + ,rpAgg.ProvidersJson INTO #ratedresources FROM Resources.Resource r JOIN resources.resourceversion rv ON rv.ResourceId = r.Id AND rv.id = r.CurrentResourceVersionId AND rv.Deleted = 0 + LEFT JOIN ( + SELECT + rp.ResourceVersionId, + JSON_QUERY('[' + STRING_AGG( + '{"Id":' + CAST(p.Id AS NVARCHAR) + + ',"Name":"' + p.Name + '"' + + ',"Description":"' + p.Description + '"' + + ',"Logo":"' + ISNULL(p.Logo, '') + '"}', + ',') + ']') AS ProvidersJson + FROM resources.ResourceVersionProvider rp + JOIN hub.Provider p ON p.Id = rp.ProviderId + WHERE p.Deleted = 0 and rp.Deleted = 0 + GROUP BY rp.ResourceVersionId + ) rpAgg ON rpAgg.ResourceVersionId = r.CurrentResourceVersionId JOIN resources.ResourceVersionRatingSummary rvrs ON r.CurrentResourceVersionId = rvrs.ResourceVersionId AND rvrs.RatingCount > 0 JOIN hierarchy.NodeResource nr ON r.Id = nr.ResourceId AND nr.Deleted = 0 JOIN hierarchy.Node n ON n.Id = nr.NodeId AND n.Hidden = 0 AND n.Deleted = 0 @@ -80,4 +96,4 @@ BEGIN SELECT @TotalRecords = CASE WHEN COUNT(*) > 12 THEN @MaxRows ELSE COUNT(*) END FROM #ratedresources -END \ No newline at end of file +END diff --git a/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Resources/GetRecentDashboardResources.sql b/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Resources/GetRecentDashboardResources.sql index 5ba8fdd4a..eedbe00e6 100644 --- a/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Resources/GetRecentDashboardResources.sql +++ b/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Resources/GetRecentDashboardResources.sql @@ -7,6 +7,7 @@ -- -- 24 Jun 2024 OA Initial Revision -- 27 Jun 2024 SA Removed unused temp tables +-- 29 Sep 2025 SA Integrated the provider dertails ------------------------------------------------------------------------------- CREATE PROCEDURE [resources].[GetRecentDashboardResources] @@ -53,9 +54,24 @@ BEGIN ,CAST(ISNULL(ub.[Deleted], 1) ^ 1 AS BIT) AS IsBookmarked ,rvrs.AverageRating ,rvrs.RatingCount + ,rpAgg.ProvidersJson INTO #recentresources FROM Resources.Resource r JOIN resources.resourceversion rv ON rv.ResourceId = r.Id AND rv.id = r.CurrentResourceVersionId AND rv.Deleted = 0 + LEFT JOIN ( + SELECT + rp.ResourceVersionId, + JSON_QUERY('[' + STRING_AGG( + '{"Id":' + CAST(p.Id AS NVARCHAR) + + ',"Name":"' + p.Name + '"' + + ',"Description":"' + p.Description + '"' + + ',"Logo":"' + ISNULL(p.Logo, '') + '"}', + ',') + ']') AS ProvidersJson + FROM resources.ResourceVersionProvider rp + JOIN hub.Provider p ON p.Id = rp.ProviderId + WHERE p.Deleted = 0 and rp.Deleted = 0 + GROUP BY rp.ResourceVersionId + ) rpAgg ON rpAgg.ResourceVersionId = r.CurrentResourceVersionId JOIN hierarchy.Publication p ON rv.PublicationId = p.Id AND p.Deleted = 0 JOIN resources.ResourceVersionRatingSummary rvrs ON rv.Id = rvrs.ResourceVersionId AND rvrs.Deleted = 0 JOIN hierarchy.NodeResource nr ON r.Id = nr.ResourceId AND nr.Deleted = 0 @@ -79,4 +95,4 @@ BEGIN FETCH NEXT @FetchRows ROWS ONLY SELECT @TotalRecords = CASE WHEN COUNT(*) > 12 THEN @MaxRows ELSE COUNT(*) END FROM #recentresources -END \ No newline at end of file +END diff --git a/WebAPI/LearningHub.Nhs.Repository.Interface/LearningHub.Nhs.Repository.Interface.csproj b/WebAPI/LearningHub.Nhs.Repository.Interface/LearningHub.Nhs.Repository.Interface.csproj index 7e09ec673..b5dd8c854 100644 --- a/WebAPI/LearningHub.Nhs.Repository.Interface/LearningHub.Nhs.Repository.Interface.csproj +++ b/WebAPI/LearningHub.Nhs.Repository.Interface/LearningHub.Nhs.Repository.Interface.csproj @@ -10,7 +10,7 @@ - + diff --git a/WebAPI/LearningHub.Nhs.Repository/LearningHub.Nhs.Repository.csproj b/WebAPI/LearningHub.Nhs.Repository/LearningHub.Nhs.Repository.csproj index 6da0f9200..aba1f9934 100644 --- a/WebAPI/LearningHub.Nhs.Repository/LearningHub.Nhs.Repository.csproj +++ b/WebAPI/LearningHub.Nhs.Repository/LearningHub.Nhs.Repository.csproj @@ -9,7 +9,7 @@ - + diff --git a/WebAPI/LearningHub.Nhs.Services.Interface/LearningHub.Nhs.Services.Interface.csproj b/WebAPI/LearningHub.Nhs.Services.Interface/LearningHub.Nhs.Services.Interface.csproj index 024756991..6bb4345f0 100644 --- a/WebAPI/LearningHub.Nhs.Services.Interface/LearningHub.Nhs.Services.Interface.csproj +++ b/WebAPI/LearningHub.Nhs.Services.Interface/LearningHub.Nhs.Services.Interface.csproj @@ -16,7 +16,7 @@ - + all diff --git a/WebAPI/LearningHub.Nhs.Services.UnitTests/LearningHub.Nhs.Services.UnitTests.csproj b/WebAPI/LearningHub.Nhs.Services.UnitTests/LearningHub.Nhs.Services.UnitTests.csproj index 6b6743743..c7d8259f3 100644 --- a/WebAPI/LearningHub.Nhs.Services.UnitTests/LearningHub.Nhs.Services.UnitTests.csproj +++ b/WebAPI/LearningHub.Nhs.Services.UnitTests/LearningHub.Nhs.Services.UnitTests.csproj @@ -13,7 +13,7 @@ - + diff --git a/WebAPI/LearningHub.Nhs.Services/LearningHub.Nhs.Services.csproj b/WebAPI/LearningHub.Nhs.Services/LearningHub.Nhs.Services.csproj index 44f8119cb..6b3e9f422 100644 --- a/WebAPI/LearningHub.Nhs.Services/LearningHub.Nhs.Services.csproj +++ b/WebAPI/LearningHub.Nhs.Services/LearningHub.Nhs.Services.csproj @@ -13,7 +13,7 @@ - + diff --git a/WebAPI/MigrationTool/LearningHub.Nhs.Migration.ConsoleApp/LearningHub.Nhs.Migration.ConsoleApp.csproj b/WebAPI/MigrationTool/LearningHub.Nhs.Migration.ConsoleApp/LearningHub.Nhs.Migration.ConsoleApp.csproj index 73e18184e..57a336264 100644 --- a/WebAPI/MigrationTool/LearningHub.Nhs.Migration.ConsoleApp/LearningHub.Nhs.Migration.ConsoleApp.csproj +++ b/WebAPI/MigrationTool/LearningHub.Nhs.Migration.ConsoleApp/LearningHub.Nhs.Migration.ConsoleApp.csproj @@ -25,7 +25,7 @@ - + all diff --git a/WebAPI/MigrationTool/LearningHub.Nhs.Migration.Interface/LearningHub.Nhs.Migration.Interface.csproj b/WebAPI/MigrationTool/LearningHub.Nhs.Migration.Interface/LearningHub.Nhs.Migration.Interface.csproj index 7b945c483..5be4b290b 100644 --- a/WebAPI/MigrationTool/LearningHub.Nhs.Migration.Interface/LearningHub.Nhs.Migration.Interface.csproj +++ b/WebAPI/MigrationTool/LearningHub.Nhs.Migration.Interface/LearningHub.Nhs.Migration.Interface.csproj @@ -9,7 +9,7 @@ - + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/WebAPI/MigrationTool/LearningHub.Nhs.Migration.Models/LearningHub.Nhs.Migration.Models.csproj b/WebAPI/MigrationTool/LearningHub.Nhs.Migration.Models/LearningHub.Nhs.Migration.Models.csproj index 189b0348e..615fbadd4 100644 --- a/WebAPI/MigrationTool/LearningHub.Nhs.Migration.Models/LearningHub.Nhs.Migration.Models.csproj +++ b/WebAPI/MigrationTool/LearningHub.Nhs.Migration.Models/LearningHub.Nhs.Migration.Models.csproj @@ -10,7 +10,7 @@ - + all diff --git a/WebAPI/MigrationTool/LearningHub.Nhs.Migration.Staging.Repository/LearningHub.Nhs.Migration.Staging.Repository.csproj b/WebAPI/MigrationTool/LearningHub.Nhs.Migration.Staging.Repository/LearningHub.Nhs.Migration.Staging.Repository.csproj index 090dce6fc..6200fdc52 100644 --- a/WebAPI/MigrationTool/LearningHub.Nhs.Migration.Staging.Repository/LearningHub.Nhs.Migration.Staging.Repository.csproj +++ b/WebAPI/MigrationTool/LearningHub.Nhs.Migration.Staging.Repository/LearningHub.Nhs.Migration.Staging.Repository.csproj @@ -9,7 +9,7 @@ - + diff --git a/WebAPI/MigrationTool/LearningHub.Nhs.Migration.UnitTests/LearningHub.Nhs.Migration.UnitTests.csproj b/WebAPI/MigrationTool/LearningHub.Nhs.Migration.UnitTests/LearningHub.Nhs.Migration.UnitTests.csproj index a9b7683f7..47b1976b3 100644 --- a/WebAPI/MigrationTool/LearningHub.Nhs.Migration.UnitTests/LearningHub.Nhs.Migration.UnitTests.csproj +++ b/WebAPI/MigrationTool/LearningHub.Nhs.Migration.UnitTests/LearningHub.Nhs.Migration.UnitTests.csproj @@ -10,7 +10,7 @@ - + diff --git a/WebAPI/MigrationTool/LearningHub.Nhs.Migration/LearningHub.Nhs.Migration.csproj b/WebAPI/MigrationTool/LearningHub.Nhs.Migration/LearningHub.Nhs.Migration.csproj index 71195c130..c104631fa 100644 --- a/WebAPI/MigrationTool/LearningHub.Nhs.Migration/LearningHub.Nhs.Migration.csproj +++ b/WebAPI/MigrationTool/LearningHub.Nhs.Migration/LearningHub.Nhs.Migration.csproj @@ -12,7 +12,7 @@ - + all runtime; build; native; contentfiles; analyzers; buildtransitive