diff --git a/OpenAPI/LearningHub.Nhs.OpenApi.Services/Services/DashboardService.cs b/OpenAPI/LearningHub.Nhs.OpenApi.Services/Services/DashboardService.cs index 37cb4319..94685100 100644 --- a/OpenAPI/LearningHub.Nhs.OpenApi.Services/Services/DashboardService.cs +++ b/OpenAPI/LearningHub.Nhs.OpenApi.Services/Services/DashboardService.cs @@ -237,7 +237,9 @@ public async Task GetMyInprogressLearning Title = course.DisplayName, CertificateEnabled = course.CertificateEnabled, ActivityStatus = (course.Completed == true || course.ProgressPercentage.TrimEnd('%') == "100") ? ActivityStatusEnum.Completed : ActivityStatusEnum.Incomplete, - ActivityDate = DateTimeOffset.FromUnixTimeMilliseconds(course.LastAccessDate ?? 0), + ActivityDate = course.LastAccessDate.HasValue + ? DateTimeOffset.FromUnixTimeSeconds(course.LastAccessDate.Value) + : DateTimeOffset.MinValue, ScorePercentage = Convert.ToInt32(course.ProgressPercentage.TrimEnd('%')), TotalActivities = course.TotalActivities, CompletedActivities = course.CompletedActivities, diff --git a/OpenAPI/LearningHub.Nhs.OpenApi.Services/Services/MyLearningService.cs b/OpenAPI/LearningHub.Nhs.OpenApi.Services/Services/MyLearningService.cs index 95d69ddd..1236a574 100644 --- a/OpenAPI/LearningHub.Nhs.OpenApi.Services/Services/MyLearningService.cs +++ b/OpenAPI/LearningHub.Nhs.OpenApi.Services/Services/MyLearningService.cs @@ -203,7 +203,9 @@ public async Task GetUserRecentMyLearning Title = course.DisplayName, CertificateEnabled = course.CertificateEnabled, ActivityStatus = (course.Completed == true || course.ProgressPercentage.TrimEnd('%') == "100") ? ActivityStatusEnum.Completed : ActivityStatusEnum.Incomplete, - ActivityDate = DateTimeOffset.FromUnixTimeMilliseconds(course.LastAccessDate ?? 0), + ActivityDate = course.LastAccessDate.HasValue + ? DateTimeOffset.FromUnixTimeSeconds(course.LastAccessDate.Value) + : DateTimeOffset.MinValue, ScorePercentage = Convert.ToInt32(course.ProgressPercentage.TrimEnd('%')), TotalActivities = course.TotalActivities, CompletedActivities = course.CompletedActivities, @@ -316,7 +318,9 @@ public async Task GetUserLearningHistoryA Title = course.DisplayName, CertificateEnabled = course.CertificateEnabled, ActivityStatus = (course.Completed == true || course.ProgressPercentage.TrimEnd('%') == "100") ? ActivityStatusEnum.Completed : ActivityStatusEnum.Incomplete, - ActivityDate = DateTimeOffset.FromUnixTimeMilliseconds(course.LastAccessDate ?? 0), + ActivityDate = course.LastAccessDate.HasValue + ? DateTimeOffset.FromUnixTimeSeconds(course.LastAccessDate.Value) + : DateTimeOffset.MinValue, ScorePercentage = int.TryParse(course.ProgressPercentage.TrimEnd('%'), out var score) ? score : 0, TotalActivities = course.TotalActivities, CompletedActivities = course.CompletedActivities, diff --git a/WebAPI/LearningHub.Nhs.Database/LearningHub.Nhs.Database.sqlproj b/WebAPI/LearningHub.Nhs.Database/LearningHub.Nhs.Database.sqlproj index 44fa7e9f..ab619e5b 100644 --- a/WebAPI/LearningHub.Nhs.Database/LearningHub.Nhs.Database.sqlproj +++ b/WebAPI/LearningHub.Nhs.Database/LearningHub.Nhs.Database.sqlproj @@ -544,6 +544,7 @@ + diff --git a/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Activity/GetUserInProgressLearningActivities.sql b/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Activity/GetUserInProgressLearningActivities.sql new file mode 100644 index 00000000..0f440c02 --- /dev/null +++ b/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Activity/GetUserInProgressLearningActivities.sql @@ -0,0 +1,84 @@ +------------------------------------------------------------------------------- +-- Author Swapnamol Abraham +-- Created 10-09-2025 +-- Purpose Get Users In progress learning activities +-- +-- Modification History +------------------------------------------------------------------------------- +CREATE PROCEDURE [activity].[GetUserInProgressLearningActivities] ( + @userId INT + ) +AS +BEGIN + + ;WITH CTERecentActivities AS ( + SELECT + ra.Id AS ActivityId, + ara.LaunchResourceActivityId AS LaunchResourceActivityId, + ra.UserId AS UserId, + ra.ResourceId AS ResourceId, + r.CurrentResourceVersionId AS ResourceVersionId, + CASE WHEN r.CurrentResourceVersionId = ra.ResourceVersionId THEN 1 ELSE 0 END AS IsCurrentResourceVersion, + ( + SELECT TOP 1 rr.OriginalResourceReferenceId + FROM [resources].[ResourceReference] rr + WHERE rr.ResourceId = rv.ResourceId AND rr.Deleted = 0 + ) AS ResourceReferenceID, + ra.MajorVersion AS MajorVersion, + ra.MinorVersion AS MinorVersion, + ra.NodePathId AS NodePathId, + r.ResourceTypeId AS ResourceType, + rv.Title AS Title, + --rv.[Description] AS ResourceDescription, + rv.CertificateEnabled AS CertificateEnabled, + rvp.ProviderId AS ProviderId, + ISNULL(ara.ActivityStatusId, ra.ActivityStatusId) AS ActivityStatus, + ra.ActivityStart AS ActivityDate, + -- ara.ActivityEnd, + ISNULL(ara.DurationSeconds, 0) AS ActivityDurationSeconds, + ara.Score AS ScorePercentage, + arv.AssessmentType AS AssessmentType, + arv.PassMark AS PassMark, + asra.score AS AssesmentScore, + mar.SecondsPlayed AS SecondsPlayed, + mar.PercentComplete AS PercentComplete, + sa.CmiCoreLesson_status AS CmiCoreLessonstatus, + sa.CmiCoreScoreMax AS CmiCoreScoreMax, + sa.CmiCoreSession_time AS CmiCoreSessiontime, + sa.DurationSeconds AS DurationSeconds, + 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 + INNER JOIN [resources].[Resource] r ON ra.ResourceId = r.Id + 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 [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 + WHERE ra.LaunchResourceActivityId IS NULL AND ra.userid = @userId + AND ra.deleted = 0 + AND r.ResourceTypeId IN(6) --AND ra.ActivityStart >= DATEADD(MONTH, -6, SYSDATETIMEOFFSET()) +) +SELECT Top 8 ActivityId, + LaunchResourceActivityId, + UserId, + ResourceId, + ResourceVersionId, + CAST(IsCurrentResourceVersion AS BIT) AS IsCurrentResourceVersion, + ResourceReferenceId, + MajorVersion, + MinorVersion, + NodePathId, + ResourceType, + Title, + CertificateEnabled, + ProviderId, + ActivityStatus, + ActivityDate, + ActivityDurationSeconds, + ScorePercentage +FROM CTERecentActivities +WHERE rn = 1 order by ActivityDate desc; + +END \ No newline at end of file