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
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,85 @@

public partial class SelfAssessmentDataService
{
public IEnumerable<CurrentSelfAssessment> GetSelfAssessmentsForCandidate(int delegateUserId, int centreId, int? adminIdCategoryID)
{
return connection.Query<CurrentSelfAssessment>(
@"SELECT SelfAssessment.Id,
SelfAssessment.Name,
SelfAssessment.Description,
SelfAssessment.IncludesSignposting,
SelfAssessment.IncludeRequirementsFilters,
SelfAssessment. IsSupervisorResultsReviewed,
SelfAssessment.ReviewerCommentsLabel,
SelfAssessment. Vocabulary,
SelfAssessment. NumberOfCompetencies,
SelfAssessment.StartedDate,
SelfAssessment.LastAccessed,
SelfAssessment.CompleteByDate,
SelfAssessment.CandidateAssessmentId,
SelfAssessment.UserBookmark,
SelfAssessment.UnprocessedUpdates,
SelfAssessment.LaunchCount,
SelfAssessment. IsSelfAssessment,
SelfAssessment.SubmittedDate,
SelfAssessment. CentreName,
SelfAssessment.EnrolmentMethodId,
Signoff.SignedOff,
Signoff.Verified,
EnrolledByForename +' '+EnrolledBySurname AS EnrolledByFullName
FROM (SELECT
CA.SelfAssessmentID AS Id,
SA.Name,
SA.Description,
SA.IncludesSignposting,
SA.IncludeRequirementsFilters,
SA.SupervisorResultsReview AS IsSupervisorResultsReviewed,
SA.ReviewerCommentsLabel,
COALESCE(SA.Vocabulary, 'Capability') AS Vocabulary,
COUNT(C.ID) AS NumberOfCompetencies,
CA.StartedDate,
CA.LastAccessed,
CA.CompleteByDate,
CA.ID AS CandidateAssessmentId,
CA.UserBookmark,
CA.UnprocessedUpdates,
CA.LaunchCount,
1 AS IsSelfAssessment,
CA.SubmittedDate,
CR.CentreName AS CentreName,
CA.EnrolmentMethodId,
uEnrolledBy.FirstName AS EnrolledByForename,
uEnrolledBy.LastName AS EnrolledBySurname
FROM Centres AS CR INNER JOIN
CandidateAssessments AS CA INNER JOIN
SelfAssessments AS SA ON CA.SelfAssessmentID = SA.ID ON CR.CentreID = CA.CentreID INNER JOIN
CentreSelfAssessments AS csa ON csa.SelfAssessmentID = SA.ID AND csa.CentreID = @centreId LEFT OUTER JOIN
Competencies AS C RIGHT OUTER JOIN
SelfAssessmentStructure AS SAS ON C.ID = SAS.CompetencyID ON CA.SelfAssessmentID = SAS.SelfAssessmentID LEFT OUTER JOIN
CandidateAssessmentSupervisors AS cas ON ca.ID =cas.CandidateAssessmentID LEFT OUTER JOIN
CandidateAssessmentSupervisorVerifications AS casv ON casv.CandidateAssessmentSupervisorID = cas.ID LEFT OUTER JOIN
AdminAccounts AS aaEnrolledBy ON aaEnrolledBy.ID = CA.EnrolledByAdminID LEFT OUTER JOIN
Users AS uEnrolledBy ON uEnrolledBy.ID = aaEnrolledBy.UserID
WHERE (CA.DelegateUserID = @delegateUserId) AND (CA.RemovedDate IS NULL) AND (CA.CompletedDate IS NULL)
AND (ISNULL(@adminIdCategoryID, 0) = 0 OR sa.CategoryID = @adminIdCategoryId)
GROUP BY
CA.SelfAssessmentID, SA.Name, SA.Description, SA.IncludesSignposting, SA.SupervisorResultsReview,
SA.ReviewerCommentsLabel, SA.IncludeRequirementsFilters,
COALESCE(SA.Vocabulary, 'Capability'), CA.StartedDate, CA.LastAccessed, CA.CompleteByDate,
CA.ID,
CA.UserBookmark, CA.UnprocessedUpdates, CA.LaunchCount, CA.SubmittedDate, CR.CentreName,CA.EnrolmentMethodId,
uEnrolledBy.FirstName,uEnrolledBy.LastName)SelfAssessment LEFT OUTER JOIN
(SELECT SelfAssessmentID,casv.SignedOff,MAX(casv.Verified) Verified FROM
CandidateAssessments AS CA LEFT OUTER JOIN
CandidateAssessmentSupervisors AS cas ON ca.ID =cas.CandidateAssessmentID LEFT OUTER JOIN
CandidateAssessmentSupervisorVerifications AS casv ON casv.CandidateAssessmentSupervisorID = cas.ID
WHERE (CA.DelegateUserID = @delegateUserId) AND (CA.RemovedDate IS NULL) AND (CA.CompletedDate IS NULL) AND (casv.SignedOff = 1) AND
(casv.Verified IS NOT NULL)
GROUP BY SelfAssessmentID,casv.SignedOff
)Signoff ON SelfAssessment.Id =Signoff.SelfAssessmentID",
new { delegateUserId, centreId, adminIdCategoryID }
);
}
public IEnumerable<CurrentSelfAssessment> GetSelfAssessmentsForCandidate(int delegateUserId, int centreId)
{
return connection.Query<CurrentSelfAssessment>(
Expand Down Expand Up @@ -86,7 +165,6 @@ CandidateAssessments AS CA LEFT OUTER JOIN
new { delegateUserId, centreId }
);
}

public CurrentSelfAssessment? GetSelfAssessmentForCandidateById(int delegateUserId, int selfAssessmentId)
{
return connection.QueryFirstOrDefault<CurrentSelfAssessment>(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -72,8 +72,8 @@ int competencyId

// CandidateAssessmentsDataService

IEnumerable<CurrentSelfAssessment> GetSelfAssessmentsForCandidate(int delegateUserId, int centreId, int? adminIdCategoryID);
IEnumerable<CurrentSelfAssessment> GetSelfAssessmentsForCandidate(int delegateUserId, int centreId);

CurrentSelfAssessment? GetSelfAssessmentForCandidateById(int delegateUserId, int selfAssessmentId);

void UpdateLastAccessed(int selfAssessmentId, int delegateUserId);
Expand Down Expand Up @@ -174,7 +174,6 @@ int GetSelfAssessmentActivityDelegatesExportCount(string searchString, string so
bool HasMinimumOptionalCompetencies(int selfAssessmentId, int delegateUserId);
int GetSelfAssessmentCategoryId(int selfAssessmentId);
}

public partial class SelfAssessmentDataService : ISelfAssessmentDataService
{
private readonly IDbConnection connection;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ public interface ISupervisorDataService
DelegateSelfAssessment? GetSelfAssessmentByCandidateAssessmentId(int candidateAssessmentId, int adminId, int? adminIdCategoryId);
IEnumerable<SupervisorDashboardToDoItem> GetSupervisorDashboardToDoItemsForRequestedSignOffs(int adminId);
IEnumerable<SupervisorDashboardToDoItem> GetSupervisorDashboardToDoItemsForRequestedReviews(int adminId);
DelegateSelfAssessment? GetSelfAssessmentBaseByCandidateAssessmentId(int candidateAssessmentId);
DelegateSelfAssessment? GetSelfAssessmentBaseByCandidateAssessmentId(int candidateAssessmentId, int? adminIdCategoryId);
IEnumerable<RoleProfile> GetAvailableRoleProfilesForDelegate(int candidateId, int centreId, int? categoryId);
RoleProfile? GetRoleProfileById(int selfAssessmentId);
IEnumerable<SelfAssessmentSupervisorRole> GetSupervisorRolesForSelfAssessment(int selfAssessmentId);
Expand Down Expand Up @@ -594,7 +594,7 @@ FROM CandidateAssessmentSupervisors AS cas INNER JOIN
WHERE (ca.RemovedDate IS NULL) AND (cas.SupervisorDelegateId = @supervisorDelegateId) AND (cas.Removed IS NULL) AND (sa.ID = @selfAssessmentId)", new { selfAssessmentId, supervisorDelegateId }
).FirstOrDefault();
}
public DelegateSelfAssessment? GetSelfAssessmentBaseByCandidateAssessmentId(int candidateAssessmentId)
public DelegateSelfAssessment? GetSelfAssessmentBaseByCandidateAssessmentId(int candidateAssessmentId, int? adminIdCategoryId)
{
return connection.Query<DelegateSelfAssessment>(
@$"SELECT ca.ID, sa.ID AS SelfAssessmentID, sa.Name AS RoleName, sa.QuestionLabel, sa.DescriptionLabel, sa.ReviewerCommentsLabel,
Expand All @@ -611,7 +611,7 @@ FROM SelfAssessmentResultSupervisorVerifications AS sarsv
FROM CandidateAssessmentSupervisors AS cas INNER JOIN
CandidateAssessments AS ca ON cas.CandidateAssessmentID = ca.ID INNER JOIN
SelfAssessments AS sa ON sa.ID = ca.SelfAssessmentID
WHERE (ca.ID = @candidateAssessmentId)", new { candidateAssessmentId }
WHERE (ca.ID = @candidateAssessmentId) AND (ISNULL(@adminIdCategoryID, 0) = 0 OR sa.CategoryID = @adminIdCategoryId)", new { candidateAssessmentId, adminIdCategoryId }
).FirstOrDefault();
}
public DelegateSelfAssessment? GetSelfAssessmentBySupervisorDelegateCandidateAssessmentId(int candidateAssessmentId, int supervisorDelegateId)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -515,7 +515,7 @@ int resultId
)
{
var model = ReviewCompetencySelfAsessmentData(supervisorDelegateId, candidateAssessmentId, resultId);

if (model == null) return RedirectToAction("StatusCode", "LearningSolutions", new { code = 403 });
return View("ReviewCompetencySelfAsessment", model);
}

Expand Down Expand Up @@ -587,8 +587,10 @@ int resultId
candidateAssessmentId,
adminId
);
var loggedInAdminUser = userService.GetAdminUserById(adminId);
var delegateSelfAssessment =
supervisorService.GetSelfAssessmentBaseByCandidateAssessmentId(candidateAssessmentId);
supervisorService.GetSelfAssessmentBaseByCandidateAssessmentId(candidateAssessmentId, loggedInAdminUser.CategoryId);
if (delegateSelfAssessment == null) return null;
var assessmentQuestion = GetLevelDescriptorsForAssessmentQuestion(competency.AssessmentQuestions.First());
competency.CompetencyFlags = frameworkService.GetSelectedCompetencyFlagsByCompetecyId(competency.Id);
var model = new ReviewCompetencySelfAsessmentViewModel()
Expand All @@ -610,10 +612,12 @@ int resultId
public IActionResult VerifyMultipleResults(int supervisorDelegateId, int candidateAssessmentId)
{
var adminId = GetAdminId();
var loggedInAdminUser = userService.GetAdminUserById(adminId);
var superviseDelegate =
supervisorService.GetSupervisorDelegateDetailsById(supervisorDelegateId, GetAdminId(), 0);
var delegateSelfAssessment =
supervisorService.GetSelfAssessmentBaseByCandidateAssessmentId(candidateAssessmentId);
supervisorService.GetSelfAssessmentBaseByCandidateAssessmentId(candidateAssessmentId, loggedInAdminUser.CategoryId);
if (delegateSelfAssessment == null) return RedirectToAction("StatusCode", "LearningSolutions", new { code = 403 });
var reviewedCompetencies = PopulateCompetencyLevelDescriptors(
selfAssessmentService.GetCandidateAssessmentResultsForReviewById(candidateAssessmentId, adminId)
.ToList()
Expand All @@ -638,10 +642,11 @@ List<int> resultChecked
if (resultChecked.Count == 0)
{
var adminId = GetAdminId();
var loggedInAdminUser = userService.GetAdminUserById(adminId);
var superviseDelegate =
supervisorService.GetSupervisorDelegateDetailsById(supervisorDelegateId, GetAdminId(), 0);
var delegateSelfAssessment =
supervisorService.GetSelfAssessmentBaseByCandidateAssessmentId(candidateAssessmentId);
supervisorService.GetSelfAssessmentBaseByCandidateAssessmentId(candidateAssessmentId, loggedInAdminUser.CategoryId);
var reviewedCompetencies = PopulateCompetencyLevelDescriptors(
selfAssessmentService.GetCandidateAssessmentResultsForReviewById(candidateAssessmentId, adminId)
.ToList()
Expand Down Expand Up @@ -1260,10 +1265,12 @@ SignOffProfileAssessmentViewModel model
public IActionResult SignOffHistory(int supervisorDelegateId, int candidateAssessmentId)
{
var adminId = GetAdminId();
var loggedInAdminUser = userService.GetAdminUserById(adminId);
var superviseDelegate =
supervisorService.GetSupervisorDelegateDetailsById(supervisorDelegateId, GetAdminId(), 0);
var delegateSelfAssessment =
supervisorService.GetSelfAssessmentBaseByCandidateAssessmentId(candidateAssessmentId);
supervisorService.GetSelfAssessmentBaseByCandidateAssessmentId(candidateAssessmentId, loggedInAdminUser.CategoryId);
if (delegateSelfAssessment == null) return RedirectToAction("StatusCode", "LearningSolutions", new { code = 403 });
var model = new SignOffHistoryViewModel()
{
DelegateSelfAssessment = delegateSelfAssessment,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -83,7 +83,7 @@ public IActionResult Index(int delegateId, string? callType)
}

var selfAssessments =
selfAssessmentService.GetSelfAssessmentsForCandidate(delegateEntity.UserAccount.Id, centreId);
selfAssessmentService.GetSelfAssessmentsForCandidate(delegateEntity.UserAccount.Id, centreId, categoryIdFilter);

foreach (var selfassessment in selfAssessments)
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -351,7 +351,7 @@ public void SendResultVerificationRequest(int candidateAssessmentSupervisorId, i
int candidateAssessmentId = candidateAssessmentSupervisor.CandidateAssessmentID;
var supervisorDelegate = supervisorService.GetSupervisorDelegateDetailsById(supervisorDelegateId, 0, delegateUserId);
string centreName = GetCentreName(centreId);
var delegateSelfAssessment = supervisorService.GetSelfAssessmentBaseByCandidateAssessmentId(candidateAssessmentSupervisor.CandidateAssessmentID);
var delegateSelfAssessment = supervisorService.GetSelfAssessmentBaseByCandidateAssessmentId(candidateAssessmentSupervisor.CandidateAssessmentID, 0);
string emailSubjectLine = $"{delegateSelfAssessment.SupervisorRoleTitle} Self Assessment Results Review Request - Digital Learning Solutions";
string? profileReviewUrl = GetSupervisorProfileReviewUrl(supervisorDelegateId, candidateAssessmentId, selfAssessmentResultId);
BodyBuilder? builder = new BodyBuilder();
Expand All @@ -369,7 +369,7 @@ public void SendSignOffRequest(int candidateAssessmentSupervisorId, int selfAsse
int candidateAssessmentId = candidateAssessmentSupervisor.CandidateAssessmentID;
var supervisorDelegate = supervisorService.GetSupervisorDelegateDetailsById(supervisorDelegateId, 0, delegateUserId);
string centreName = GetCentreName(centreId);
var delegateSelfAssessment = supervisorService.GetSelfAssessmentBaseByCandidateAssessmentId(candidateAssessmentSupervisor.CandidateAssessmentID);
var delegateSelfAssessment = supervisorService.GetSelfAssessmentBaseByCandidateAssessmentId(candidateAssessmentSupervisor.CandidateAssessmentID, 0);
string emailSubjectLine = $"{delegateSelfAssessment.SupervisorRoleTitle} Self Assessment Sign-off Request - Digital Learning Solutions";
string? profileReviewUrl = GetSupervisorProfileReviewUrl(supervisorDelegateId, candidateAssessmentId);
BodyBuilder? builder = new BodyBuilder();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,8 +15,8 @@ public interface ISelfAssessmentService
//Self Assessments
string? GetSelfAssessmentNameById(int selfAssessmentId);
// Candidate Assessments
IEnumerable<CurrentSelfAssessment> GetSelfAssessmentsForCandidate(int delegateUserId, int centreId, int? adminIdCategoryID);
IEnumerable<CurrentSelfAssessment> GetSelfAssessmentsForCandidate(int delegateUserId, int centreId);

CurrentSelfAssessment? GetSelfAssessmentForCandidateById(int delegateUserId, int selfAssessmentId);

void SetBookmark(int selfAssessmentId, int delegateUserId, string bookmark);
Expand Down Expand Up @@ -404,11 +404,14 @@ public IEnumerable<Competency> GetCandidateAssessmentOptionalCompetencies(int se
return selfAssessmentDataService.GetCandidateAssessmentOptionalCompetencies(selfAssessmentId, delegateUserId);
}

public IEnumerable<CurrentSelfAssessment> GetSelfAssessmentsForCandidate(int delegateUserId, int centreId, int? adminIdCategoryID)
{
return selfAssessmentDataService.GetSelfAssessmentsForCandidate(delegateUserId, centreId, adminIdCategoryID);
}
public IEnumerable<CurrentSelfAssessment> GetSelfAssessmentsForCandidate(int delegateUserId, int centreId)
{
return selfAssessmentDataService.GetSelfAssessmentsForCandidate(delegateUserId, centreId);
}

public IEnumerable<Competency> GetMostRecentResults(int selfAssessmentId, int delegateId)
{
return selfAssessmentDataService.GetMostRecentResults(selfAssessmentId, delegateId);
Expand Down
8 changes: 4 additions & 4 deletions DigitalLearningSolutions.Web/Services/SupervisorService.cs
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ public interface ISupervisorService
DelegateSelfAssessment? GetSelfAssessmentByCandidateAssessmentId(int candidateAssessmentId, int adminId, int? adminIdCategoryId);
IEnumerable<SupervisorDashboardToDoItem> GetSupervisorDashboardToDoItemsForRequestedSignOffs(int adminId);
IEnumerable<SupervisorDashboardToDoItem> GetSupervisorDashboardToDoItemsForRequestedReviews(int adminId);
DelegateSelfAssessment? GetSelfAssessmentBaseByCandidateAssessmentId(int candidateAssessmentId);
DelegateSelfAssessment? GetSelfAssessmentBaseByCandidateAssessmentId(int candidateAssessmentId, int? adminIdCategoryId);
IEnumerable<RoleProfile> GetAvailableRoleProfilesForDelegate(int candidateId, int centreId, int? categoryId);
RoleProfile? GetRoleProfileById(int selfAssessmentId);
IEnumerable<SelfAssessmentSupervisorRole> GetSupervisorRolesForSelfAssessment(int selfAssessmentId);
Expand Down Expand Up @@ -115,9 +115,9 @@ public IEnumerable<SelfAssessmentSupervisorRole> GetDelegateNominatableSuperviso
return supervisorDataService.GetRoleProfileById(selfAssessmentId);
}

public DelegateSelfAssessment? GetSelfAssessmentBaseByCandidateAssessmentId(int candidateAssessmentId)
public DelegateSelfAssessment? GetSelfAssessmentBaseByCandidateAssessmentId(int candidateAssessmentId, int? adminIdCategoryId)
{
return supervisorDataService.GetSelfAssessmentBaseByCandidateAssessmentId(candidateAssessmentId);
return supervisorDataService.GetSelfAssessmentBaseByCandidateAssessmentId(candidateAssessmentId, adminIdCategoryId);
}

public DelegateSelfAssessment? GetSelfAssessmentByCandidateAssessmentId(int candidateAssessmentId, int adminId, int? adminIdCategoryId)
Expand Down Expand Up @@ -275,7 +275,7 @@ public IEnumerable<SupervisorDelegateDetail> GetSupervisorDelegateDetailsForAdmi
}
public SupervisorDelegateDetail GetSupervisorDelegateDetailsByIdWithoutRemoveClause(int supervisorDelegateId, int adminId, int delegateUserId)
{
return supervisorDataService.GetSupervisorDelegateDetailsByIdWithoutRemoveClause(supervisorDelegateId,adminId, delegateUserId);
return supervisorDataService.GetSupervisorDelegateDetailsByIdWithoutRemoveClause(supervisorDelegateId, adminId, delegateUserId);
}
}
}
Loading