Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
100 changes: 100 additions & 0 deletions DigitalLearningSolutions.Data/DataServices/SupervisorDataService.cs
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,8 @@ public interface ISupervisorDataService
SelfAssessmentResultSummary? GetSelfAssessmentResultSummary(int candidateAssessmentId, int supervisorDelegateId);
IEnumerable<CandidateAssessmentSupervisorVerificationSummary> GetCandidateAssessmentSupervisorVerificationSummaries(int candidateAssessmentId);
IEnumerable<SupervisorForEnrolDelegate> GetSupervisorForEnrolDelegate(int CustomisationID, int CentreID);
IEnumerable<SupervisorDelegateDetail> GetSupervisorDelegateDetailsForAdminIdWithoutRemovedClause(int adminId);
SupervisorDelegateDetail GetSupervisorDelegateDetailsByIdWithoutRemoveClause(int supervisorDelegateId, int adminId, int delegateUserId);
//UPDATE DATA
bool ConfirmSupervisorDelegateById(int supervisorDelegateId, int candidateId, int adminId);
bool RemoveSupervisorDelegateById(int supervisorDelegateId, int delegateUserId, int adminId);
Expand Down Expand Up @@ -214,6 +216,61 @@ LEFT OUTER JOIN AdminAccounts AS au2
);
}

public IEnumerable<SupervisorDelegateDetail> GetSupervisorDelegateDetailsForAdminIdWithoutRemovedClause(int adminId)
{
return connection.Query<SupervisorDelegateDetail>(
$@"SELECT sd.ID,
sd.SupervisorEmail, sd.SupervisorAdminID, sd.DelegateEmail, sd.DelegateUserID,da.Active,
sd.Added, sd.AddedByDelegate, sd.NotificationSent, sd.Removed, sd.InviteHash,
u.FirstName, u.LastName, u.ProfessionalRegistrationNumber, u.PrimaryEmail AS CandidateEmail,
jg.JobGroupName,
da.Answer1, da.Answer2, da.Answer3, da.Answer4, da.Answer5, da.Answer6, da.CandidateNumber,
cp1.CustomPrompt AS CustomPrompt1, cp2.CustomPrompt AS CustomPrompt2,
cp3.CustomPrompt AS CustomPrompt3, cp4.CustomPrompt AS CustomPrompt4,
cp5.CustomPrompt AS CustomPrompt5, cp6.CustomPrompt AS CustomPrompt6,
COALESCE (au.CentreID, da.CentreID) AS CentreID,
au.Forename + ' ' + au.Surname AS SupervisorName,
(SELECT COUNT(ca.ID) AS Expr1
FROM CandidateAssessments AS ca LEFT JOIN
CandidateAssessmentSupervisors AS cas ON cas.CandidateAssessmentID = ca.ID AND cas.Removed IS NULL AND cas.SupervisorDelegateId = sd.ID INNER JOIN
SelfAssessments AS sa ON sa.ID = ca.SelfAssessmentID
WHERE (ca.RemovedDate IS NULL) AND (ca.DelegateUserID=sd.DelegateUserID) AND (cas.SupervisorDelegateId = sd.ID OR (cas.CandidateAssessmentID IS NULL)
AND ((sa.SupervisorSelfAssessmentReview = 1) OR (sa.SupervisorResultsReview = 1)))) AS CandidateAssessmentCount,
CAST(COALESCE (au2.IsNominatedSupervisor, 0) AS Bit) AS DelegateIsNominatedSupervisor,
CAST(COALESCE (au2.IsSupervisor, 0) AS Bit) AS DelegateIsSupervisor,
da.ID AS Expr1
FROM CustomPrompts AS cp6
RIGHT OUTER JOIN CustomPrompts AS cp5
RIGHT OUTER JOIN DelegateAccounts AS da
RIGHT OUTER JOIN SupervisorDelegates AS sd
INNER JOIN AdminUsers AS au
ON sd.SupervisorAdminID = au.AdminID
INNER JOIN Centres AS ct
ON au.CentreID = ct.CentreID
ON da.CentreID = ct.CentreID
AND da.UserID = sd.DelegateUserID
LEFT OUTER JOIN Users AS u
LEFT OUTER JOIN JobGroups AS jg
ON u.JobGroupID = jg.JobGroupID
ON da.UserID = u.ID
LEFT OUTER JOIN CustomPrompts AS cp1
ON ct.CustomField1PromptID = cp1.CustomPromptID
LEFT OUTER JOIN CustomPrompts AS cp2
ON ct.CustomField2PromptID = cp2.CustomPromptID
LEFT OUTER JOIN CustomPrompts AS cp3
ON ct.CustomField3PromptID = cp3.CustomPromptID
LEFT OUTER JOIN CustomPrompts AS cp4
ON ct.CustomField4PromptID = cp4.CustomPromptID
ON cp5.CustomPromptID = ct.CustomField5PromptID
ON cp6.CustomPromptID = ct.CustomField6PromptID
LEFT OUTER JOIN AdminAccounts AS au2
ON da.UserID = au2.UserID AND da.CentreID = au2.CentreID
WHERE (sd.SupervisorAdminID = @adminId) AND
(u.ID = da.UserID OR sd.DelegateUserID IS NULL)
ORDER BY u.LastName, COALESCE (u.FirstName, sd.DelegateEmail)
", new { adminId }
);
}
public int AddSuperviseDelegate(int? supervisorAdminId, int? delegateUserId, string delegateEmail, string supervisorEmail, int centreId)
{
var addedByDelegate = (delegateUserId != null);
Expand Down Expand Up @@ -349,6 +406,49 @@ INNER JOIN DelegateAccounts da
return supervisorDelegateDetail!;
}

