Skip to content

Commit 76e103f

Browse files
authored
Merge pull request #2860 from TechnologyEnhancedLearning/Develop/Feature/TD-4325-AddedFilterForOptional
TD 4325 Added filter for optional
2 parents 937bff2 + 593a67b commit 76e103f

File tree

2 files changed

+12
-8
lines changed

2 files changed

+12
-8
lines changed

DigitalLearningSolutions.Web/Extensions/EnumExtensions.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,8 @@ public static string GetDescription(this SelfAssessmentCompetencyFilter status,
1919
{
2020
switch (status)
2121
{
22+
case SelfAssessmentCompetencyFilter.Optional:
23+
return "Optional";
2224
case SelfAssessmentCompetencyFilter.RequiresSelfAssessment:
2325
return "Requires self assessment";
2426
case SelfAssessmentCompetencyFilter.SelfAssessed:

DigitalLearningSolutions.Web/Helpers/CompetencyFilterHelper.cs

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -34,22 +34,23 @@ private static void ApplyResponseStatusFilters(ref IEnumerable<Competency> compe
3434
{
3535
var filteredCompetencies = competencies;
3636
var appliedResponseStatusFilters = filters.Where(f => IsResponseStatusFilter(f));
37+
3738
if (appliedResponseStatusFilters.Any() || searchText.Length > 0)
3839
{
3940
var wordsInSearchText = searchText.Split().Where(w => w != string.Empty);
40-
filters = appliedResponseStatusFilters;
4141
filteredCompetencies = from c in competencies
4242
let searchTextMatchesGroup = wordsInSearchText.All(w => c.CompetencyGroup?.Contains(w, StringComparison.CurrentCultureIgnoreCase) ?? false)
4343
let searchTextMatchesCompetencyDescription = wordsInSearchText.All(w => c.Description?.Contains(w, StringComparison.CurrentCultureIgnoreCase) ?? false)
4444
let searchTextMatchesCompetencyName = wordsInSearchText.All(w => c.Name?.Contains(w, StringComparison.CurrentCultureIgnoreCase) ?? false)
45-
let responseStatusFilterMatchesAnyQuestion =
46-
(filters.Contains((int)SelfAssessmentCompetencyFilter.RequiresSelfAssessment) && c.AssessmentQuestions.Any(q => q.ResultId == null))
47-
|| (filters.Contains((int)SelfAssessmentCompetencyFilter.SelfAssessed) && c.AssessmentQuestions.Any(q => q.ResultId != null && q.Requested == null && q.SignedOff == null))
48-
|| (filters.Contains((int)SelfAssessmentCompetencyFilter.ConfirmationRequested) && c.AssessmentQuestions.Any(q => q.Verified == null && q.Requested != null))
49-
|| (filters.Contains((int)SelfAssessmentCompetencyFilter.ConfirmationRejected) && c.AssessmentQuestions.Any(q => q.Verified.HasValue && q.SignedOff != true))
50-
|| (filters.Contains((int)SelfAssessmentCompetencyFilter.Verified) && c.AssessmentQuestions.Any(q => q.Verified.HasValue && q.SignedOff == true))
45+
let responseStatusFilterMatchesAll =
46+
(!filters.Contains((int)SelfAssessmentCompetencyFilter.RequiresSelfAssessment) || c.AssessmentQuestions.Any(q => q.ResultId == null))
47+
&& (!filters.Contains((int)SelfAssessmentCompetencyFilter.SelfAssessed) || c.AssessmentQuestions.Any(q => q.ResultId != null && q.Requested == null && q.SignedOff == null))
48+
&& (!filters.Contains((int)SelfAssessmentCompetencyFilter.ConfirmationRequested) || c.AssessmentQuestions.Any(q => q.Verified == null && q.Requested != null))
49+
&& (!filters.Contains((int)SelfAssessmentCompetencyFilter.ConfirmationRejected) || c.AssessmentQuestions.Any(q => q.Verified.HasValue && q.SignedOff != true))
50+
&& (!filters.Contains((int)SelfAssessmentCompetencyFilter.Verified) || c.AssessmentQuestions.Any(q => q.Verified.HasValue && q.SignedOff == true))
51+
&& (!filters.Contains((int)SelfAssessmentCompetencyFilter.Optional) || c.Optional)
5152
where (wordsInSearchText.Count() == 0 || searchTextMatchesGroup || searchTextMatchesCompetencyDescription || searchTextMatchesCompetencyName)
52-
&& (!appliedResponseStatusFilters.Any() || responseStatusFilterMatchesAnyQuestion)
53+
&& (!appliedResponseStatusFilters.Any() || responseStatusFilterMatchesAll)
5354
select c;
5455
}
5556
competencies = filteredCompetencies;
@@ -111,6 +112,7 @@ public static bool IsResponseStatusFilter(int filter)
111112
{
112113
var responseStatusFilters = new int[]
113114
{
115+
(int)SelfAssessmentCompetencyFilter.Optional,
114116
(int)SelfAssessmentCompetencyFilter.RequiresSelfAssessment,
115117
(int)SelfAssessmentCompetencyFilter.SelfAssessed,
116118
(int)SelfAssessmentCompetencyFilter.Verified,

0 commit comments

Comments
 (0)