Skip to content

Commit 3dd2e02

Browse files
authored
Merge pull request #2728 from TechnologyEnhancedLearning/Develop/Fixes/TD-4269-Issuewiththe'Enrolmentmethod'and'Lastaccessdate'whenadminenrolledtheselfassessmentonTrackingsystemhotfix
TD-4269 Issue with the 'Enrolment method' and 'Last access date' when admin enrolled the self assessment on Tracking system
2 parents d16c1ba + a44f73d commit 3dd2e02

File tree

6 files changed

+41
-26
lines changed

6 files changed

+41
-26
lines changed

DigitalLearningSolutions.Data/DataServices/CourseDataService.cs

Lines changed: 21 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -122,7 +122,7 @@ IEnumerable<CourseDelegateForExport> GetCourseDelegatesForExport(string searchSt
122122
int customisationId, int centreId, bool? isDelegateActive, bool? isProgressLocked, bool? removed, bool? hasCompleted, string? answer1, string? answer2, string? answer3);
123123

124124
int EnrolOnActivitySelfAssessment(int selfAssessmentId, int candidateId, int supervisorId, string adminEmail,
125-
int selfAssessmentSupervisorRoleId, DateTime? completeByDate, int delegateUserId, int centreId);
125+
int selfAssessmentSupervisorRoleId, DateTime? completeByDate, int delegateUserId, int centreId, int? enrolledByAdminId);
126126

127127
bool IsCourseCompleted(int candidateId, int customisationId);
128128

@@ -430,23 +430,24 @@ public void RemoveCurrentCourse(int progressId, int candidateId, RemovalMethod r
430430
}
431431

432432
public int EnrolOnActivitySelfAssessment(int selfAssessmentId, int candidateId, int supervisorId, string adminEmail,
433-
int selfAssessmentSupervisorRoleId, DateTime? completeByDate, int delegateUserId, int centreId)
433+
int selfAssessmentSupervisorRoleId, DateTime? completeByDate, int delegateUserId, int centreId, int? enrolledByAdminId)
434434
{
435435
IClockUtility clockUtility = new ClockUtility();
436436
DateTime startedDate = clockUtility.UtcNow;
437-
DateTime lastAccessed = startedDate;
437+
DateTime? lastAccessed = null;
438438
dynamic? completeByDateDynamic = null;
439+
int enrolmentMethodId = 2;
439440
if (completeByDate == null || completeByDate.GetValueOrDefault().Year > 1753)
440441
{
441442
completeByDateDynamic = completeByDate!;
442443
}
443-
var candidateAssessmentId = (int)connection.ExecuteScalar(
444+
var candidateAssessmentId = Convert.ToInt32(connection.ExecuteScalar(
444445
@"SELECT COALESCE
445446
((SELECT ID
446447
FROM CandidateAssessments
447448
WHERE (SelfAssessmentID = @selfAssessmentId) AND (DelegateUserID = @delegateUserId) AND (CompletedDate IS NULL)), 0) AS ID",
448449
new { selfAssessmentId, delegateUserId }
449-
);
450+
));
450451

451452
if (candidateAssessmentId == 0)
452453
{
@@ -457,24 +458,28 @@ FROM CandidateAssessments
457458
,[StartedDate]
458459
,[LastAccessed]
459460
,[CompleteByDate]
460-
,[CentreID])
461+
,[CentreID]
462+
,[EnrolmentMethodId]
463+
,[EnrolledByAdminId])
461464
OUTPUT INSERTED.Id
462465
VALUES
463466
(@DelegateUserID,
464467
@selfAssessmentId,
465468
@startedDate,
466469
@lastAccessed,
467470
@completeByDateDynamic,
468-
@centreId);",
469-
new { delegateUserId, selfAssessmentId, startedDate, lastAccessed, completeByDateDynamic, centreId }
471+
@centreId,
472+
@enrolmentMethodId,
473+
@enrolledByAdminId);",
474+
new { delegateUserId, selfAssessmentId, startedDate, lastAccessed, completeByDateDynamic, centreId, enrolmentMethodId, enrolledByAdminId }
470475
);
471476
}
472477

