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
@@ -0,0 +1,18 @@
namespace DigitalLearningSolutions.Data.Migrations
{
using FluentMigrator;
[Migration(202202140841)]
public class AddReviewerCommentsFieldToSelfassessment : Migration
{
public override void Up()
{
Alter.Table("SelfAssessments")
.AddColumn("ReviewerCommentsLabel").AsString(50).Nullable();
}

public override void Down()
{
Delete.Column("ReviewerCommentsLabel").FromTable("SelfAssessments");
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ public IEnumerable<CurrentSelfAssessment> GetSelfAssessmentsForCandidate(int can
SA.IncludesSignposting,
SA.IncludeRequirementsFilters,
SA.SupervisorResultsReview AS IsSupervisorResultsReviewed,
SA.ReviewerCommentsLabel,
COALESCE(SA.Vocabulary, 'Capability') AS Vocabulary,
COUNT(C.ID) AS NumberOfCompetencies,
CA.StartedDate,
Expand All @@ -30,15 +31,16 @@ public IEnumerable<CurrentSelfAssessment> GetSelfAssessmentsForCandidate(int can
1 AS IsSelfAssessment,
CA.SubmittedDate
FROM CandidateAssessments CA
JOIN SelfAssessments SA
JOIN SelfAssessments SA
ON CA.SelfAssessmentID = SA.ID
INNER JOIN SelfAssessmentStructure AS SAS
ON CA.SelfAssessmentID = SAS.SelfAssessmentID
INNER JOIN Competencies AS C
ON SAS.CompetencyID = C.ID
WHERE CA.CandidateID = @candidateId AND CA.RemovedDate IS NULL AND CA.CompletedDate IS NULL
GROUP BY
CA.SelfAssessmentID, SA.Name, SA.Description, SA.IncludesSignposting, SA.IncludeRequirementsFilters, SA.SupervisorResultsReview,
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",
Expand All @@ -59,6 +61,7 @@ GROUP BY
SA.IncludeRequirementsFilters,
SA.SupervisorResultsReview AS IsSupervisorResultsReviewed,
SA.SupervisorSelfAssessmentReview,
SA.ReviewerCommentsLabel,
SA.EnforceRoleRequirementsForSignOff,
COALESCE(SA.Vocabulary, 'Capability') AS Vocabulary,
COUNT(C.ID) AS NumberOfCompetencies,
Expand Down Expand Up @@ -114,7 +117,8 @@ GROUP BY
CA.StartedDate, CA.LastAccessed, CA.CompleteByDate,
CA.ID, CA.UserBookmark, CA.UnprocessedUpdates,
CA.LaunchCount, CA.SubmittedDate, SA.LinearNavigation, SA.UseDescriptionExpanders,
SA.ManageOptionalCompetenciesPrompt, SA.SupervisorSelfAssessmentReview, SA.SupervisorResultsReview, SA.EnforceRoleRequirementsForSignOff, SA.ManageSupervisorsDescription",
SA.ManageOptionalCompetenciesPrompt, SA.SupervisorSelfAssessmentReview, SA.SupervisorResultsReview,
SA.ReviewerCommentsLabel,SA.EnforceRoleRequirementsForSignOff, SA.ManageSupervisorsDescription",
new { candidateId, selfAssessmentId }
);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -200,7 +200,8 @@ int candidateAssessmentSupervisorVerificationId
sar.ID,
sstrc.CompetencyGroupID,
sea.Vocabulary,
sasv.SignedOff
sasv.SignedOff,
sea.ReviewerCommentsLabel
FROM SelfAssessmentResultSupervisorVerifications AS sasv
INNER JOIN SelfAssessmentResults AS sar
ON sasv.SelfAssessmentResultId = sar.ID
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,5 +18,6 @@ public class CurrentSelfAssessment : SelfAssessment
public string? SignOffRequestorStatement { get; set; }
public bool EnforceRoleRequirementsForSignOff { get; set; }
public string? ManageSupervisorsDescription { get; set; }
public string? ReviewerCommentsLabel { get; set; }
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -17,5 +17,6 @@ public class SupervisorComment
public int? CompetencyGroupID { get; set; }
public string? Vocabulary { get; set; }
public bool SignedOff { get; set; }
public string? ReviewerCommentsLabel { get; set; }
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ public class DelegateSelfAssessment
public string? ProfessionalGroup { get; set; }
public string? QuestionLabel { get; set; }
public string? DescriptionLabel { get; set; }
public string? ReviewerCommentsLabel { get; set; }
public string? SubGroup { get; set; }
public string? RoleProfile { get; set; }
public int SignOffRequested { get; set; }
Expand Down
8 changes: 4 additions & 4 deletions DigitalLearningSolutions.Data/Services/SupervisorService.cs
Original file line number Diff line number Diff line change
Expand Up @@ -276,7 +276,7 @@ FROM CandidateAssessmentSupervisors AS cas INNER JOIN
public DelegateSelfAssessment GetSelfAssessmentBaseByCandidateAssessmentId(int candidateAssessmentId)
{
return connection.Query<DelegateSelfAssessment>(
@$"SELECT ca.ID, sa.ID AS SelfAssessmentID, sa.Name AS RoleName, sa.QuestionLabel, sa.DescriptionLabel,
@$"SELECT ca.ID, sa.ID AS SelfAssessmentID, sa.Name AS RoleName, sa.QuestionLabel, sa.DescriptionLabel, sa.ReviewerCommentsLabel,
sa.SupervisorSelfAssessmentReview, sa.SupervisorResultsReview, ca.StartedDate,
COALESCE(ca.LastAccessed, ca.StartedDate) AS LastAccessed,
ca.CompleteByDate, ca.LaunchCount, ca.CompletedDate,
Expand Down Expand Up @@ -349,7 +349,7 @@ FROM SelfAssessmentResults AS sar2
public DelegateSelfAssessment GetSelfAssessmentByCandidateAssessmentId(int candidateAssessmentId, int adminId)
{
return connection.Query<DelegateSelfAssessment>(
@$"SELECT ca.ID, sa.ID AS SelfAssessmentID, sa.Name AS RoleName, sa.SupervisorSelfAssessmentReview, sa.SupervisorResultsReview, COALESCE (sasr.RoleName, 'Supervisor') AS SupervisorRoleTitle, ca.StartedDate, ca.LastAccessed, ca.CompleteByDate, ca.LaunchCount, ca.CompletedDate, r.RoleProfile, sg.SubGroup, pg.ProfessionalGroup, sa.SupervisorResultsReview AS IsSupervisorResultsReviewed,
@$"SELECT ca.ID, sa.ID AS SelfAssessmentID, sa.Name AS RoleName, sa.SupervisorSelfAssessmentReview, sa.SupervisorResultsReview, sa.ReviewerCommentsLabel, COALESCE (sasr.RoleName, 'Supervisor') AS SupervisorRoleTitle, ca.StartedDate, ca.LastAccessed, ca.CompleteByDate, ca.LaunchCount, ca.CompletedDate, r.RoleProfile, sg.SubGroup, pg.ProfessionalGroup, sa.SupervisorResultsReview AS IsSupervisorResultsReviewed,
(SELECT COUNT(*) AS Expr1
FROM CandidateAssessmentSupervisorVerifications AS casv
WHERE (CandidateAssessmentSupervisorID = cas.ID) AND (Requested IS NOT NULL) AND (Verified IS NULL)) AS SignOffRequested,
Expand Down Expand Up @@ -597,7 +597,7 @@ FROM CandidateAssessmentSupervisors
public SelfAssessmentResultSummary GetSelfAssessmentResultSummary(int candidateAssessmentId, int supervisorDelegateId)
{
return connection.Query<SelfAssessmentResultSummary>(
@"SELECT ca.ID, ca.SelfAssessmentID, sa.Name AS RoleName, COALESCE (sasr.SelfAssessmentReview, 1) AS SelfAssessmentReview, COALESCE (sasr.ResultsReview, 1) AS SupervisorResultsReview, COALESCE (sasr.RoleName, 'Supervisor') AS SupervisorRoleTitle, ca.StartedDate,
@"SELECT ca.ID, ca.SelfAssessmentID, sa.Name AS RoleName, sa.ReviewerCommentsLabel, COALESCE (sasr.SelfAssessmentReview, 1) AS SelfAssessmentReview, COALESCE (sasr.ResultsReview, 1) AS SupervisorResultsReview, COALESCE (sasr.RoleName, 'Supervisor') AS SupervisorRoleTitle, ca.StartedDate,
ca.LastAccessed, ca.CompleteByDate, ca.LaunchCount, ca.CompletedDate, npg.ProfessionalGroup, nsg.SubGroup, nr.RoleProfile, casv.ID AS CandidateAssessmentSupervisorVerificationId,
(SELECT COUNT(sas1.CompetencyID) AS CompetencyAssessmentQuestionCount
FROM SelfAssessmentStructure AS sas1 INNER JOIN
Expand Down Expand Up @@ -741,4 +741,4 @@ FROM SelfAssessmentResults AS sar2
ORDER BY AdminUsers.Surname, AdminUsers.Forename", new { candidateAssessmentId });
}
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -343,6 +343,7 @@ public IActionResult SelfAssessmentOverview(int selfAssessmentId, string vocabul
ViewBag.SupervisorSelfAssessmentReview = assessment.SupervisorSelfAssessmentReview;
return View("SelfAssessments/SelfAssessmentOverview", model);
}
[HttpPost]
[SetDlsSubApplication(nameof(DlsSubApplication.LearningPortal))]
[Route("/LearningPortal/SelfAssessment/{selfAssessmentId:int}/CompleteBy")]
public IActionResult SetSelfAssessmentCompleteByDate(int selfAssessmentId, EditCompleteByDateFormData formData)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@
</h2>
}
</div>
<partial name="_ComperencyFlags" model="Model.Competency.CompetencyFlags" />
<partial name="_CompetencyFlags" model="Model.Competency.CompetencyFlags" />
<div class="nhsuk-u-padding-4"></div>
@foreach (var question in @Model.Competency.AssessmentQuestions)
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@

<div id="fc-@Model.FrameworkCompetency.Id" class="nhsuk-card nhsuk-u-margin-bottom-5 nhsuk-u-margin-left-3">
<div class="nhsuk-card__content">
<partial name="_ComperencyFlags" model="Model.CompetencyFlags" />
<partial name="_CompetencyFlags" model="Model.CompetencyFlags" />
@if (Model.FrameworkCompetency.Description != null)
{
<h4>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@
}
}
</div>
<partial name="_ComperencyFlags" model="Model.Competency.CompetencyFlags" />
<partial name="_CompetencyFlags" model="Model.Competency.CompetencyFlags" />
<form asp-action="SelfAssessmentCompetency" asp-route-competencyNumber="@Model.CompetencyNumber" asp-route-competencyId="@Model.Competency.Id" asp-route-competencyGroupId="@Model.Competency.CompetencyGroupID">
@foreach (var question in @Model.Competency.AssessmentQuestions.Select((value, i) => new { i, value }))
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -116,7 +116,7 @@
}
</style>
<partial name="SelfAssessments/_OverviewTable"
view-data="@(new ViewDataDictionary(ViewData) { { "linearNavigation", Model.SelfAssessment.LinearNavigation }, { "selfAssessment", Model.SelfAssessment } })"
view-data="@(new ViewDataDictionary(ViewData) { { "linearNavigation", Model.SelfAssessment.LinearNavigation }, { "selfAssessment", Model.SelfAssessment }, { "ReviewerCommentsLabel", Model.SelfAssessment.ReviewerCommentsLabel } })"
model="competencyGroup" />


Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,7 @@
</div>
<div class="nhsuk-summary-list__row">
<dt class="nhsuk-summary-list__key">
Confirmer comments
@(Model.SupervisorComment.ReviewerCommentsLabel == null ? "Reviewer comments": Model.SupervisorComment.ReviewerCommentsLabel.ToString())
</dt>
<dd class="nhsuk-summary-list__value">
@Model.SupervisorComment.Comments
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@
<tbody class="nhsuk-table__body row-outer" id="comp-@competency.RowNo">
<tr role="row" class="nhsuk-table__row first-row">
<td role="cell" rowspan="@competency.AssessmentQuestions.Count()" class="nhsuk-table__cell">
<partial name="_ComperencyFlags"
<partial name="_CompetencyFlags"
model="competency.CompetencyFlags"
view-data="@(new ViewDataDictionary(ViewData) {{ "cssClass", $"{(competency.AlwaysShowDescription ? "" : "nhsuk-u-padding-left-4")}" }})" />
@if (competency.Description != null && !competency.AlwaysShowDescription)
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,12 @@
@using DigitalLearningSolutions.Data.Models.SelfAssessments;
@model AssessmentQuestion

@{
string commentsLinkText = "View notes";
if(ViewData["ReviewerCommentsLabel"] != null)
{
commentsLinkText = ViewData["ReviewerCommentsLabel"].ToString();
}
}

<td role="cell" class="nhsuk-table__cell nhsuk-u-font-size-16">
<span class="nhsuk-table-responsive__heading">Questions </span>
Expand All @@ -24,7 +30,7 @@
asp-action="SupervisorComments" asp-route-selfAssessmentId="@ViewContext.RouteData.Values["selfAssessmentId"]"
asp-route-competencyNumber="@ViewData["competencyNumber"]"
asp-route-resultId="@Model.ResultId">
View notes
@commentsLinkText
</a>
</div>
</div>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,15 +1,15 @@
@using DigitalLearningSolutions.Data.Models.Frameworks
@model IEnumerable<CompetencyFlag>
@if (Model?.Count() > 0)
{
<div class="nhsuk-u-margin-bottom-3">
@foreach (var flag in Model)
{
<span class="nhsuk-u-padding-right-2 @(flag == Model.First() ? ViewData["cssClass"]?.ToString() : String.Empty)">
<strong class="nhsuk-tag @flag.FlagTagClass">
@flag.FlagName
</strong>
</span>
}
</div>
}
@using DigitalLearningSolutions.Data.Models.Frameworks
@model IEnumerable<CompetencyFlag>
@if (Model?.Count() > 0)
{
<div class="nhsuk-u-margin-bottom-3">
@foreach (var flag in Model)
{
<span class="nhsuk-u-padding-right-2 @(ViewData["cssClass"]?.ToString())">
<strong class="nhsuk-tag @flag.FlagTagClass">
@flag.FlagName
</strong>
</span>
}
</div>
}
Original file line number Diff line number Diff line change
Expand Up @@ -147,7 +147,7 @@
</legend>
<input name="ResultSupervisorVerificationId" type="hidden" asp-for="ResultSupervisorVerificationId" />
<nhs-form-group nhs-validation-for="SupervisorComments">
<vc:text-area asp-for="SupervisorComments" character-count="null" label="Reviewer comments" rows="5" css-class="" hint-text="" populate-with-current-value="true" spell-check="false"></vc:text-area>
<vc:text-area asp-for="SupervisorComments" character-count="null" label=@(Model.DelegateSelfAssessment.ReviewerCommentsLabel == null ? "Reviewer comments": Model.DelegateSelfAssessment.ReviewerCommentsLabel.ToString()) rows="5" css-class="" hint-text="" populate-with-current-value="true" spell-check="false"></vc:text-area>
</nhs-form-group>

<nhs-form-group nhs-validation-for="SignedOff">
Expand Down Expand Up @@ -228,7 +228,7 @@ else if (ViewContext.RouteData.Values["viewMode"].ToString() == "View" && Model.
{
<div class="nhsuk-summary-list__row">
<dt class="nhsuk-summary-list__key">
Reviewer comments
@(Model.DelegateSelfAssessment.ReviewerCommentsLabel == null ? "Reviewer comments": Model.DelegateSelfAssessment.ReviewerCommentsLabel.ToString())
</dt>
<dd class="nhsuk-summary-list__value">
@Html.Raw(Model.SupervisorComments)
Expand All @@ -246,5 +246,4 @@ else if (ViewContext.RouteData.Values["viewMode"].ToString() == "View" && Model.
}

@section scripts {
<script src="@Url.Content("~/js/supervisor/assessmentVerify.js")" asp-append-version="true"></script>
}
<script src="@Url.Content("~/js/supervisor/assessmentVerify.js")" asp-append-version="true"></script>}
Original file line number Diff line number Diff line change
Expand Up @@ -104,7 +104,7 @@
<tr role="row" class="nhsuk-table__row first-row">
<td role="cell" rowspan="@competency.AssessmentQuestions.Count()" class="nhsuk-table__cell nhsuk-u-font-size-16">
<span class="nhsuk-table-responsive__heading">@competency.Vocabulary </span>
<partial name="_ComperencyFlags" model="competency.CompetencyFlags" />
<partial name="_CompetencyFlags" model="competency.CompetencyFlags" />
@if (competency.Description != null && !competency.AlwaysShowDescription)
{
<details class="nhsuk-details">
Expand Down Expand Up @@ -135,14 +135,14 @@
</td>
<partial name="Shared/_AssessmentQuestionReviewCells"
model="competency.AssessmentQuestions.First()"
view-data="@(new ViewDataDictionary(ViewData) {{ "isSupervisorResultsReviewed", Model.IsSupervisorResultsReviewed }})" />
view-data="@(new ViewDataDictionary(ViewData) {{ "isSupervisorResultsReviewed", Model.IsSupervisorResultsReviewed }, { "ReviewerCommentsLabel", Model.DelegateSelfAssessment.ReviewerCommentsLabel} } )" />
</tr>
@foreach (var question in competency.AssessmentQuestions.Skip(1))
{
<tr role="row" class="nhsuk-table__row">
<partial name="Shared/_AssessmentQuestionReviewCells"
model="question"
view-data="@(new ViewDataDictionary(ViewData) {{ "isSupervisorResultsReviewed", Model.IsSupervisorResultsReviewed }})" />
view-data="@(new ViewDataDictionary(ViewData) {{ "isSupervisorResultsReviewed", Model.IsSupervisorResultsReviewed }, { "ReviewerCommentsLabel", Model.DelegateSelfAssessment.ReviewerCommentsLabel} } )" />
</tr>
}
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,12 @@
@using DigitalLearningSolutions.Data.Models.SelfAssessments;
@model AssessmentQuestion
@{
var actionLinkText = Model.Requested != null && Model.Verified == null ? "Confirm" : "View";
if (!String.IsNullOrEmpty(Model.SupportingComments) || !String.IsNullOrEmpty(Model.SupervisorComments))
{
actionLinkText += " (comments)";
var actionLinkText = Model.Requested != null && Model.Verified == null ? "Confirm" : "View";
if (!String.IsNullOrEmpty(Model.SupportingComments) || !String.IsNullOrEmpty(Model.SupervisorComments))
{
var commentStr = ViewData["ReviewerCommentsLabel"] ?? "comments";
string commentString = commentStr.ToString();
actionLinkText += " (" + commentString.ToLower() + ")";
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -165,7 +165,7 @@
</legend>
<input type="hidden" asp-for="CandidateAssessmentSupervisorVerificationId" />
<nhs-form-group nhs-validation-for="SupervisorComments">
<vc:text-area asp-for="SupervisorComments" character-count="null" label="Reviewer comments" rows="5" css-class="" hint-text="" populate-with-current-value="true" spell-check="false"></vc:text-area>
<vc:text-area asp-for="SupervisorComments" character-count="null" label="@(Model.SelfAssessmentResultSummary.ReviewerCommentsLabel == null ? "Reviewer comments": Model.SelfAssessmentResultSummary.ReviewerCommentsLabel.ToString())" rows="5" css-class="" hint-text="" populate-with-current-value="true" spell-check="false"></vc:text-area>
</nhs-form-group>

<nhs-form-group nhs-validation-for="SignedOff">
Expand Down