Skip to content

Commit 90dd9e1

Browse files
TD-3656 Supervise - "Add myself to try self assessment" staff doesn't exist when the educator is removed from the learning portal self-assessment
1 parent 97783c5 commit 90dd9e1

File tree

3 files changed

+115
-1
lines changed

3 files changed

+115
-1
lines changed

DigitalLearningSolutions.Data/DataServices/SupervisorDataService.cs

Lines changed: 100 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,8 @@ public interface ISupervisorDataService
3636
SelfAssessmentResultSummary? GetSelfAssessmentResultSummary(int candidateAssessmentId, int supervisorDelegateId);
3737
IEnumerable<CandidateAssessmentSupervisorVerificationSummary> GetCandidateAssessmentSupervisorVerificationSummaries(int candidateAssessmentId);
3838
IEnumerable<SupervisorForEnrolDelegate> GetSupervisorForEnrolDelegate(int CustomisationID, int CentreID);
39+
IEnumerable<SupervisorDelegateDetail> GetSupervisorDelegateDetailsForAdminIdWithoutRemovedClause(int adminId);
40+
SupervisorDelegateDetail GetSupervisorDelegateDetailsByIdWithoutRemoveClause(int supervisorDelegateId, int adminId, int delegateUserId);
3941
//UPDATE DATA
4042
bool ConfirmSupervisorDelegateById(int supervisorDelegateId, int candidateId, int adminId);
4143
bool RemoveSupervisorDelegateById(int supervisorDelegateId, int delegateUserId, int adminId);
@@ -214,6 +216,61 @@ LEFT OUTER JOIN AdminAccounts AS au2
214216
);
215217
}
216218

219+
public IEnumerable<SupervisorDelegateDetail> GetSupervisorDelegateDetailsForAdminIdWithoutRemovedClause(int adminId)
220+
{
221+
return connection.Query<SupervisorDelegateDetail>(
222+
$@"SELECT sd.ID,
223+
sd.SupervisorEmail, sd.SupervisorAdminID, sd.DelegateEmail, sd.DelegateUserID,da.Active,
224+
sd.Added, sd.AddedByDelegate, sd.NotificationSent, sd.Removed, sd.InviteHash,
225+
u.FirstName, u.LastName, u.ProfessionalRegistrationNumber, u.PrimaryEmail AS CandidateEmail,
226+
jg.JobGroupName,
227+
da.Answer1, da.Answer2, da.Answer3, da.Answer4, da.Answer5, da.Answer6, da.CandidateNumber,
228+
cp1.CustomPrompt AS CustomPrompt1, cp2.CustomPrompt AS CustomPrompt2,
229+
cp3.CustomPrompt AS CustomPrompt3, cp4.CustomPrompt AS CustomPrompt4,
230+
cp5.CustomPrompt AS CustomPrompt5, cp6.CustomPrompt AS CustomPrompt6,
231+
COALESCE (au.CentreID, da.CentreID) AS CentreID,
232+
au.Forename + ' ' + au.Surname AS SupervisorName,
233+
(SELECT COUNT(ca.ID) AS Expr1
234+
FROM CandidateAssessments AS ca LEFT JOIN
235+
CandidateAssessmentSupervisors AS cas ON cas.CandidateAssessmentID = ca.ID AND cas.Removed IS NULL AND cas.SupervisorDelegateId = sd.ID INNER JOIN
236+
SelfAssessments AS sa ON sa.ID = ca.SelfAssessmentID
237+
WHERE (ca.RemovedDate IS NULL) AND (ca.DelegateUserID=sd.DelegateUserID) AND (cas.SupervisorDelegateId = sd.ID OR (cas.CandidateAssessmentID IS NULL)
238+
AND ((sa.SupervisorSelfAssessmentReview = 1) OR (sa.SupervisorResultsReview = 1)))) AS CandidateAssessmentCount,
239+
CAST(COALESCE (au2.IsNominatedSupervisor, 0) AS Bit) AS DelegateIsNominatedSupervisor,
240+
CAST(COALESCE (au2.IsSupervisor, 0) AS Bit) AS DelegateIsSupervisor,
241+
da.ID AS Expr1
242+
FROM CustomPrompts AS cp6
243+
RIGHT OUTER JOIN CustomPrompts AS cp5
244+
RIGHT OUTER JOIN DelegateAccounts AS da
245+
RIGHT OUTER JOIN SupervisorDelegates AS sd
246+
INNER JOIN AdminUsers AS au
247+
ON sd.SupervisorAdminID = au.AdminID
248+
INNER JOIN Centres AS ct
249+
ON au.CentreID = ct.CentreID
250+
ON da.CentreID = ct.CentreID
251+
AND da.UserID = sd.DelegateUserID
252+
LEFT OUTER JOIN Users AS u
253+
LEFT OUTER JOIN JobGroups AS jg
254+
ON u.JobGroupID = jg.JobGroupID
255+
ON da.UserID = u.ID
256+
LEFT OUTER JOIN CustomPrompts AS cp1
257+
ON ct.CustomField1PromptID = cp1.CustomPromptID
258+
LEFT OUTER JOIN CustomPrompts AS cp2
259+
ON ct.CustomField2PromptID = cp2.CustomPromptID
260+
LEFT OUTER JOIN CustomPrompts AS cp3
261+
ON ct.CustomField3PromptID = cp3.CustomPromptID
262+
LEFT OUTER JOIN CustomPrompts AS cp4
263+
ON ct.CustomField4PromptID = cp4.CustomPromptID
264+
ON cp5.CustomPromptID = ct.CustomField5PromptID
265+
ON cp6.CustomPromptID = ct.CustomField6PromptID
266+
LEFT OUTER JOIN AdminAccounts AS au2
267+
ON da.UserID = au2.UserID AND da.CentreID = au2.CentreID
268+
WHERE (sd.SupervisorAdminID = @adminId) AND
269+
(u.ID = da.UserID OR sd.DelegateUserID IS NULL)
270+
ORDER BY u.LastName, COALESCE (u.FirstName, sd.DelegateEmail)
271+
", new { adminId }
272+
);
273+
}
217274
public int AddSuperviseDelegate(int? supervisorAdminId, int? delegateUserId, string delegateEmail, string supervisorEmail, int centreId)
218275
{
219276
var addedByDelegate = (delegateUserId != null);
@@ -349,6 +406,49 @@ INNER JOIN DelegateAccounts da
349406
return supervisorDelegateDetail!;
350407
}
351408

