Skip to content

Commit a65f934

Browse files
committed
Merge branch 'master' into Release-2024.28
2 parents 3c0dc1f + 15ddc25 commit a65f934

File tree

62 files changed

+483
-177
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

62 files changed

+483
-177
lines changed

DigitalLearningSolutions.Data/DataServices/CourseContentService.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -240,12 +240,12 @@ public void UpdateProgress(int progressId)
240240
var numberOfAffectedRows = connection.Execute(
241241
@"UPDATE Progress
242242
SET LoginCount = (SELECT COALESCE(COUNT(*), 0)
243-
FROM Sessions AS S
243+
FROM Sessions AS S WITH (NOLOCK)
244244
WHERE S.CandidateID = Progress.CandidateID
245245
AND S.CustomisationID = Progress.CustomisationID
246246
AND S.LoginTime >= Progress.FirstSubmittedTime),
247247
Duration = (SELECT COALESCE(SUM(S1.Duration), 0)
248-
FROM Sessions AS S1
248+
FROM Sessions AS S1 WITH (NOLOCK)
249249
WHERE S1.CandidateID = Progress.CandidateID
250250
AND S1.CustomisationID = Progress.CustomisationID
251251
AND S1.LoginTime >= Progress.FirstSubmittedTime),

DigitalLearningSolutions.Data/DataServices/CourseDataService.cs

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1097,13 +1097,13 @@ AND ap.DefaultContentTypeID <> 4
10971097
AND ((@hasCompleted IS NULL) OR (@hasCompleted = 1 AND pr.Completed IS NOT NULL) OR (@hasCompleted = 0 AND pr.Completed IS NULL))
10981098
10991099
AND ((@answer1 IS NULL) OR ((@answer1 = 'No option selected' OR @answer1 = 'FREETEXTBLANKVALUE') AND (pr.Answer1 IS NULL OR LTRIM(RTRIM(pr.Answer1)) = ''))
1100-
OR (@answer1 = 'FREETEXTNOTBLANKVALUE' AND (pr.Answer1 IS NOT NULL OR pr.Answer1 = @answer1)))
1100+
OR ((@answer1 = 'FREETEXTNOTBLANKVALUE' AND pr.Answer1 IS NOT NULL AND LTRIM(RTRIM(pr.Answer1)) != '') OR (pr.Answer1 IS NOT NULL AND pr.Answer1 = @answer1)))
11011101
11021102
AND ((@answer2 IS NULL) OR ((@answer2 = 'No option selected' OR @answer2 = 'FREETEXTBLANKVALUE') AND (pr.Answer2 IS NULL OR LTRIM(RTRIM(pr.Answer2)) = ''))
1103-
OR (@answer2 = 'FREETEXTNOTBLANKVALUE' AND (pr.Answer2 IS NOT NULL OR pr.Answer2 = @answer2)))
1103+
OR ((@answer2 = 'FREETEXTNOTBLANKVALUE' AND pr.Answer2 IS NOT NULL AND LTRIM(RTRIM(pr.Answer2)) != '') OR (pr.Answer2 IS NOT NULL AND pr.Answer2 = @answer2)))
11041104
11051105
AND ((@answer3 IS NULL) OR ((@answer3 = 'No option selected' OR @answer3 = 'FREETEXTBLANKVALUE') AND (pr.Answer3 IS NULL OR LTRIM(RTRIM(pr.Answer3)) = ''))
1106-
OR (@answer3 = 'FREETEXTNOTBLANKVALUE' AND (pr.Answer3 IS NOT NULL OR pr.Answer3 = @answer3)))
1106+
OR ((@answer3 = 'FREETEXTNOTBLANKVALUE' AND pr.Answer3 IS NOT NULL AND LTRIM(RTRIM(pr.Answer3)) != '') OR (pr.Answer3 IS NOT NULL AND pr.Answer3 = @answer3)))
11071107
11081108
AND COALESCE(ucd.Email, u.PrimaryEmail) LIKE '%_@_%.__%'";
11091109