public SupervisorDelegateDetail GetSupervisorDelegateDetailsByIdWithoutRemoveClause(int supervisorDelegateId, int adminId, int delegateUserId)
{
int delegateId = 0;
var supervisorDelegateDetail = connection.Query<SupervisorDelegateDetail>(
$@"SELECT {supervisorDelegateDetailFields}
FROM {supervisorDelegateDetailTables}
WHERE (sd.ID = @supervisorDelegateId) AND (sd.DelegateUserID = @delegateUserId OR sd.SupervisorAdminID = @adminId)", new { supervisorDelegateId, adminId, delegateUserId }
).FirstOrDefault();

if (supervisorDelegateDetail != null && supervisorDelegateDetail.DelegateID != null)
{
delegateId = (int)supervisorDelegateDetail!.DelegateID!;
}

if (delegateUserId == 0)
{
if (supervisorDelegateDetail != null && supervisorDelegateDetail.DelegateUserID != null)
{
delegateUserId = (int)supervisorDelegateDetail!.DelegateUserID!;
}
}

var delegateDetails = connection.Query<SupervisorDelegateDetail>(
$@"SELECT u.ID AS DelegateUserId, u.FirstName, u.LastName, u.ProfessionalRegistrationNumber, u.PrimaryEmail AS CandidateEmail, da.CandidateNumber
FROM Users u
INNER JOIN DelegateAccounts da
ON da.UserID = u.ID
WHERE u.ID = @delegateUserId AND u.Active = 1 AND da.Active = 1 AND da.ID = @delegateId", new { delegateUserId, delegateId }
).FirstOrDefault();

if (supervisorDelegateDetail != null && delegateDetails != null)
{
supervisorDelegateDetail.DelegateUserID = delegateUserId;
supervisorDelegateDetail.FirstName = delegateDetails.FirstName;
supervisorDelegateDetail.LastName = delegateDetails.LastName;
supervisorDelegateDetail.ProfessionalRegistrationNumber = delegateDetails.ProfessionalRegistrationNumber;
supervisorDelegateDetail.CandidateEmail = delegateDetails.CandidateEmail;
supervisorDelegateDetail.CandidateNumber = delegateDetails.CandidateNumber;
}

return supervisorDelegateDetail!;
}

