Skip to content

Commit 3b56a0e

Browse files
authored
Merge pull request #574 from TechnologyEnhancedLearning/Develop/Features/CompetencyFrameworks
Develop/features/competency frameworks
2 parents 7304f29 + 2a206bf commit 3b56a0e

File tree

9 files changed

+40
-26
lines changed

9 files changed

+40
-26
lines changed

DigitalLearningSolutions.Data.Tests/TestHelpers/SelfAssessmentHelper.cs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,8 @@ public static AssessmentQuestion CreateDefaultAssessmentQuestion(
7070
int? result = null,
7171
int minValue = 0,
7272
int maxValue = 10,
73-
int assessmentQuestionInputTypeID = 1)
73+
int assessmentQuestionInputTypeID = 1,
74+
bool includeComments = true)
7475
{
7576
return new AssessmentQuestion()
7677
{
@@ -81,7 +82,8 @@ public static AssessmentQuestion CreateDefaultAssessmentQuestion(
8182
Result = result,
8283
MinValue = minValue,
8384
MaxValue = maxValue,
84-
AssessmentQuestionInputTypeID = assessmentQuestionInputTypeID
85+
AssessmentQuestionInputTypeID = assessmentQuestionInputTypeID,
86+
IncludeComments = true
8587
};
8688
}
8789

DigitalLearningSolutions.Data/Services/FrameworkService.cs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1069,8 +1069,7 @@ public AssessmentQuestionDetail GetAssessmentQuestionDetailById(int assessmentQu
10691069
return connection.QueryFirstOrDefault<AssessmentQuestionDetail>(
10701070
$@"{AssessmentQuestionFields}{AssessmentQuestionDetailFields}
10711071
{AssessmentQuestionTables}
1072-
WHERE AQ.ID = @assessmentQuestionId
1073-
ORDER BY AQ.Ordering", new { adminId, assessmentQuestionId }
1072+
WHERE AQ.ID = @assessmentQuestionId", new { adminId, assessmentQuestionId }
10741073
);
10751074
}
10761075
public LevelDescriptor GetLevelDescriptorForAssessmentQuestionId(int assessmentQuestionId, int adminId, int level)

DigitalLearningSolutions.Data/Services/SelfAssessmentService.cs

Lines changed: 16 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ public interface ISelfAssessmentService
1616
CurrentSelfAssessment? GetSelfAssessmentForCandidateById(int candidateId, int selfAssessmentId);
1717
Competency? GetNthCompetency(int n, int selfAssessmentId, int candidateId); // 1 indexed
1818
IEnumerable<LevelDescriptor> GetLevelDescriptorsForAssessmentQuestion(int assessmentQuestionId, int minValue, int maxValue, bool zeroBased);
19-
void SetResultForCompetency(int competencyId, int selfAssessmentId, int candidateId, int assessmentQuestionId, int result, string? supportingComments);
19+
void SetResultForCompetency(int competencyId, int selfAssessmentId, int candidateId, int assessmentQuestionId, int? result, string? supportingComments);
2020
IEnumerable<Competency> GetMostRecentResults(int selfAssessmentId, int candidateId);
2121
IEnumerable<Competency> GetCandidateAssessmentResultsById(int candidateAssessmentId, int adminId);
2222
IEnumerable<Competency> GetCandidateAssessmentResultsForReviewById(int candidateAssessmentId, int adminId);
@@ -46,6 +46,7 @@ public class SelfAssessmentService : ISelfAssessmentService
4646
s.AssessmentQuestionID,
4747
s.ID AS ResultID,
4848
s.Result,
49+
s.SupportingComments,
4950
sv.ID AS SelfAssessmentResultSupervisorVerificationId,
5051
sv.Requested,
5152
sv.Verified,
@@ -77,6 +78,7 @@ LEFT OUTER JOIN CompetencyAssessmentQuestionRoleRequirements rr
7778
s.AssessmentQuestionID,
7879
s.ID AS ResultID,
7980
s.Result,
81+
s.SupportingComments,
8082
sv.ID AS SelfAssessmentResultSupervisorVerificationId,
8183
sv.Requested,
8284
sv.Verified,
@@ -118,8 +120,10 @@ LEFT OUTER JOIN CompetencyAssessmentQuestionRoleRequirements rr
118120
AQ.MinValue,
119121
AQ.MaxValue,
120122
AQ.AssessmentQuestionInputTypeID,
123+
AQ.IncludeComments,
121124
LAR.ResultId,
122125
LAR.Result,
126+
LAR.SupportingComments,
123127
LAR.SelfAssessmentResultSupervisorVerificationId,
124128
LAR.Requested,
125129
LAR.Verified,
@@ -244,7 +248,7 @@ INNER JOIN CompetencyRowNumber AS CRN
244248
).FirstOrDefault();
245249
}
246250

