From ef29bbed0b9a0f8b04a767a0e4c70cfd99092482 Mon Sep 17 00:00:00 2001 From: swapnamol-abraham Date: Thu, 16 Apr 2026 14:55:34 +0100 Subject: [PATCH 1/2] TD-7126: My courses and learning - elearning resources doesn't appear in In Progress elearning tab --- .../Services/DashboardService.cs | 42 ++++++++++++------- .../Services/MyLearningService.cs | 6 +-- 2 files changed, 29 insertions(+), 19 deletions(-) diff --git a/OpenAPI/LearningHub.Nhs.OpenApi.Services/Services/DashboardService.cs b/OpenAPI/LearningHub.Nhs.OpenApi.Services/Services/DashboardService.cs index bd98ac5b..c7477500 100644 --- a/OpenAPI/LearningHub.Nhs.OpenApi.Services/Services/DashboardService.cs +++ b/OpenAPI/LearningHub.Nhs.OpenApi.Services/Services/DashboardService.cs @@ -19,6 +19,8 @@ using LearningHub.Nhs.OpenApi.Services.Interface.Services; using LearningHub.Nhs.Models.Entities.Resource; using System.Diagnostics; + using StackExchange.Redis; + using LearningHub.Nhs.Models.Moodle; /// /// The DashboardService. @@ -277,7 +279,8 @@ public async Task GetMyInprogressLearning if (entrolledCourses != null) { - mappedEnrolledCourses = entrolledCourses?.Results? + var courses = entrolledCourses?.Results ?? Enumerable.Empty(); + mappedEnrolledCourses = courses .Where(r => r.Data?.Courses != null) .SelectMany(r => r.Data.Courses) .Select(course => new MyLearningCombinedActivitiesViewModel @@ -312,24 +315,31 @@ public async Task GetMyInprogressLearning : DateTimeOffset.MinValue, }).ToList(); } + try + { + // Combine both result sets + var combainedUserActivities = mappedMyLearningActivities.Concat(mappedEnrolledCourses).ToList(); + int skip = (pageNumber - 1) * 3; + var totalCount = combainedUserActivities.Count() > 8 ? 8 : combainedUserActivities.Count(); - // Combine both result sets - var combainedUserActivities = mappedMyLearningActivities.Concat(mappedEnrolledCourses).ToList(); - int skip = (pageNumber - 1) * 3; - var totalCount = combainedUserActivities.Count() > 8 ? 8 : combainedUserActivities.Count(); + bool isLastPage = skip + 3 >= 8; + int pageSize = isLastPage ? 2 : 3; + var pagedResults = combainedUserActivities.OrderByDescending(activity => activity.ActivityDate).Skip(skip).Take(pageSize).ToList(); - bool isLastPage = skip + 3 >= 8; - int pageSize = isLastPage ? 2 : 3; - var pagedResults = combainedUserActivities.OrderByDescending(activity => activity.ActivityDate).Skip(skip).Take(pageSize).ToList(); + // Count total records. + MyLearningActivitiesDetailedViewModel viewModel = new MyLearningActivitiesDetailedViewModel() + { + TotalCount = totalCount, + Activities = pagedResults, + }; - // Count total records. - MyLearningActivitiesDetailedViewModel viewModel = new MyLearningActivitiesDetailedViewModel() + return viewModel; + } + catch (Exception ex) { - TotalCount = totalCount, - Activities = pagedResults, - }; + return null; + } - return viewModel; } /// @@ -357,7 +367,7 @@ public async Task GetUserCertificateDet } // Await all active tasks in parallel - if (courseCertificatesTask != null & dashboardTrayLearningResourceType == "all") + if (courseCertificatesTask != null && dashboardTrayLearningResourceType == "all") await Task.WhenAll(courseCertificatesTask, resourceCertificatesTask); else if (dashboardTrayLearningResourceType == "elearning") await resourceCertificatesTask; @@ -390,7 +400,7 @@ public async Task GetUserCertificateDet CertificateDownloadUrl = c.DownloadLink, ResourceVersionId = 0, ProvidersJson = null - }); + }) ?? Enumerable.Empty(); } var allCertificates = resourceCertificates.Concat(mappedCourseCertificates); diff --git a/OpenAPI/LearningHub.Nhs.OpenApi.Services/Services/MyLearningService.cs b/OpenAPI/LearningHub.Nhs.OpenApi.Services/Services/MyLearningService.cs index 7ff1bba1..8d179365 100644 --- a/OpenAPI/LearningHub.Nhs.OpenApi.Services/Services/MyLearningService.cs +++ b/OpenAPI/LearningHub.Nhs.OpenApi.Services/Services/MyLearningService.cs @@ -250,7 +250,7 @@ public async Task GetUserRecentMyLearning CertificateAwardedDate = course.EndDate.HasValue ? DateTimeOffset.FromUnixTimeSeconds(course.EndDate.Value) : DateTimeOffset.MinValue, - }).ToList(); + }).ToList()?? new List(); ; } // Combine both result sets @@ -397,7 +397,7 @@ public async Task GetUserLearningHistoryA CertificateAwardedDate = course.EndDate.HasValue ? DateTimeOffset.FromUnixTimeSeconds(course.EndDate.Value) : DateTimeOffset.MinValue, - }).ToList(); + }).ToList()?? new List(); } } @@ -763,7 +763,7 @@ public async Task GetUserCertificateDet CertificateDownloadUrl = c.DownloadLink, ResourceVersionId = 0, ProvidersJson = null, - }); + }) ?? Enumerable.Empty(); } var allCertificates = resourceCertificates.Concat(mappedCourseCertificates); From 5a3148afa829e4fd48580d5c85f4fe4b82a4aaad Mon Sep 17 00:00:00 2001 From: swapnamol-abraham Date: Thu, 16 Apr 2026 14:59:40 +0100 Subject: [PATCH 2/2] Removed unwanted lines --- .../Services/DashboardService.cs | 41 +++++++------------ 1 file changed, 15 insertions(+), 26 deletions(-) diff --git a/OpenAPI/LearningHub.Nhs.OpenApi.Services/Services/DashboardService.cs b/OpenAPI/LearningHub.Nhs.OpenApi.Services/Services/DashboardService.cs index c7477500..95dd2355 100644 --- a/OpenAPI/LearningHub.Nhs.OpenApi.Services/Services/DashboardService.cs +++ b/OpenAPI/LearningHub.Nhs.OpenApi.Services/Services/DashboardService.cs @@ -8,19 +8,15 @@ using AutoMapper; using LearningHub.Nhs.Models.Dashboard; using LearningHub.Nhs.Models.Enums; + using LearningHub.Nhs.Models.Moodle; using LearningHub.Nhs.Models.Moodle.API; using LearningHub.Nhs.Models.MyLearning; + using LearningHub.Nhs.Models.Provider; using LearningHub.Nhs.OpenApi.Repositories.Interface.Repositories; using LearningHub.Nhs.OpenApi.Repositories.Interface.Repositories.Activity; - 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.Repositories.Repositories.Activity; using LearningHub.Nhs.OpenApi.Services.Interface.Services; - using LearningHub.Nhs.Models.Entities.Resource; - using System.Diagnostics; - using StackExchange.Redis; - using LearningHub.Nhs.Models.Moodle; /// /// The DashboardService. @@ -315,31 +311,24 @@ public async Task GetMyInprogressLearning : DateTimeOffset.MinValue, }).ToList(); } - try - { - // Combine both result sets - var combainedUserActivities = mappedMyLearningActivities.Concat(mappedEnrolledCourses).ToList(); - int skip = (pageNumber - 1) * 3; - var totalCount = combainedUserActivities.Count() > 8 ? 8 : combainedUserActivities.Count(); - bool isLastPage = skip + 3 >= 8; - int pageSize = isLastPage ? 2 : 3; - var pagedResults = combainedUserActivities.OrderByDescending(activity => activity.ActivityDate).Skip(skip).Take(pageSize).ToList(); + // Combine both result sets + var combainedUserActivities = mappedMyLearningActivities.Concat(mappedEnrolledCourses).ToList(); + int skip = (pageNumber - 1) * 3; + var totalCount = combainedUserActivities.Count() > 8 ? 8 : combainedUserActivities.Count(); - // Count total records. - MyLearningActivitiesDetailedViewModel viewModel = new MyLearningActivitiesDetailedViewModel() - { - TotalCount = totalCount, - Activities = pagedResults, - }; + bool isLastPage = skip + 3 >= 8; + int pageSize = isLastPage ? 2 : 3; + var pagedResults = combainedUserActivities.OrderByDescending(activity => activity.ActivityDate).Skip(skip).Take(pageSize).ToList(); - return viewModel; - } - catch (Exception ex) + // Count total records. + MyLearningActivitiesDetailedViewModel viewModel = new MyLearningActivitiesDetailedViewModel() { - return null; - } + TotalCount = totalCount, + Activities = pagedResults, + }; + return viewModel; } ///