Skip to content

Commit 4484d20

Browse files
committed
Get Certificate details SP
1 parent e2b9d7b commit 4484d20

File tree

1 file changed

+129
-0
lines changed

1 file changed

+129
-0
lines changed
Lines changed: 129 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,129 @@
1+
-------------------------------------------------------------------------------
2+
-- Author Tobi
3+
-- Created 22-08-2025
4+
-- Purpose Gets the certificate details for all completed resources.
5+
--
6+
-- Modification History
7+
--
8+
-- 22-08-2025 Tobi Initial Revision
9+
-------------------------------------------------------------------------------
10+
CREATE PROCEDURE [resources].[GetUsercertificateDetails]
11+
@UserId INT,
12+
@FilterText NVARCHAR(200) = N''
13+
AS
14+
BEGIN
15+
SET NOCOUNT ON;
16+
17+
-- Temp table for better stats and indexing
18+
IF OBJECT_ID('tempdb..#MyActivity') IS NOT NULL
19+
DROP TABLE #MyActivity;
20+
21+
CREATE TABLE #MyActivity (
22+
ResourceId INT NOT NULL,
23+
ResourceActivityId INT NOT NULL,
24+
PRIMARY KEY CLUSTERED (ResourceActivityId)
25+
);
26+
27+
INSERT INTO #MyActivity (ResourceId, ResourceActivityId)
28+
SELECT
29+
ra.ResourceId,
30+
MAX(ra.Id) AS ResourceActivityId
31+
FROM activity.ResourceActivity ra
32+
JOIN resources.Resource r
33+
ON ra.ResourceId = r.Id
34+
JOIN resources.ResourceVersion rv
35+
ON rv.Id = ra.ResourceVersionId
36+
WHERE ra.UserId = @UserId
37+
AND rv.CertificateEnabled = 1
38+
AND (
39+
(r.ResourceTypeId IN (2, 7) AND ra.ActivityStatusId = 3)
40+
OR (ra.ActivityStart < '2020-09-07T00:00:00+00:00')
41+
OR EXISTS (
42+
SELECT 1
43+
FROM activity.MediaResourceActivity mar
44+
WHERE mar.ResourceActivityId = ra.Id
45+
AND mar.PercentComplete = 100
46+
)
47+
OR (r.ResourceTypeId = 6 AND (
48+
EXISTS (
49+
SELECT 1
50+
FROM activity.ScormActivity sa
51+
WHERE sa.ResourceActivityId = ra.Id
52+
AND sa.CmiCoreLesson_status IN (3,5)
53+
)
54+
OR ra.ActivityStatusId IN (3,5)
55+
))
56+
OR (r.ResourceTypeId = 11 AND (
57+
EXISTS (
58+
SELECT 1
59+
FROM activity.AssessmentResourceActivity ara
60+
JOIN resources.AssessmentResourceVersion arv
61+
ON arv.ResourceVersionId = ra.ResourceVersionId
62+
WHERE ara.ResourceActivityId = ra.Id
63+
AND ara.Score >= arv.PassMark
64+
)
65+
OR ra.ActivityStatusId IN (3,5)
66+
))
67+
OR (r.ResourceTypeId IN (1, 5, 8, 9, 10, 12)
68+
AND ra.ActivityStatusId = 3)
69+
)
70+
GROUP BY ra.ResourceId;
71+
72+
-- Full result set without paging
73+
SELECT
74+
rv.Id,
75+
rv.Title,
76+
r.ResourceTypeId,
77+
(
78+
SELECT TOP (1) rr.OriginalResourceReferenceId
79+
FROM resources.ResourceReference rr
80+
JOIN hierarchy.NodePath np
81+
ON np.Id = rr.NodePathId
82+
AND np.NodeId = n.Id
83+
AND np.Deleted = 0
84+
WHERE rr.ResourceId = rv.ResourceId
85+
AND rr.Deleted = 0
86+
) AS ResourceReferenceID,
87+
rv.MajorVersion,
88+
rv.MinorVersion,
89+
ra.ActivityStart AS AwardedDate,
90+
NULL AS CertificateDownloadUrl,
91+
NULL AS CertificatePreviewUrl
92+
FROM #MyActivity ma
93+
JOIN activity.ResourceActivity ra
94+
ON ra.Id = ma.ResourceActivityId
95+
JOIN resources.ResourceVersion rv
96+
ON rv.Id = ra.ResourceVersionId
97+
AND rv.Deleted = 0
98+
JOIN resources.Resource r
99+
ON r.Id = rv.ResourceId
100+
JOIN hierarchy.Publication p
101+
ON rv.PublicationId = p.Id
102+
AND p.Deleted = 0
103+
JOIN hierarchy.NodeResource nr
104+
ON r.Id = nr.ResourceId
105+
AND nr.Deleted = 0
106+
JOIN hierarchy.Node n
107+
ON n.Id = nr.NodeId
108+
AND n.Hidden = 0
109+
AND n.Deleted = 0
110+
JOIN hierarchy.NodePath np
111+
ON np.NodeId = n.Id
112+
AND np.Deleted = 0
113+
AND np.IsActive = 1
114+
JOIN hierarchy.NodeVersion nv
115+
ON nv.NodeId = np.CatalogueNodeId
116+
AND nv.VersionStatusId = 2
117+
AND nv.Deleted = 0
118+
JOIN hierarchy.CatalogueNodeVersion cnv
119+
ON cnv.NodeVersionId = nv.Id
120+
AND cnv.Deleted = 0
121+
WHERE (
122+
@FilterText = N''
123+
OR rv.Title LIKE @FilterText + N'%'
124+
)
125+
ORDER BY ma.ResourceActivityId DESC, rv.Title
126+
OPTION (RECOMPILE);
127+
END;
128+
GO
129+

0 commit comments

Comments
 (0)