Skip to content

Commit 4d29e9e

Browse files
committed
pre publish to update local db
1 parent b14e80e commit 4d29e9e

File tree

4 files changed

+110
-72
lines changed

4 files changed

+110
-72
lines changed

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -204,6 +204,7 @@
204204
<Build Include="Stored Procedures\Resources\GetMyInProgressDashboardResources.sql" />
205205
<Build Include="Stored Procedures\Resources\GetMyRecentCompletedDashboardResources.sql" />
206206
<None Include="Stored Procedures\Resources\backup getdashboardresource previous changes.txt" />
207+
<None Include="Stored Procedures\Resources\backup getmy certificate resources.txt" />
207208
</ItemGroup>
208209
<ItemGroup>
209210
<RefactorLog Include="LearningHub.Nhs.Database.refactorlog" />

WebAPI/LearningHub.Nhs.Database/Stored Procedures/Resources/GetAchievedCertificatedResourcesWithOptionalPagination.sql

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
-------------------------------------------------------------------------------
99

1010

11+
1112
CREATE PROCEDURE [resources].[GetAchievedcertificatedResourcesWithOptionalPagination]
1213
@UserId INT,
1314

WebAPI/LearningHub.Nhs.Database/Stored Procedures/Resources/GetMyCertificatesDashboardResources.sql

Lines changed: 7 additions & 72 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
-- Modification History
77
--
88
-- 24 Jun 2024 OA Initial Revision
9+
-- 31 Jun 2024 PT Extracting functionality of certification with optional pagination so can be used on openapi and be single source of truth
910
-------------------------------------------------------------------------------
1011

1112
CREATE PROCEDURE [resources].[GetMyCertificatesDashboardResources]
@@ -25,77 +26,11 @@ BEGIN
2526
DECLARE @MaxRows INT = @MaxPageNUmber * @FetchRows
2627
DECLARE @OffsetRows INT = (@PageNumber - 1) * @FetchRows
2728

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);
29+
EXEC [resources].[GetAchievedcertificatedResourcesWithOptionalPagination]
30+
@UserId = @UserId,
31+
@MaxRows= @MaxRows,
32+
@OffsetRows = @OffsetRows,
33+
@FetchRows = @FetchRows,
34+
@TotalRecords = @TotalRecords;
3035

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
10136
END
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].[GetMyCertificatesDashboardResources]
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

0 commit comments

Comments
 (0)