public SupervisorDelegate GetSupervisorDelegate(int adminId, int delegateUserId)
{
var supervisorDelegateDetail = connection.Query<SupervisorDelegate>(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,10 @@ public IActionResult MyStaffList(
var loggedInAdminUser = userService.GetAdminUserById(adminId);
var centreRegistrationPrompts = centreRegistrationPromptsService.GetCentreRegistrationPromptsByCentreId(centreId);
var supervisorDelegateDetails = supervisorService.GetSupervisorDelegateDetailsForAdminId(adminId);
if (!supervisorDelegateDetails.Any())
{
supervisorDelegateDetails = supervisorService.GetSupervisorDelegateDetailsForAdminIdWithoutRemovedClause(adminId);
}
var isSupervisor = User.GetCustomClaimAsBool(CustomClaimTypes.IsSupervisor) ?? false;
var allSupervisorDelegateDetailViewModels = supervisorDelegateDetails.Select(
supervisor =>
Expand Down Expand Up @@ -312,7 +316,7 @@ public IActionResult RemoveSupervisorDelegateConfirmed(SupervisorDelegateViewMod
public IActionResult DelegateProfileAssessments(int supervisorDelegateId, int delegateUserId = 0)
{
var adminId = GetAdminId();
var superviseDelegate = supervisorService.GetSupervisorDelegateDetailsById(supervisorDelegateId, adminId, delegateUserId);
var superviseDelegate = supervisorService.GetSupervisorDelegateDetailsByIdWithoutRemoveClause(supervisorDelegateId, adminId, delegateUserId);
var loggedInUserId = User.GetAdminId();
var loggedInAdminUser = userService.GetAdminUserById(loggedInUserId!.GetValueOrDefault());
var delegateSelfAssessments = supervisorService.GetSelfAssessmentsForSupervisorDelegateId(supervisorDelegateId, adminId);
Expand Down
10 changes: 10 additions & 0 deletions DigitalLearningSolutions.Web/Services/SupervisorService.cs
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,8 @@ public interface ISupervisorService
SelfAssessmentResultSummary? GetSelfAssessmentResultSummary(int candidateAssessmentId, int supervisorDelegateId);
IEnumerable<CandidateAssessmentSupervisorVerificationSummary> GetCandidateAssessmentSupervisorVerificationSummaries(int candidateAssessmentId);
IEnumerable<SupervisorForEnrolDelegate> GetSupervisorForEnrolDelegate(int CustomisationID, int CentreID);
IEnumerable<SupervisorDelegateDetail> GetSupervisorDelegateDetailsForAdminIdWithoutRemovedClause(int adminId);
SupervisorDelegateDetail GetSupervisorDelegateDetailsByIdWithoutRemoveClause(int supervisorDelegateId, int adminId, int delegateUserId);
//UPDATE DATA
bool ConfirmSupervisorDelegateById(int supervisorDelegateId, int candidateId, int adminId);
bool RemoveSupervisorDelegateById(int supervisorDelegateId, int delegateUserId, int adminId);
Expand Down Expand Up @@ -266,5 +268,13 @@ public bool UpdateSelfAssessmentResultSupervisorVerificationsEmailSent(int selfA
{
return supervisorDataService.ValidateDelegate(centreId, delegateEmail);
}
public IEnumerable<SupervisorDelegateDetail> GetSupervisorDelegateDetailsForAdminIdWithoutRemovedClause(int adminId)
{
return supervisorDataService.GetSupervisorDelegateDetailsForAdminIdWithoutRemovedClause(adminId);
}
public SupervisorDelegateDetail GetSupervisorDelegateDetailsByIdWithoutRemoveClause(int supervisorDelegateId, int adminId, int delegateUserId)
{
return supervisorDataService.GetSupervisorDelegateDetailsByIdWithoutRemoveClause(supervisorDelegateId,adminId, delegateUserId);
}
}
}
Loading