}
-
+ else @if (ViewActivityHelper.CanViewVidoProgress(activity))
+ {
+
+ }
@if (ViewActivityHelper.CanCertificateawarded(activity))
{
diff --git a/OpenAPI/LearningHub.Nhs.OpenApi.Services/Services/DashboardService.cs b/OpenAPI/LearningHub.Nhs.OpenApi.Services/Services/DashboardService.cs
index faf4f5c0..645ee227 100644
--- a/OpenAPI/LearningHub.Nhs.OpenApi.Services/Services/DashboardService.cs
+++ b/OpenAPI/LearningHub.Nhs.OpenApi.Services/Services/DashboardService.cs
@@ -158,7 +158,7 @@ public async Task GetMyCoursesAndElearning
}
if (myInProgressActivities.TotalCount > 0)
{
- foreach (var activity in myInProgressActivities.Activities)
+ foreach (var activity in myInProgressActivities.Activities)
{
activity.Providers = await providerService.GetByResourceVersionIdAsync(activity.ResourceVersionId);
}
@@ -270,15 +270,15 @@ public async Task GetMyInprogressLearning
// Combine both result sets
var combainedUserActivities = mappedMyLearningActivities.Concat(mappedEnrolledCourses).ToList();
int skip = (pageNumber - 1) * 3;
- var totalCount = combainedUserActivities.Count();
- bool isLastPage = skip + 3 >= 8;
+ var totalCount = combainedUserActivities.Count() > 8 ? 8 : combainedUserActivities.Count();
+ bool isLastPage = skip + 3 >= totalCount;
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 > 8 ? 8 : totalCount,
+ TotalCount = totalCount,
Activities = pagedResults,
};
@@ -346,22 +346,22 @@ public async Task GetUserCertificateDet
var allCertificates = resourceCertificates.Concat(mappedCourseCertificates);
- var allowedTypeIds = new List { 6,13 };
+ var allowedTypeIds = new List { 6, 13 };
allCertificates = allCertificates.Where(c => allowedTypeIds.Contains(c.ResourceTypeId));
var orderedCertificates = allCertificates.OrderByDescending(c => c.AwardedDate);
int skip = (pageNumber - 1) * 3;
- var totalCount = orderedCertificates.Count();
- bool isLastPage = skip + 3 >= 8;
+ var totalCount = orderedCertificates.Count() > 8 ? 8 : orderedCertificates.Count();
+ bool isLastPage = skip + 3 >= totalCount;
int pageSize = isLastPage ? 2 : 3;
var pagedResults = orderedCertificates.Skip(skip).Take(pageSize).ToList();
return new MyLearningCertificatesDetailedViewModel
{
Certificates = pagedResults,
- TotalCount = totalCount > 8 ? 8 : totalCount
+ TotalCount = totalCount
};
}
catch (Exception ex)
diff --git a/OpenAPI/LearningHub.Nhs.OpenApi.Services/Services/MyLearningService.cs b/OpenAPI/LearningHub.Nhs.OpenApi.Services/Services/MyLearningService.cs
index 29a28a9c..61b4aff6 100644
--- a/OpenAPI/LearningHub.Nhs.OpenApi.Services/Services/MyLearningService.cs
+++ b/OpenAPI/LearningHub.Nhs.OpenApi.Services/Services/MyLearningService.cs
@@ -168,6 +168,13 @@ public async Task GetUserRecentMyLearning
if (result != null)
{
+ // Step 1: Get most recent date per ResourceId
+ var mostRecentByResource = result
+ .GroupBy(a => a.ResourceId)
+ .ToDictionary(
+ g => g.Key,
+ g => g.Max(a => a.ActivityDate)
+ );
mappedMyLearningActivities = result.Select(Activity => new MyLearningCombinedActivitiesViewModel
{
UserId = userId,
@@ -185,9 +192,12 @@ public async Task GetUserRecentMyLearning
ScorePercentage = Activity.ScorePercentage,
TotalActivities = 0,
CompletedActivities = 0,
- IsMostRecent = false,
+ //Set IsMostRecent if this is the most recent activity for the ResourceId
+ IsMostRecent = mostRecentByResource.TryGetValue(Activity.ResourceId, out var mostRecentDate)
+ && Activity.ActivityDate == mostRecentDate,
ResourceDurationMilliseconds = Activity.ResourceDurationMilliseconds,
CompletionPercentage = Activity.CompletionPercentage,
+
}).ToList();
}
@@ -214,7 +224,7 @@ public async Task GetUserRecentMyLearning
CompletedActivities = course.CompletedActivities,
IsMostRecent = false,
ResourceDurationMilliseconds = 0,
- CompletionPercentage=0,
+ CompletionPercentage = 0,
}).ToList();
}
diff --git a/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Activity/GetUserRecentLearningActivities.sql b/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Activity/GetUserRecentLearningActivities.sql
index 6d49a10c..7d14eff6 100644
--- a/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Activity/GetUserRecentLearningActivities.sql
+++ b/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Activity/GetUserRecentLearningActivities.sql
@@ -49,6 +49,11 @@ BEGIN
sa.CmiCoreScoreMax AS CmiCoreScoreMax,
sa.CmiCoreSession_time AS CmiCoreSessiontime,
sa.DurationSeconds AS DurationSeconds,
+ CASE
+ WHEN ResourceTypeId = 2 THEN ISNULL(audiorv.DurationInMilliseconds, 0)
+ WHEN ResourceTypeId = 7 THEN ISNULL(videorv.DurationInMilliseconds, 0)
+ ELSE 0
+ END AS ResourceDurationMilliseconds,
ROW_NUMBER() OVER (PARTITION BY ra.ResourceId ORDER BY ISNULL(ara.ActivityEnd, ra.ActivityStart) DESC) AS rn
FROM activity.ResourceActivity ra
LEFT JOIN activity.ResourceActivity ara ON ara.LaunchResourceActivityId = ra.Id
@@ -56,6 +61,8 @@ BEGIN
INNER JOIN [resources].[ResourceVersion] rv ON rv.Id = ra.ResourceVersionId AND rv.Deleted = 0
LEFT JOIN [resources].[ResourceVersionProvider] rvp on rv.Id = rvp.ResourceVersionId
LEFT JOIN [resources].[AssessmentResourceVersion] arv ON arv.ResourceVersionId = ra.ResourceVersionId
+ LEFT JOIN [resources].[AudioResourceVersion] audiorv ON audiorv.ResourceVersionId = ra.ResourceVersionId
+ LEFT JOIN [resources].[VideoResourceVersion] videorv ON videorv.ResourceVersionId = ra.ResourceVersionId
LEFT JOIN [activity].[AssessmentResourceActivity] asra ON asra.ResourceActivityId = ra.Id
LEFT JOIN [activity].[MediaResourceActivity] mar ON mar.ResourceActivityId = ra.Id
LEFT JOIN [activity].[ScormActivity] sa ON sa.ResourceActivityId = ra.Id
@@ -81,7 +88,7 @@ SELECT ActivityId,
ActivityDate,
ActivityDurationSeconds,
ScorePercentage,
- 0 AS ResourceDurationMilliseconds,
+ ResourceDurationMilliseconds,
PercentComplete AS CompletionPercentage
FROM CTERecentActivities
WHERE rn = 1