473-
int supervisorDelegateId = (int)connection.ExecuteScalar(
478+
int supervisorDelegateId = Convert.ToInt32(connection.ExecuteScalar(
474479
@"SELECT COALESCE
475480
((SELECT TOP 1 ID FROM SupervisorDelegates WHERE SupervisorAdminID = @supervisorId AND DelegateUserId = @delegateUserId), 0) AS ID",
476481
new { supervisorId, delegateUserId }
477-
);
482+
));
478483
if (supervisorDelegateId == 0 && supervisorId > 0)
479484
{
480485
supervisorDelegateId = connection.QuerySingle<int>(@"INSERT INTO SupervisorDelegates
@@ -501,11 +506,11 @@ LEFT OUTER JOIN UserCentreDetails AS UCD ON
501506

502507
if (candidateAssessmentId > 0 && supervisorDelegateId > 0 && selfAssessmentSupervisorRoleId > 0)
503508
{
504-
int candidateAssessmentSupervisorsId = (int)connection.ExecuteScalar(
509+
int candidateAssessmentSupervisorsId = Convert.ToInt32(connection.ExecuteScalar(
505510
@"SELECT COALESCE
506511
((SELECT TOP 1 ID FROM CandidateAssessmentSupervisors WHERE CandidateAssessmentID = @candidateAssessmentID AND SupervisorDelegateId = @supervisorDelegateId), 0) AS ID",
507512
new { candidateAssessmentId, supervisorDelegateId }
508-
);
513+
));
509514

510515
if (candidateAssessmentSupervisorsId == 0)
511516
{
@@ -547,13 +552,13 @@ BEGIN TRANSACTION
547552

548553
public void EnrolOnSelfAssessment(int selfAssessmentId, int delegateUserId, int centreId)
549554
{
550-
var enrolmentExists = (int)connection.ExecuteScalar(
555+
var enrolmentExists = Convert.ToInt32(connection.ExecuteScalar(
551556
@"SELECT COALESCE
552557
((SELECT ID
553558
FROM CandidateAssessments
554559
WHERE (SelfAssessmentID = @selfAssessmentId) AND (DelegateUserID = @delegateUserId) AND (CompletedDate IS NULL)), 0) AS ID",
555560
new { selfAssessmentId, delegateUserId }
556-
);
561+
));
557562

558563
if (enrolmentExists > 0)
559564
{
@@ -638,7 +643,7 @@ OUTPUT Inserted.ID
638643

639644
public int GetNumberOfActiveCoursesAtCentreFilteredByCategory(int centreId, int? adminCategoryId)
640645
{
641-
return (int)connection.ExecuteScalar(
646+
return Convert.ToInt32(connection.ExecuteScalar(
642647
@"SELECT COUNT(*)
643648
FROM dbo.Customisations AS cu
644649
INNER JOIN dbo.CentreApplications AS ca ON ca.ApplicationID = cu.ApplicationID
@@ -649,7 +654,7 @@ FROM dbo.Customisations AS cu
649654
AND ca.CentreID = @centreId
650655
AND ap.DefaultContentTypeID <> 4",
651656
new { centreId, adminCategoryId }
652-
);
657+
));
653658
}
654659

655660
public IEnumerable<CourseStatistics> GetCourseStatisticsAtCentreFilteredByCategory(

DigitalLearningSolutions.Data/DataServices/SelfAssessmentDataService/CandidateAssessmentsDataService.cs

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,9 @@ public IEnumerable<CurrentSelfAssessment> GetSelfAssessmentsForCandidate(int del
3232
SelfAssessment. CentreName,
3333
SelfAssessment.EnrolmentMethodId,
3434
Signoff.SignedOff,
35-
Signoff.Verified FROM (SELECT
35+
Signoff.Verified,
36+
EnrolledByForename +' '+EnrolledBySurname AS EnrolledByFullName
37+
FROM (SELECT
3638
CA.SelfAssessmentID AS Id,
3739
SA.Name,
3840
SA.Description,
@@ -52,22 +54,27 @@ Signoff.Verified FROM (SELECT
5254
1 AS IsSelfAssessment,
5355
CA.SubmittedDate,
5456
CR.CentreName AS CentreName,
55-
CA.EnrolmentMethodId
56-
FROM Centres AS CR INNER JOIN
57+
CA.EnrolmentMethodId,
58+
uEnrolledBy.FirstName AS EnrolledByForename,
59+
uEnrolledBy.LastName AS EnrolledBySurname
60+
FROM Centres AS CR INNER JOIN
5761
CandidateAssessments AS CA INNER JOIN
5862
SelfAssessments AS SA ON CA.SelfAssessmentID = SA.ID ON CR.CentreID = CA.CentreID INNER JOIN
5963
CentreSelfAssessments AS csa ON csa.SelfAssessmentID = SA.ID AND csa.CentreID = @centreId LEFT OUTER JOIN
6064
Competencies AS C RIGHT OUTER JOIN
6165
SelfAssessmentStructure AS SAS ON C.ID = SAS.CompetencyID ON CA.SelfAssessmentID = SAS.SelfAssessmentID LEFT OUTER JOIN
6266
CandidateAssessmentSupervisors AS cas ON ca.ID =cas.CandidateAssessmentID LEFT OUTER JOIN
63-
CandidateAssessmentSupervisorVerifications AS casv ON casv.CandidateAssessmentSupervisorID = cas.ID
67+
CandidateAssessmentSupervisorVerifications AS casv ON casv.CandidateAssessmentSupervisorID = cas.ID LEFT OUTER JOIN
68+
AdminAccounts AS aaEnrolledBy ON aaEnrolledBy.ID = CA.EnrolledByAdminID LEFT OUTER JOIN
69+
Users AS uEnrolledBy ON uEnrolledBy.ID = aaEnrolledBy.UserID
6470
WHERE (CA.DelegateUserID = @delegateUserId) AND (CA.RemovedDate IS NULL) AND (CA.CompletedDate IS NULL)
6571
GROUP BY
6672
CA.SelfAssessmentID, SA.Name, SA.Description, SA.IncludesSignposting, SA.SupervisorResultsReview,
6773
SA.ReviewerCommentsLabel, SA.IncludeRequirementsFilters,
6874
COALESCE(SA.Vocabulary, 'Capability'), CA.StartedDate, CA.LastAccessed, CA.CompleteByDate,
6975
CA.ID,
70-
CA.UserBookmark, CA.UnprocessedUpdates, CA.LaunchCount, CA.SubmittedDate, CR.CentreName,CA.EnrolmentMethodId)SelfAssessment LEFT OUTER JOIN
76+
CA.UserBookmark, CA.UnprocessedUpdates, CA.LaunchCount, CA.SubmittedDate, CR.CentreName,CA.EnrolmentMethodId,
77+
uEnrolledBy.FirstName,uEnrolledBy.LastName)SelfAssessment LEFT OUTER JOIN
7178
(SELECT SelfAssessmentID,casv.SignedOff,MAX(casv.Verified) Verified FROM
7279
CandidateAssessments AS CA LEFT OUTER JOIN
7380
CandidateAssessmentSupervisors AS cas ON ca.ID =cas.CandidateAssessmentID LEFT OUTER JOIN

DigitalLearningSolutions.Data/Models/SelfAssessments/CurrentSelfAssessment.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,5 +23,6 @@ public class CurrentSelfAssessment : SelfAssessment
2323
public bool IsSameCentre { get; set; }
2424
public int? DelegateUserId { get; set; }
2525
public string? DelegateName { get; set; }
26+
public string? EnrolledByFullName { get; set; }
2627
}
2728
}

DigitalLearningSolutions.Web/Controllers/TrackingSystem/Delegates/EnrolController.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -326,7 +326,8 @@ public IActionResult EnrolDelegateSummary()
326326
sessionEnrol.SelfAssessmentSupervisorRoleId.GetValueOrDefault(),
327327
sessionEnrol.CompleteByDate,
328328
(int)sessionEnrol.DelegateUserID,
329-
centreId
329+
centreId,
330+
GetAdminID()
330331
);
331332

332333
}

DigitalLearningSolutions.Web/Services/EnrolService.cs

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,8 @@ int EnrolOnActivitySelfAssessment(
4242
int selfAssessmentSupervisorRoleId,
4343
DateTime? completeByDate,
4444
int delegateUserId,
45-
int centreId
45+
int centreId,
46+
int? enrolledByAdminId
4647
);
4748
}
4849
public class EnrolService : IEnrolService
@@ -185,9 +186,9 @@ by the system because a previous course completion has expired.</p>
185186
return new Email(EnrolEmailSubject, body, emailAddress);
186187
}
187188

188-
public int EnrolOnActivitySelfAssessment(int selfAssessmentId, int candidateId, int supervisorId, string adminEmail, int selfAssessmentSupervisorRoleId, DateTime? completeByDate, int delegateUserId, int centreId)
189+
public int EnrolOnActivitySelfAssessment(int selfAssessmentId, int candidateId, int supervisorId, string adminEmail, int selfAssessmentSupervisorRoleId, DateTime? completeByDate, int delegateUserId, int centreId, int? enrolledByAdminId)
189190
{
190-
return courseDataService.EnrolOnActivitySelfAssessment(selfAssessmentId, candidateId, supervisorId, adminEmail, selfAssessmentSupervisorRoleId, completeByDate, delegateUserId, centreId);
191+
return courseDataService.EnrolOnActivitySelfAssessment(selfAssessmentId, candidateId, supervisorId, adminEmail, selfAssessmentSupervisorRoleId, completeByDate, delegateUserId, centreId, enrolledByAdminId);
191192
}
192193
}
193194
}

DigitalLearningSolutions.Web/Views/TrackingSystem/Delegates/Shared/_DelegateSelfAssessmentProgressDetails.cshtml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@
6161
string enrolmentMethod = Model.EnrolmentMethodId switch
6262
{
6363
1 => "Self enrolled",
64-
2 => "Admin/supervisor enrolled",
64+
2 => Model.EnrolledByFullName != null ? "Enrolled by Admin - " + Model.EnrolledByFullName : "Admin/supervisor enrolled",
6565
3 => "Group",
6666
_ => "System",
6767
};

0 commit comments

Comments
 (0)