Skip to content

Commit 011e9c0

Browse files
TD-4047: Duplicate records appearing in Mylearning page. Brought back removed code to fix the issue and implemented same logic in newly created stored procedures.
1 parent 28ec872 commit 011e9c0

File tree

4 files changed

+79
-6
lines changed

4 files changed

+79
-6
lines changed

WebAPI/LearningHub.Nhs.Database/Stored Procedures/Activity/GetUserLatestActivityCheck.sql

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -144,7 +144,31 @@ FROM (
144144
WHERE ([ScormActivity].[Deleted] = 0 AND [ResourceActivity].[Id] = [ScormActivity].[ResourceActivityId])
145145
)
146146
IS NULL
147-
)
147+
)
148+
AND
149+
(
150+
(
151+
-- resource type is not video/audio and launch resource activity doesn't exists
152+
[Res].[ResourceTypeId] NOT IN (7,2) AND NOT (EXISTS
153+
(
154+
SELECT 1 FROM [activity].[ResourceActivity] AS [ResAct1]
155+
WHERE [ResAct1].[Deleted] = 0 AND [ResourceActivity].[Id] = [ResAct1].[LaunchResourceActivityId]
156+
))
157+
)
158+
OR
159+
-- or launch resource activity completed
160+
EXISTS
161+
(
162+
SELECT 1 FROM [activity].[ResourceActivity] AS [ResAct2]
163+
WHERE [ResAct2].[Deleted] = 0 AND [ResourceActivity].[Id] = [ResAct2].[LaunchResourceActivityId] AND [ResAct2].[ActivityStatusId] = 3
164+
)
165+
166+
)
167+
AND
168+
(
169+
-- resource type is not assessment and activity status is launched
170+
[Res].[ResourceTypeId] <> 11 OR [ResourceActivity].[ActivityStatusId] = 1
171+
)
148172

149173
) AS [t2]
150174
LEFT JOIN [resources].[VideoResourceVersion] AS [VideoResourceVersion] ON [t2].[Id1] = [VideoResourceVersion].[ResourceVersionId]

WebAPI/LearningHub.Nhs.Database/Stored Procedures/Activity/GetUserLearningActivities.sql

Lines changed: 24 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -213,7 +213,30 @@ FROM (
213213
)
214214
IS NULL
215215
)
216-
216+
AND
217+
(
218+
(
219+
-- resource type is not video/audio and launch resource activity doesn't exists
220+
[Res].[ResourceTypeId] NOT IN (7,2) AND NOT (EXISTS
221+
(
222+
SELECT 1 FROM [activity].[ResourceActivity] AS [ResAct1]
223+
WHERE [ResAct1].[Deleted] = 0 AND [ResourceActivity].[Id] = [ResAct1].[LaunchResourceActivityId]
224+
))
225+
)
226+
OR
227+
-- or launch resource activity completed
228+
EXISTS
229+
(
230+
SELECT 1 FROM [activity].[ResourceActivity] AS [ResAct2]
231+
WHERE [ResAct2].[Deleted] = 0 AND [ResourceActivity].[Id] = [ResAct2].[LaunchResourceActivityId] AND [ResAct2].[ActivityStatusId] = 3
232+
)
233+
234+
)
235+
AND
236+
(
237+
-- resource type is not assessment and activity status is launched
238+
[Res].[ResourceTypeId] <> 11 OR [ResourceActivity].[ActivityStatusId] = 1
239+
)
217240
AND
218241
(
219242
@filterActivityStatus = 0

WebAPI/LearningHub.Nhs.Database/Stored Procedures/Activity/GetUserLearningActivitiesCount.sql

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -128,7 +128,31 @@ FROM (
128128
WHERE ([ScormActivity].[Deleted] = 0 AND [ResourceActivity].[Id] = [ScormActivity].[ResourceActivityId])
129129
)
130130
IS NULL
131-
)
131+
)
132+
AND
133+
(
134+
(
135+
-- resource type is not video/audio and launch resource activity doesn't exists
136+
[Res].[ResourceTypeId] NOT IN (7,2) AND NOT (EXISTS
137+
(
138+
SELECT 1 FROM [activity].[ResourceActivity] AS [ResAct1]
139+
WHERE [ResAct1].[Deleted] = 0 AND [ResourceActivity].[Id] = [ResAct1].[LaunchResourceActivityId]
140+
))
141+
)
142+
OR
143+
-- or launch resource activity completed
144+
EXISTS
145+
(
146+
SELECT 1 FROM [activity].[ResourceActivity] AS [ResAct2]
147+
WHERE [ResAct2].[Deleted] = 0 AND [ResourceActivity].[Id] = [ResAct2].[LaunchResourceActivityId] AND [ResAct2].[ActivityStatusId] = 3
148+
)
149+
150+
)
151+
AND
152+
(
153+
-- resource type is not assessment and activity status is launched
154+
[Res].[ResourceTypeId] <> 11 OR [ResourceActivity].[ActivityStatusId] = 1
155+
)
132156
AND
133157
(
134158
@filterActivityStatus = 0

WebAPI/LearningHub.Nhs.Repository/Activity/ResourceActivityRepository.cs

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,7 @@ public IQueryable<ResourceActivity> GetByUserId(int userId)
9696
//
9797
// For assessment activities, only include the original activities that were created when starting the assessment. The created end record is only for consistency.
9898
// It's easier to get the real assessment resource activity from the original resource activity, so only fetch that one.
99+
// TD-4047: As part of this defect bringing back the removed code which then used for the new stored procedure created as part of performance improvement.
99100
return this.DbContext.ResourceActivity
100101
.Include(r => r.Resource)
101102
.ThenInclude(r => r.ResourceReference)
@@ -111,9 +112,10 @@ public IQueryable<ResourceActivity> GetByUserId(int userId)
111112
.Include(r => r.NodePath)
112113
.AsNoTracking()
113114
.Where(r =>
114-
r.UserId == userId && r.ScormActivity.First().CmiCoreLessonStatus != (int)ActivityStatusEnum.Completed &&
115-
((!r.InverseLaunchResourceActivity.Any()) ||
116-
r.InverseLaunchResourceActivity.Any()))
115+
r.UserId == userId && r.ScormActivity.First().CmiCoreLessonStatus != (int)ActivityStatusEnum.Completed &&
116+
((r.Resource.ResourceTypeEnum != ResourceTypeEnum.Video && r.Resource.ResourceTypeEnum != ResourceTypeEnum.Audio && !r.InverseLaunchResourceActivity.Any()) ||
117+
r.InverseLaunchResourceActivity.Any(y => y.ActivityStatusId == (int)ActivityStatusEnum.Completed)) &&
118+
(r.Resource.ResourceTypeEnum != ResourceTypeEnum.Assessment || r.ActivityStatusId == (int)ActivityStatusEnum.Launched))
117119
.OrderByDescending(r => r.ActivityStart);
118120
}
119121

0 commit comments

Comments
 (0)