247-
public void SetResultForCompetency(int competencyId, int selfAssessmentId, int candidateId, int assessmentQuestionId, int result, string? supportingComments)
251+
public void SetResultForCompetency(int competencyId, int selfAssessmentId, int candidateId, int assessmentQuestionId, int? result, string? supportingComments)
248252
{
249253
var assessmentQuestion = connection.QueryFirstOrDefault<Models.SelfAssessments.AssessmentQuestion>(
250254
@"SELECT ID, MinValue, MaxValue
@@ -262,16 +266,17 @@ FROM AssessmentQuestions
262266
}
263267
int minValue = assessmentQuestion.MinValue;
264268
int maxValue = assessmentQuestion.MaxValue;
265-
266-
if (result < minValue || result > maxValue)
269+
if (result != null)
267270
{
268-
logger.LogWarning(
269-
"Not saving self assessment result as result is invalid. " +
270-
$"{PrintResult(competencyId, selfAssessmentId, candidateId, assessmentQuestionId, result)}"
271-
);
272-
return;
271+
if (result < minValue || result > maxValue)
272+
{
273+
logger.LogWarning(
274+
"Not saving self assessment result as result is invalid. " +
275+
$"{PrintResult(competencyId, selfAssessmentId, candidateId, assessmentQuestionId, result)}"
276+
);
277+
return;
278+
}
273279
}
274-
275280
var numberOfAffectedRows = connection.Execute(
276281
@"IF EXISTS (
277282
SELECT * FROM CandidateAssessments AS CA
@@ -407,7 +412,7 @@ public void SetCompleteByDate(int selfAssessmentId, int candidateId, DateTime? c
407412
}
408413
}
409414

410-
private static string PrintResult(int competencyId, int selfAssessmentId, int candidateId, int assessmentQuestionId, int result)
415+
private static string PrintResult(int competencyId, int selfAssessmentId, int candidateId, int assessmentQuestionId, int? result)
411416
{
412417
return $"Competency id: {competencyId}, self assessment id: {selfAssessmentId}, candidate id: {candidateId}, " +
413418
$"assessment question id: {assessmentQuestionId}, result: {result}";

DigitalLearningSolutions.Web/Controllers/LearningPortalController/SelfAssessment.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -77,15 +77,15 @@ public IActionResult SelfAssessmentCompetency(int selfAssessmentId, ICollection<
7777

7878
foreach (var assessmentQuestion in assessmentQuestions)
7979
{
80-
if (assessmentQuestion.Result != null)
80+
if (assessmentQuestion.Result != null || assessmentQuestion.SupportingComments != null)
8181
{
8282
selfAssessmentService.SetResultForCompetency(
8383
competencyId,
8484
assessment.Id,
8585
User.GetCandidateIdKnownNotNull(),
8686
assessmentQuestion.Id,
8787
assessmentQuestion.Result.Value,
88-
null
88+
assessmentQuestion.SupportingComments
8989
);
9090
}
9191
}

DigitalLearningSolutions.Web/Styles/frameworks/frameworksShared.scss

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -368,9 +368,7 @@ h1.truncate-overflow::after {
368368
height: 56px;
369369
background: linear-gradient(to right, rgba(240, 244, 245, 0), rgba(240, 244, 245, 1) 50%);
370370
}
371-
.text-area-edit-90 {
372-
height:90px
373-
}
371+
374372
.nhsuk-warning-callout {
375373
&.callout-green {
376374
border-color: #cbe5a2;

DigitalLearningSolutions.Web/Styles/learningPortal/selfAssessment.scss

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -232,3 +232,6 @@ details.nhsuk-details {
232232
background-color: rgba(255, 249, 146, 0);
233233
}
234234
}
235+
.text-area-edit-90 {
236+
height: 90px
237+
}

DigitalLearningSolutions.Web/Views/Frameworks/Developer/CompetencyPreview.cshtml

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -58,12 +58,7 @@
5858
</div>
5959
@if (question.IncludeComments)
6060
{
61-
<div class="nhsuk-form-group">
62-
<label class="nhsuk-label" for="tb-supportingComments-@question.Id">
63-
Supporting comments:
64-
</label>
65-
<textarea class="nhsuk-input text-area-edit-90" placeholder="Optional" id="tb-supportingComments-@question.Id" asp-for="@question.SupportingComments" name="SupportingComments" type="text"></textarea>
66-
</div>
61+
<partial name="~/Views/LearningPortal/SelfAssessments/_CommentsInput.cshtml" model="question" view-data="@(new ViewDataDictionary(ViewData) { { "index", question.MinValue } })" />
6762
}
6863
}
6964

DigitalLearningSolutions.Web/Views/LearningPortal/SelfAssessments/SelfAssessmentCompetency.cshtml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,10 @@
4545
{
4646
<partial name="SelfAssessments/_RadioQuestion" model="question.value" view-data="@(new ViewDataDictionary(ViewData) { { "index", question.i } })" />
4747
}
48+
@if (question.value.IncludeComments)
49+
{
50+
<partial name="SelfAssessments/_CommentsInput" model="question.value" view-data="@(new ViewDataDictionary(ViewData) { { "index", question.i } })" />
51+
}
4852
}
4953
<div class="nhsuk-u-margin-top-4">
5054
Question @Model.CompetencyNumber of @Model.TotalNumberOfCompetencies
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
@using DigitalLearningSolutions.Data.Models.SelfAssessments
2+
@model AssessmentQuestion
3+
<div class="nhsuk-form-group">
4+
<label class="nhsuk-label" for="tb-supportingComments-@Model.Id">
5+
Supporting comments:
6+
</label>
7+
<textarea class="nhsuk-input text-area-edit-90" placeholder="Optional" id="tb-supportingComments-@Model.Id" asp-for="@Model.SupportingComments" name="[@ViewData["index"]].SupportingComments" type="text"></textarea>
8+
</div>

0 commit comments

Comments
 (0)