Skip to content

Commit e13ab4b

Browse files
authored
Merge pull request #628 from TechnologyEnhancedLearning/Develop/Fixes/TD-4819-Certificates-section-blank-on-My-accessed-learning-tray
TD-4819: LH-Issue showing 'Certificates' section blank on 'My accesse…
2 parents 40a4ff2 + 9d4bc51 commit e13ab4b

File tree

3 files changed

+103
-1
lines changed

3 files changed

+103
-1
lines changed

WebAPI/LearningHub.Nhs.Database/LearningHub.Nhs.Database.sqlproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -525,6 +525,7 @@
525525
<Build Include="Stored Procedures\Hierarchy\GetCatalogues.sql" />
526526
<Build Include="Stored Procedures\Hierarchy\GetCataloguesCount.sql" />
527527
<None Include="Scripts\Post-Deploy\Scripts\PPSXFileType.sql" />
528+
<Build Include="Stored Procedures\Resources\GetMyLearningCertificatesDashboardResources.sql" />
528529
</ItemGroup>
529530
<ItemGroup>
530531
<None Include="Scripts\Pre-Deploy\Scripts\Card5766_AuthorTableChanges.PreDeployment.sql" />
Lines changed: 101 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,101 @@
1+
-------------------------------------------------------------------------------
2+
-- Author OA
3+
-- Created 24 JUN 2024 Nov 2020
4+
-- Purpose Break down the GetDashboardResources SP to smaller SP for a specific data type
5+
--
6+
-- Modification History
7+
--
8+
-- 24 Jun 2024 OA Initial Revision
9+
-------------------------------------------------------------------------------
10+
11+
CREATE PROCEDURE [resources].[GetMyLearningCertificatesDashboardResources]
12+
@UserId INT,
13+
@PageNumber INT = 1,
14+
@TotalRecords INT OUTPUT
15+
AS
16+
BEGIN
17+
DECLARE @MaxPageNumber INT = 4
18+
19+
IF @PageNumber > 4
20+
BEGIN
21+
SET @PageNumber = @MaxPageNumber
22+
END
23+
24+
DECLARE @FetchRows INT = 3
25+
DECLARE @MaxRows INT = @MaxPageNUmber * @FetchRows
26+
DECLARE @OffsetRows INT = (@PageNumber - 1) * @FetchRows
27+
28+
DECLARE @MyActivity TABLE (ResourceId [int] NOT NULL PRIMARY KEY, ResourceActivityId [int] NOT NULL);
29+
DECLARE @Resources TABLE (ResourceId [int] NOT NULL PRIMARY KEY, ResourceActivityCount [int] NOT NULL);
30+
31+
INSERT INTO @MyActivity
32+
SELECT TOP (@MaxRows) ra.ResourceId, MAX(ra.Id) ResourceActivityId
33+
FROM
34+
activity.ResourceActivity ra
35+
JOIN [resources].[Resource] r ON ra.ResourceId = r.Id
36+
JOIN [resources].[ResourceVersion] rv ON rv.Id = ra.ResourceVersionId
37+
LEFT JOIN [resources].[AssessmentResourceVersion] arv ON arv.ResourceVersionId = ra.ResourceVersionId
38+
LEFT JOIN [activity].[AssessmentResourceActivity] ara ON ara.ResourceActivityId = ra.Id
39+
LEFT JOIN [activity].[MediaResourceActivity] mar ON mar.ResourceActivityId = ra.Id
40+
LEFT JOIN [activity].[ScormActivity] sa ON sa.ResourceActivityId = ra.Id
41+
WHERE ra.UserId = @UserId AND rv.CertificateEnabled = 1
42+
AND (
43+
(r.ResourceTypeId IN (2, 7) AND ra.ActivityStatusId = 3 OR ra.ActivityStart < '2020-09-07 00:00:00 +00:00' OR mar.Id IS NOT NULL AND mar.PercentComplete = 100)
44+
OR (r.ResourceTypeId = 6 AND (sa.CmiCoreLesson_status IN(3,5) OR (ra.ActivityStatusId IN(3, 5))))
45+
OR ((r.ResourceTypeId = 11 AND arv.AssessmentType = 2) AND (ara.Score >= arv.PassMark OR ra.ActivityStatusId IN(3, 5)))
46+
OR ((r.ResourceTypeId = 11 AND arv.AssessmentType =1) AND (ara.Score >= arv.PassMark AND ra.ActivityStatusId IN(3, 5,7)))
47+
OR (r.ResourceTypeId IN (1, 5, 8, 9, 10, 12) AND ra.ActivityStatusId = 3))
48+
GROUP BY ra.ResourceId
49+
ORDER BY ResourceActivityId DESC
50+
51+
SELECT r.Id AS ResourceId
52+
,( SELECT TOP 1 rr.OriginalResourceReferenceId
53+
FROM [resources].[ResourceReference] rr
54+
JOIN hierarchy.NodePath np on np.id = rr.NodePathId and np.NodeId = n.Id and np.Deleted = 0
55+
WHERE rr.ResourceId = rv.ResourceId AND rr.Deleted = 0
56+
) AS ResourceReferenceID
57+
,r.CurrentResourceVersionId AS ResourceVersionId
58+
,r.ResourceTypeId AS ResourceTypeId
59+
,rv.Title
60+
,rv.Description
61+
,CASE
62+
WHEN r.ResourceTypeId = 7 THEN
63+
(SELECT vrv.DurationInMilliseconds from [resources].[VideoResourceVersion] vrv WHERE vrv.[ResourceVersionId] = r.CurrentResourceVersionId)
64+
WHEN r.ResourceTypeId = 2 THEN
65+
(SELECT vrv.DurationInMilliseconds from [resources].[AudioResourceVersion] vrv WHERE vrv.[ResourceVersionId] = r.CurrentResourceVersionId)
66+
ELSE
67+
NULL
68+
END AS DurationInMilliseconds
69+
,CASE WHEN n.id = 1 THEN NULL ELSE cnv.Name END AS CatalogueName
70+
,cnv.Url AS Url
71+
,CASE WHEN n.id = 1 THEN NULL ELSE cnv.BadgeUrl END AS BadgeUrl
72+
,cnv.RestrictedAccess
73+
,CAST(CASE WHEN cnv.RestrictedAccess = 1 AND auth.CatalogueNodeId IS NULL THEN 0 ELSE 1 END AS bit) AS HasAccess
74+
,ub.Id AS BookMarkId
75+
,CAST(ISNULL(ub.[Deleted], 1) ^ 1 AS BIT) AS IsBookmarked
76+
,rvrs.AverageRating
77+
,rvrs.RatingCount
78+
FROM @MyActivity ma
79+
JOIN activity.ResourceActivity ra ON ra.id = ma.ResourceActivityId
80+
JOIN resources.resourceversion rv ON rv.id = ra.ResourceVersionId AND rv.Deleted = 0
81+
JOIN Resources.Resource r ON r.Id = rv.ResourceId
82+
JOIN hierarchy.Publication p ON rv.PublicationId = p.Id AND p.Deleted = 0
83+
JOIN resources.ResourceVersionRatingSummary rvrs ON rv.Id = rvrs.ResourceVersionId AND rvrs.Deleted = 0
84+
JOIN hierarchy.NodeResource nr ON r.Id = nr.ResourceId AND nr.Deleted = 0
85+
JOIN hierarchy.Node n ON n.Id = nr.NodeId AND n.Hidden = 0 AND n.Deleted = 0
86+
JOIN hierarchy.NodePath np ON np.NodeId = n.Id AND np.Deleted = 0 AND np.IsActive = 1
87+
JOIN hierarchy.NodeVersion nv ON nv.NodeId = np.CatalogueNodeId AND nv.VersionStatusId = 2 AND nv.Deleted = 0
88+
JOIN hierarchy.CatalogueNodeVersion cnv ON cnv.NodeVersionId = nv.Id AND cnv.Deleted = 0
89+
LEFT JOIN hub.UserBookmark ub ON ub.UserId = @UserId AND ub.ResourceReferenceId = (SELECT TOP 1 rr.OriginalResourceReferenceId
90+
FROM [resources].[ResourceReference] rr
91+
JOIN hierarchy.NodePath np on np.id = rr.NodePathId and np.NodeId = n.Id and np.Deleted = 0
92+
WHERE rr.ResourceId = rv.ResourceId AND rr.Deleted = 0)
93+
LEFT JOIN ( SELECT DISTINCT CatalogueNodeId
94+
FROM [hub].[RoleUserGroupView] rug JOIN hub.UserUserGroup uug ON rug.UserGroupId = uug.UserGroupId
95+
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
96+
ORDER BY ma.ResourceActivityId DESC, rv.Title
97+
OFFSET @OffsetRows ROWS
98+
FETCH NEXT @FetchRows ROWS ONLY
99+
100+
SELECT @TotalRecords = CASE WHEN COUNT(*) > 12 THEN @MaxRows ELSE COUNT(*) END FROM @MyActivity
101+
END

WebAPI/LearningHub.Nhs.Repository/Resources/ResourceVersionRepository.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -690,7 +690,7 @@ public List<ResourceContributionDto> GetContributions(int userId, ResourceContri
690690
switch (dashboardType)
691691
{
692692
case "my-certificates":
693-
dashboardResources = this.DbContext.DashboardResourceDto.FromSqlRaw("resources.GetMyCertificatesDashboardResources @userId, @pageNumber, @totalRows output", param0, param1, param2).ToList();
693+
dashboardResources = this.DbContext.DashboardResourceDto.FromSqlRaw("resources.GetMyLearningCertificatesDashboardResources @userId, @pageNumber, @totalRows output", param0, param1, param2).ToList();
694694
break;
695695
case "my-recent-completed":
696696
dashboardResources = this.DbContext.DashboardResourceDto.FromSqlRaw("resources.GetMyRecentCompletedDashboardResources @userId, @pageNumber, @totalRows output", param0, param1, param2).ToList();

0 commit comments

Comments
 (0)