@@ -1639,13 +1639,13 @@ AND ap.DefaultContentTypeID <> 4
16391639
AND ((@hasCompleted IS NULL) OR (@hasCompleted = 1 AND pr.Completed IS NOT NULL) OR (@hasCompleted = 0 AND pr.Completed IS NULL))
16401640
16411641
AND ((@answer1 IS NULL) OR ((@answer1 = 'No option selected' OR @answer1 = 'FREETEXTBLANKVALUE') AND (pr.Answer1 IS NULL OR LTRIM(RTRIM(pr.Answer1)) = ''))
1642-
OR (@answer1 = 'FREETEXTNOTBLANKVALUE' AND (pr.Answer1 IS NOT NULL OR pr.Answer1 = @answer1)))
1642+
OR ((@answer1 = 'FREETEXTNOTBLANKVALUE' AND pr.Answer1 IS NOT NULL AND LTRIM(RTRIM(pr.Answer1)) != '') OR (pr.Answer1 IS NOT NULL AND pr.Answer1 = @answer1)))
16431643
16441644
AND ((@answer2 IS NULL) OR ((@answer2 = 'No option selected' OR @answer2 = 'FREETEXTBLANKVALUE') AND (pr.Answer2 IS NULL OR LTRIM(RTRIM(pr.Answer2)) = ''))
1645-
OR (@answer2 = 'FREETEXTNOTBLANKVALUE' AND (pr.Answer2 IS NOT NULL OR pr.Answer2 = @answer2)))
1645+
OR ((@answer2 = 'FREETEXTNOTBLANKVALUE' AND pr.Answer2 IS NOT NULL AND LTRIM(RTRIM(pr.Answer2)) != '') OR (pr.Answer2 IS NOT NULL AND pr.Answer2 = @answer2)))
16461646
16471647
AND ((@answer3 IS NULL) OR ((@answer3 = 'No option selected' OR @answer3 = 'FREETEXTBLANKVALUE') AND (pr.Answer3 IS NULL OR LTRIM(RTRIM(pr.Answer3)) = ''))
1648-
OR (@answer3 = 'FREETEXTNOTBLANKVALUE' AND (pr.Answer3 IS NOT NULL OR pr.Answer3 = @answer3)))
1648+
OR ((@answer3 = 'FREETEXTNOTBLANKVALUE' AND pr.Answer3 IS NOT NULL AND LTRIM(RTRIM(pr.Answer3)) != '') OR (pr.Answer3 IS NOT NULL AND pr.Answer3 = @answer3)))
16491649
16501650
AND COALESCE(ucd.Email, u.PrimaryEmail) LIKE '%_@_%.__%'";
16511651

@@ -1740,13 +1740,13 @@ AND ap.DefaultContentTypeID <> 4
17401740
AND ((@hasCompleted IS NULL) OR (@hasCompleted = 1 AND pr.Completed IS NOT NULL) OR (@hasCompleted = 0 AND pr.Completed IS NULL))
17411741
17421742
AND ((@answer1 IS NULL) OR ((@answer1 = 'No option selected' OR @answer1 = 'FREETEXTBLANKVALUE') AND (pr.Answer1 IS NULL OR LTRIM(RTRIM(pr.Answer1)) = ''))
1743-
OR (@answer1 = 'FREETEXTNOTBLANKVALUE' AND (pr.Answer1 IS NOT NULL OR pr.Answer1 = @answer1)))
1743+
OR ((@answer1 = 'FREETEXTNOTBLANKVALUE' AND pr.Answer1 IS NOT NULL AND LTRIM(RTRIM(pr.Answer1)) != '') OR (pr.Answer1 IS NOT NULL AND pr.Answer1 = @answer1)))
17441744
17451745
AND ((@answer2 IS NULL) OR ((@answer2 = 'No option selected' OR @answer2 = 'FREETEXTBLANKVALUE') AND (pr.Answer2 IS NULL OR LTRIM(RTRIM(pr.Answer2)) = ''))
1746-
OR (@answer2 = 'FREETEXTNOTBLANKVALUE' AND (pr.Answer2 IS NOT NULL OR pr.Answer2 = @answer2)))
1746+
OR ((@answer2 = 'FREETEXTNOTBLANKVALUE' AND pr.Answer2 IS NOT NULL AND LTRIM(RTRIM(pr.Answer2)) != '') OR (pr.Answer2 IS NOT NULL AND pr.Answer2 = @answer2)))
17471747
17481748
AND ((@answer3 IS NULL) OR ((@answer3 = 'No option selected' OR @answer3 = 'FREETEXTBLANKVALUE') AND (pr.Answer3 IS NULL OR LTRIM(RTRIM(pr.Answer3)) = ''))
1749-
OR (@answer3 = 'FREETEXTNOTBLANKVALUE' AND (pr.Answer3 IS NOT NULL OR pr.Answer3 = @answer3)))
1749+
OR ((@answer3 = 'FREETEXTNOTBLANKVALUE' AND pr.Answer3 IS NOT NULL AND LTRIM(RTRIM(pr.Answer3)) != '') OR (pr.Answer3 IS NOT NULL AND pr.Answer3 = @answer3)))
17501750
17511751
AND COALESCE(ucd.Email, u.PrimaryEmail) LIKE '%_@_%.__%'";
17521752