409+
public SupervisorDelegateDetail GetSupervisorDelegateDetailsByIdWithoutRemoveClause(int supervisorDelegateId, int adminId, int delegateUserId)
410+
{
411+
int delegateId = 0;
412+
var supervisorDelegateDetail = connection.Query<SupervisorDelegateDetail>(
413+
$@"SELECT {supervisorDelegateDetailFields}
414+
FROM {supervisorDelegateDetailTables}
415+
WHERE (sd.ID = @supervisorDelegateId) AND (sd.DelegateUserID = @delegateUserId OR sd.SupervisorAdminID = @adminId)", new { supervisorDelegateId, adminId, delegateUserId }
416+
).FirstOrDefault();
417+
418+
if (supervisorDelegateDetail != null && supervisorDelegateDetail.DelegateID != null)
419+
{
420+
delegateId = (int)supervisorDelegateDetail!.DelegateID!;
421+
}
422+
423+
if (delegateUserId == 0)
424+
{
425+
if (supervisorDelegateDetail != null && supervisorDelegateDetail.DelegateUserID != null)
426+
{
427+
delegateUserId = (int)supervisorDelegateDetail!.DelegateUserID!;
428+
}
429+
}
430+
431+
var delegateDetails = connection.Query<SupervisorDelegateDetail>(
432+
$@"SELECT u.ID AS DelegateUserId, u.FirstName, u.LastName, u.ProfessionalRegistrationNumber, u.PrimaryEmail AS CandidateEmail, da.CandidateNumber
433+
FROM Users u
434+
INNER JOIN DelegateAccounts da
435+
ON da.UserID = u.ID
436+
WHERE u.ID = @delegateUserId AND u.Active = 1 AND da.Active = 1 AND da.ID = @delegateId", new { delegateUserId, delegateId }
437+
).FirstOrDefault();
438+
439+
if (supervisorDelegateDetail != null && delegateDetails != null)
440+
{
441+
supervisorDelegateDetail.DelegateUserID = delegateUserId;
442+
supervisorDelegateDetail.FirstName = delegateDetails.FirstName;
443+
supervisorDelegateDetail.LastName = delegateDetails.LastName;
444+
supervisorDelegateDetail.ProfessionalRegistrationNumber = delegateDetails.ProfessionalRegistrationNumber;
445+
supervisorDelegateDetail.CandidateEmail = delegateDetails.CandidateEmail;
446+
supervisorDelegateDetail.CandidateNumber = delegateDetails.CandidateNumber;
447+
}
448+
449+
return supervisorDelegateDetail!;
450+
}
451+
352452
public SupervisorDelegate GetSupervisorDelegate(int adminId, int delegateUserId)
353453
{
354454
var supervisorDelegateDetail = connection.Query<SupervisorDelegate>(

DigitalLearningSolutions.Web/Controllers/SupervisorController/Supervisor.cs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,10 @@ public IActionResult MyStaffList(
5454
var loggedInAdminUser = userService.GetAdminUserById(adminId);
5555
var centreRegistrationPrompts = centreRegistrationPromptsService.GetCentreRegistrationPromptsByCentreId(centreId);
5656
var supervisorDelegateDetails = supervisorService.GetSupervisorDelegateDetailsForAdminId(adminId);
57+
if (!supervisorDelegateDetails.Any())
58+
{
59+
supervisorDelegateDetails = supervisorService.GetSupervisorDelegateDetailsForAdminIdWithoutRemovedClause(adminId);
60+
}
5761
var isSupervisor = User.GetCustomClaimAsBool(CustomClaimTypes.IsSupervisor) ?? false;
5862
var allSupervisorDelegateDetailViewModels = supervisorDelegateDetails.Select(
5963
supervisor =>
@@ -312,7 +316,7 @@ public IActionResult RemoveSupervisorDelegateConfirmed(SupervisorDelegateViewMod
312316
public IActionResult DelegateProfileAssessments(int supervisorDelegateId, int delegateUserId = 0)
313317
{
314318
var adminId = GetAdminId();
315-
var superviseDelegate = supervisorService.GetSupervisorDelegateDetailsById(supervisorDelegateId, adminId, delegateUserId);
319+
var superviseDelegate = supervisorService.GetSupervisorDelegateDetailsByIdWithoutRemoveClause(supervisorDelegateId, adminId, delegateUserId);
316320
var loggedInUserId = User.GetAdminId();
317321
var loggedInAdminUser = userService.GetAdminUserById(loggedInUserId!.GetValueOrDefault());
318322
var delegateSelfAssessments = supervisorService.GetSelfAssessmentsForSupervisorDelegateId(supervisorDelegateId, adminId);

DigitalLearningSolutions.Web/Services/SupervisorService.cs

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,8 @@ public interface ISupervisorService
3333
SelfAssessmentResultSummary? GetSelfAssessmentResultSummary(int candidateAssessmentId, int supervisorDelegateId);
3434
IEnumerable<CandidateAssessmentSupervisorVerificationSummary> GetCandidateAssessmentSupervisorVerificationSummaries(int candidateAssessmentId);
3535
IEnumerable<SupervisorForEnrolDelegate> GetSupervisorForEnrolDelegate(int CustomisationID, int CentreID);
36+
IEnumerable<SupervisorDelegateDetail> GetSupervisorDelegateDetailsForAdminIdWithoutRemovedClause(int adminId);
37+
SupervisorDelegateDetail GetSupervisorDelegateDetailsByIdWithoutRemoveClause(int supervisorDelegateId, int adminId, int delegateUserId);
3638
//UPDATE DATA
3739
bool ConfirmSupervisorDelegateById(int supervisorDelegateId, int candidateId, int adminId);
3840
bool RemoveSupervisorDelegateById(int supervisorDelegateId, int delegateUserId, int adminId);
@@ -266,5 +268,13 @@ public bool UpdateSelfAssessmentResultSupervisorVerificationsEmailSent(int selfA
266268
{
267269
return supervisorDataService.ValidateDelegate(centreId, delegateEmail);
268270
}
271+
public IEnumerable<SupervisorDelegateDetail> GetSupervisorDelegateDetailsForAdminIdWithoutRemovedClause(int adminId)
272+
{
273+
return supervisorDataService.GetSupervisorDelegateDetailsForAdminIdWithoutRemovedClause(adminId);
274+
}
275+
public SupervisorDelegateDetail GetSupervisorDelegateDetailsByIdWithoutRemoveClause(int supervisorDelegateId, int adminId, int delegateUserId)
276+
{
277+
return supervisorDataService.GetSupervisorDelegateDetailsByIdWithoutRemoveClause(supervisorDelegateId,adminId, delegateUserId);
278+
}
269279
}
270280
}

0 commit comments

Comments
 (0)