Skip to content

Commit 4e46fa6

Browse files
authored
Merge pull request #2871 from TechnologyEnhancedLearning/Develop/Fixes/TD-3656-Supervise-Addmyselftotryselfassessmentstaffdoesntexistwhentheeducatorisremovedfromthelearningportalself-assessment
TD-3656 Supervise - "Add myself to try self assessment" staff doesn't exist when the educator is removed from the learning portal self-assessment
2 parents a5a0c3a + 90dd9e1 commit 4e46fa6

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);
@@ -339,6 +396,49 @@ INNER JOIN DelegateAccounts da
339396
return supervisorDelegateDetail!;
340397
}
341398

399+
public SupervisorDelegateDetail GetSupervisorDelegateDetailsByIdWithoutRemoveClause(int supervisorDelegateId, int adminId, int delegateUserId)
400+
{
401+
int delegateId = 0;
402+
var supervisorDelegateDetail = connection.Query<SupervisorDelegateDetail>(
403+
$@"SELECT {supervisorDelegateDetailFields}
404+
FROM {supervisorDelegateDetailTables}
405+
WHERE (sd.ID = @supervisorDelegateId) AND (sd.DelegateUserID = @delegateUserId OR sd.SupervisorAdminID = @adminId)", new { supervisorDelegateId, adminId, delegateUserId }
406+
).FirstOrDefault();
407+
408+
if (supervisorDelegateDetail != null && supervisorDelegateDetail.DelegateID != null)
409+
{
410+
delegateId = (int)supervisorDelegateDetail!.DelegateID!;
411+
}
412+
413+
if (delegateUserId == 0)
414+
{
415+
if (supervisorDelegateDetail != null && supervisorDelegateDetail.DelegateUserID != null)
416+
{
417+
delegateUserId = (int)supervisorDelegateDetail!.DelegateUserID!;
418+
}
419+
}
420+
421+
var delegateDetails = connection.Query<SupervisorDelegateDetail>(
422+
$@"SELECT u.ID AS DelegateUserId, u.FirstName, u.LastName, u.ProfessionalRegistrationNumber, u.PrimaryEmail AS CandidateEmail, da.CandidateNumber
423+
FROM Users u
424+
INNER JOIN DelegateAccounts da
425+
ON da.UserID = u.ID
426+
WHERE u.ID = @delegateUserId AND u.Active = 1 AND da.Active = 1 AND da.ID = @delegateId", new { delegateUserId, delegateId }
427+
).FirstOrDefault();
428+
429+
if (supervisorDelegateDetail != null && delegateDetails != null)
430+
{
431+
supervisorDelegateDetail.DelegateUserID = delegateUserId;
432+
supervisorDelegateDetail.FirstName = delegateDetails.FirstName;
433+
supervisorDelegateDetail.LastName = delegateDetails.LastName;
434+
supervisorDelegateDetail.ProfessionalRegistrationNumber = delegateDetails.ProfessionalRegistrationNumber;
435+
supervisorDelegateDetail.CandidateEmail = delegateDetails.CandidateEmail;
436+
supervisorDelegateDetail.CandidateNumber = delegateDetails.CandidateNumber;
437+
}
438+
439+
return supervisorDelegateDetail!;
440+
}
441+
342442
public SupervisorDelegate GetSupervisorDelegate(int adminId, int delegateUserId)
343443
{
344444
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
@@ -61,6 +61,10 @@ public IActionResult MyStaffList(
6161
var loggedInAdminUser = userService.GetAdminUserById(adminId);
6262
var centreRegistrationPrompts = centreRegistrationPromptsService.GetCentreRegistrationPromptsByCentreId(centreId);
6363
var supervisorDelegateDetails = supervisorService.GetSupervisorDelegateDetailsForAdminId(adminId);
64+
if (!supervisorDelegateDetails.Any())
65+
{
66+
supervisorDelegateDetails = supervisorService.GetSupervisorDelegateDetailsForAdminIdWithoutRemovedClause(adminId);
67+
}
6468
var isSupervisor = User.GetCustomClaimAsBool(CustomClaimTypes.IsSupervisor) ?? false;
6569
var allSupervisorDelegateDetailViewModels = supervisorDelegateDetails.Select(
6670
supervisor =>
@@ -319,7 +323,7 @@ public IActionResult RemoveSupervisorDelegateConfirmed(SupervisorDelegateViewMod
319323
public IActionResult DelegateProfileAssessments(int supervisorDelegateId, int delegateUserId = 0)
320324
{
321325
var adminId = GetAdminId();
322-
var superviseDelegate = supervisorService.GetSupervisorDelegateDetailsById(supervisorDelegateId, adminId, delegateUserId);
326+
var superviseDelegate = supervisorService.GetSupervisorDelegateDetailsByIdWithoutRemoveClause(supervisorDelegateId, adminId, delegateUserId);
323327
var loggedInUserId = User.GetAdminId();
324328
var loggedInAdminUser = userService.GetAdminUserById(loggedInUserId!.GetValueOrDefault());
325329
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)