DigitalLearningSolutions.Data/DataServices/SelfAssessmentDataService/DCSAReportDataService.cs

Lines changed: 108 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@ public interface IDCSAReportDataService
1010
{
1111
IEnumerable<DCSADelegateCompletionStatus> GetDelegateCompletionStatus();
1212
IEnumerable<DCSAOutcomeSummary> GetOutcomeSummary();
13+
IEnumerable<DCSADelegateCompletionStatus> GetDelegateCompletionStatusForCentre(int centreId);
14+
IEnumerable<DCSAOutcomeSummary> GetOutcomeSummaryForCentre(int centreId);
1315
}
1416
public partial class DCSAReportDataService : IDCSAReportDataService
1517
{
@@ -122,5 +124,111 @@ FROM Candidates AS ca INNER JOIN
122124
WHERE (ca.Active = 1) AND (caa.SelfAssessmentID = 1) AND caa.NonReportable = 0
123125
ORDER BY EnrolledYear DESC, EnrolledMonth DESC, ca.LastName, ca.FirstName");
124126
}
127+
public IEnumerable<DCSADelegateCompletionStatus> GetDelegateCompletionStatusForCentre(int centreId)
128+
{
129+
return connection.Query<DCSADelegateCompletionStatus>(
130+
@"SELECT DATEPART(month, caa.StartedDate) AS EnrolledMonth, DATEPART(yyyy, caa.StartedDate) AS EnrolledYear, ca.FirstName, ca.LastName, ca.EmailAddress AS Email, ca.Answer1 AS CentreField1, ca.Answer2 AS CentreField2, ca.Answer3 AS CentreField3, CASE WHEN (caa.SubmittedDate IS NOT NULL)
131+
THEN 'Submitted' WHEN (caa.UserBookmark LIKE N'/LearningPortal/SelfAssessment/1/Review' AND caa.SubmittedDate IS NULL) THEN 'Reviewing' ELSE 'Incomplete' END AS Status
132+
FROM Candidates AS ca INNER JOIN
133+
CandidateAssessments AS caa ON ca.UserID = caa.DelegateUserID AND ca.CentreID = caa.CentreID INNER JOIN
134+
JobGroups AS jg ON ca.JobGroupID = jg.JobGroupID
135+
WHERE (ca.Active = 1) AND (ca.CentreID = @centreId) AND (caa.SelfAssessmentID = 1) AND caa.NonReportable = 0
136+
ORDER BY EnrolledYear DESC, EnrolledMonth DESC, ca.LastName, ca.FirstName",
137+
new { centreId }
138+
);
139+
}
140+
141+
public IEnumerable<DCSAOutcomeSummary> GetOutcomeSummaryForCentre(int centreId)
142+
{
143+
return connection.Query<DCSAOutcomeSummary>(
144+
@"SELECT DATEPART(month, caa.StartedDate) AS EnrolledMonth, DATEPART(yyyy, caa.StartedDate) AS EnrolledYear, jg.JobGroupName AS JobGroup, ca.Answer1 AS CentreField1, ca.Answer2 AS CentreField2, ca.Answer3 AS CentreField3, CASE WHEN (caa.SubmittedDate IS NOT NULL)
145+
THEN 'Submitted' WHEN (caa.UserBookmark LIKE N'/LearningPortal/SelfAssessment/1/Review' AND caa.SubmittedDate IS NULL) THEN 'Reviewing' ELSE 'Incomplete' END AS Status,
146+
(SELECT COUNT(*) AS Expr1
147+
FROM FilteredLearningActivity AS fla
148+
WHERE (CandidateId = ca.CandidateID)) AS LearningLaunched,
149+
(SELECT COUNT(*) AS Expr1
150+
FROM FilteredLearningActivity AS fla
151+
WHERE (CandidateId = ca.CandidateID) AND (CompletedDate IS NOT NULL)) AS LearningCompleted,
152+
(SELECT AVG(sar.Result) AS AvgConfidence
153+
FROM SelfAssessmentResults AS sar INNER JOIN
154+
Competencies AS co ON sar.CompetencyID = co.ID INNER JOIN
155+
SelfAssessmentStructure AS sas ON co.ID = sas.CompetencyID INNER JOIN
156+
DelegateAccounts as da ON sar.DelegateUserID = da.UserID AND ca.CandidateID = da.ID
157+
WHERE (sar.AssessmentQuestionID = 1) AND (sas.CompetencyGroupID = 1)) AS DataInformationAndContentConfidence,
158+
(SELECT AVG(sar.Result) AS AvgConfidence
159+
FROM SelfAssessmentResults AS sar INNER JOIN
160+
Competencies AS co ON sar.CompetencyID = co.ID INNER JOIN
161+
SelfAssessmentStructure AS sas ON co.ID = sas.CompetencyID INNER JOIN
162+
DelegateAccounts as da ON sar.DelegateUserID = da.UserID AND ca.CandidateID = da.ID
163+
WHERE (sar.AssessmentQuestionID = 2) AND (sas.CompetencyGroupID = 1)) AS DataInformationAndContentRelevance,
164+
(SELECT AVG(sar.Result) AS AvgConfidence
165+
FROM SelfAssessmentResults AS sar INNER JOIN
166+
Competencies AS co ON sar.CompetencyID = co.ID INNER JOIN
167+
SelfAssessmentStructure AS sas ON co.ID = sas.CompetencyID INNER JOIN
168+
DelegateAccounts as da ON sar.DelegateUserID = da.UserID AND ca.CandidateID = da.ID
169+
WHERE (sar.AssessmentQuestionID = 1) AND (sas.CompetencyGroupID = 2)) AS TeachingLearningAndSelfDevelopmentConfidence,
170+
(SELECT AVG(sar.Result) AS AvgConfidence
171+
FROM SelfAssessmentResults AS sar INNER JOIN
172+
Competencies AS co ON sar.CompetencyID = co.ID INNER JOIN
173+
SelfAssessmentStructure AS sas ON co.ID = sas.CompetencyID INNER JOIN
174+
DelegateAccounts as da ON sar.DelegateUserID = da.UserID AND ca.CandidateID = da.ID
175+
WHERE (sar.AssessmentQuestionID = 2) AND (sas.CompetencyGroupID = 2)) AS TeachingLearningAndSelfDevelopmentRelevance,
176+
(SELECT AVG(sar.Result) AS AvgConfidence
177+
FROM SelfAssessmentResults AS sar INNER JOIN
178+
Competencies AS co ON sar.CompetencyID = co.ID INNER JOIN
179+
SelfAssessmentStructure AS sas ON co.ID = sas.CompetencyID INNER JOIN
180+
DelegateAccounts as da ON sar.DelegateUserID = da.UserID AND ca.CandidateID = da.ID
181+
WHERE (sar.AssessmentQuestionID = 1) AND (sas.CompetencyGroupID = 3)) AS CommunicationCollaborationAndParticipationConfidence,
182+
(SELECT AVG(sar.Result) AS AvgConfidence
183+
FROM SelfAssessmentResults AS sar INNER JOIN
184+
Competencies AS co ON sar.CompetencyID = co.ID INNER JOIN
185+
SelfAssessmentStructure AS sas ON co.ID = sas.CompetencyID INNER JOIN
186+
DelegateAccounts as da ON sar.DelegateUserID = da.UserID AND ca.CandidateID = da.ID
187+
WHERE (sar.AssessmentQuestionID = 2) AND (sas.CompetencyGroupID = 3)) AS CommunicationCollaborationAndParticipationRelevance,
188+
(SELECT AVG(sar.Result) AS AvgConfidence
189+
FROM SelfAssessmentResults AS sar INNER JOIN
190+
Competencies AS co ON sar.CompetencyID = co.ID INNER JOIN
191+
SelfAssessmentStructure AS sas ON co.ID = sas.CompetencyID INNER JOIN
192+
DelegateAccounts as da ON sar.DelegateUserID = da.UserID AND ca.CandidateID = da.ID
193+
WHERE (sar.AssessmentQuestionID = 1) AND (sas.CompetencyGroupID = 4)) AS TechnicalProficiencyConfidence,
194+
(SELECT AVG(sar.Result) AS AvgConfidence
195+
FROM SelfAssessmentResults AS sar INNER JOIN
196+
Competencies AS co ON sar.CompetencyID = co.ID INNER JOIN
197+
SelfAssessmentStructure AS sas ON co.ID = sas.CompetencyID INNER JOIN
198+
DelegateAccounts as da ON sar.DelegateUserID = da.UserID AND ca.CandidateID = da.ID
199+
WHERE (sar.AssessmentQuestionID = 2) AND (sas.CompetencyGroupID = 4)) AS TechnicalProficiencyRelevance,
200+
(SELECT AVG(sar.Result) AS AvgConfidence
201+
FROM SelfAssessmentResults AS sar INNER JOIN
202+
Competencies AS co ON sar.CompetencyID = co.ID INNER JOIN
203+
SelfAssessmentStructure AS sas ON co.ID = sas.CompetencyID INNER JOIN
204+
DelegateAccounts as da ON sar.DelegateUserID = da.UserID AND ca.CandidateID = da.ID
205+
WHERE (sar.AssessmentQuestionID = 1) AND (sas.CompetencyGroupID = 5)) AS CreationInnovationAndResearchConfidence,
206+
(SELECT AVG(sar.Result) AS AvgConfidence
207+
FROM SelfAssessmentResults AS sar INNER JOIN
208+
Competencies AS co ON sar.CompetencyID = co.ID INNER JOIN
209+
SelfAssessmentStructure AS sas ON co.ID = sas.CompetencyID INNER JOIN
210+
DelegateAccounts as da ON sar.DelegateUserID = da.UserID AND ca.CandidateID = da.ID
211+
WHERE (sar.AssessmentQuestionID = 2) AND (sas.CompetencyGroupID = 5)) AS CreationInnovationAndResearchRelevance,
212+
(SELECT AVG(sar.Result) AS AvgConfidence
213+
FROM SelfAssessmentResults AS sar INNER JOIN
214+
Competencies AS co ON sar.CompetencyID = co.ID INNER JOIN
215+
SelfAssessmentStructure AS sas ON co.ID = sas.CompetencyID INNER JOIN
216+
DelegateAccounts as da ON sar.DelegateUserID = da.UserID AND ca.CandidateID = da.ID
217+
WHERE (sar.AssessmentQuestionID = 1) AND (sas.CompetencyGroupID = 6)) AS DigitalIdentityWellbeingSafetyAndSecurityConfidence,
218+
(SELECT AVG(sar.Result) AS AvgConfidence
219+
FROM SelfAssessmentResults AS sar INNER JOIN
220+
Competencies AS co ON sar.CompetencyID = co.ID INNER JOIN
221+
SelfAssessmentStructure AS sas ON co.ID = sas.CompetencyID INNER JOIN
222+
DelegateAccounts as da ON sar.DelegateUserID = da.UserID AND ca.CandidateID = da.ID
223+
WHERE (sar.AssessmentQuestionID = 2) AND (sas.CompetencyGroupID = 6)) AS DigitalIdentityWellbeingSafetyAndSecurityRelevance
224+
FROM Candidates AS ca INNER JOIN
225+
CandidateAssessments AS caa ON ca.UserID = caa.DelegateUserID AND ca.CentreID = caa.CentreID INNER JOIN Users AS u ON caa.DelegateUserID = u.ID INNER JOIN
226+
JobGroups AS jg ON u.JobGroupID = jg.JobGroupID
227+
WHERE (ca.Active = 1) AND (ca.CentreID = @centreId) AND (caa.SelfAssessmentID = 1)
228+
ORDER BY EnrolledYear DESC, EnrolledMonth DESC, JobGroup, CentreField1, CentreField2, CentreField3, Status",
229+
new { centreId }
230+
);
231+
}
232+
125233
}
126234
}

DigitalLearningSolutions.Data/DataServices/SessionDataService.cs

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ public interface ISessionDataService
1111

1212
void StopDelegateSession(int candidateId);
1313

14-
void UpdateDelegateSessionDuration(int sessionId, DateTime currentUtcTime);
14+
int UpdateDelegateSessionDuration(int sessionId, DateTime currentUtcTime);
1515

1616
int StartAdminSession(int adminId);
1717

@@ -55,9 +55,9 @@ public void StopDelegateSession(int candidateId)
5555
connection.Query(StopSessionsSql, new { candidateId });
5656
}
5757

58-
public void UpdateDelegateSessionDuration(int sessionId, DateTime currentUtcTime)
58+
public int UpdateDelegateSessionDuration(int sessionId, DateTime currentUtcTime)
5959
{
60-
connection.Query(
60+
return connection.Execute(
6161
@"UPDATE Sessions SET Duration = DATEDIFF(minute, LoginTime, @currentUtcTime)
6262
WHERE [SessionID] = @sessionId AND Active = 1;",
6363
new { sessionId, currentUtcTime }
@@ -85,19 +85,19 @@ public bool HasAdminGotSessions(int adminId)
8585
public bool HasAdminGotReferences(int adminId)
8686
{
8787
return connection.ExecuteScalar<bool>(
88-
@"SELECT TOP 1 AdminSessions.AdminID FROM AdminSessions WHERE AdminSessions.AdminID = @adminId
88+
@"SELECT TOP 1 AdminSessions.AdminID FROM AdminSessions WITH (NOLOCK) WHERE AdminSessions.AdminID = @adminId
8989
UNION ALL
90-
SELECT TOP 1 FrameworkCollaborators.AdminID FROM FrameworkCollaborators WHERE FrameworkCollaborators.AdminID = @adminId
90+
SELECT TOP 1 FrameworkCollaborators.AdminID FROM FrameworkCollaborators WITH (NOLOCK) WHERE FrameworkCollaborators.AdminID = @adminId
9191
UNION ALL
92-
SELECT TOP 1 SupervisorDelegates.SupervisorAdminID FROM SupervisorDelegates WHERE SupervisorDelegates.SupervisorAdminID = @adminId",
92+
SELECT TOP 1 SupervisorDelegates.SupervisorAdminID FROM SupervisorDelegates WITH (NOLOCK) WHERE SupervisorDelegates.SupervisorAdminID = @adminId",
9393
new { adminId }
9494
);
9595
}
9696

9797
public bool HasDelegateGotSessions(int delegateId)
9898
{
9999
return connection.ExecuteScalar<bool>(
100-
"SELECT 1 WHERE EXISTS (SELECT CandidateID FROM Sessions WHERE CandidateID = @delegateId)",
100+
"SELECT 1 WHERE EXISTS (SELECT CandidateID FROM Sessions WITH (NOLOCK) WHERE CandidateID = @delegateId)",
101101
new { delegateId }
102102
);
103103
}
@@ -111,7 +111,7 @@ public bool HasDelegateGotSessions(int delegateId)
111111
LoginTime,
112112
Duration,
113113
Active
114-
FROM Sessions WHERE SessionID = @sessionId",
114+
FROM Sessions WITH (NOLOCK) WHERE SessionID = @sessionId",
115115
new { sessionId }
116116
);
117117
}

DigitalLearningSolutions.Data/DataServices/SupervisorService.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1139,7 +1139,7 @@ LEFT JOIN UserCentreDetails ucd
11391139
@"
11401140
SELECT ID
11411141
FROM SupervisorDelegates sd
1142-
WHERE (sd.SupervisorAdminID = @supervisorAdminID OR @supervisorAdminID = 0) AND (sd.DelegateUserID = @delegateUserId OR @delegateUserID = 0 OR DelegateEmail = @delegateEmail)
1142+
WHERE (sd.SupervisorAdminID = @supervisorAdminID OR @supervisorAdminID = 0) AND (sd.DelegateUserID = @delegateUserId OR @delegateUserID = 0) AND DelegateEmail = @delegateEmail
11431143
ORDER BY ID DESC
11441144
",
11451145
new

0 commit comments

Comments
 (0)