Skip to content

Commit afffbc6

Browse files
authored
Merge pull request #3386 from TechnologyEnhancedLearning/Develop/Fixes/TD-5361-SwitchfilterlogicfromANDtoORtomatchanyselectedfilter
TD-5361 Changing the Supervisor ApplyResponseStatusFilters method
2 parents 1b018f0 + 2c050b1 commit afffbc6

File tree

2 files changed

+2
-105
lines changed

2 files changed

+2
-105
lines changed

DigitalLearningSolutions.Web/Helpers/CompetencyFilterHelper.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ public static IEnumerable<Competency> FilterCompetencies(IEnumerable<Competency>
3030
return filteredCompetencies;
3131
}
3232

33-
private static void ApplyResponseStatusFilters(ref IEnumerable<Competency> competencies, IEnumerable<int> filters, string searchText = "")
33+
public static void ApplyResponseStatusFilters(ref IEnumerable<Competency> competencies, IEnumerable<int> filters, string searchText = "")
3434
{
3535
var appliedResponseStatusFilters = filters.Where(IsResponseStatusFilter).ToList();
3636

DigitalLearningSolutions.Web/Helpers/SupervisorCompetencyFilterHelper.cs

Lines changed: 1 addition & 104 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ public static IEnumerable<Competency> FilterCompetencies(IEnumerable<Competency>
1717
var searchText = search.SearchText?.Trim() ?? string.Empty;
1818
var filters = search.AppliedFilters?.Select(f => int.Parse(f.FilterValue)) ?? Enumerable.Empty<int>();
1919
search.CompetencyFlags = competencyFlags.ToList();
20-
ApplyResponseStatusFilters(ref filteredCompetencies, filters, searchText);
20+
CompetencyFilterHelper.ApplyResponseStatusFilters(ref filteredCompetencies, filters, searchText);
2121
UpdateRequirementsFilterDropdownOptionsVisibility(search, filteredCompetencies);
2222
ApplyRequirementsFilters(ref filteredCompetencies, filters);
2323

@@ -28,109 +28,6 @@ public static IEnumerable<Competency> FilterCompetencies(IEnumerable<Competency>
2828
}
2929
return filteredCompetencies;
3030
}
31-
32-
private static void ApplyResponseStatusFilters(ref IEnumerable<Competency> competencies, IEnumerable<int> filters, string searchText = "")
33-
{
34-
var filteredCompetencies = competencies;
35-
var appliedResponseStatusFilters = filters.Where(f => IsResponseStatusFilter(f));
36-
if (appliedResponseStatusFilters.Any() || searchText.Length > 0)
37-
{
38-
var wordsInSearchText = searchText.Split().Where(w => w != string.Empty);
39-
filters = appliedResponseStatusFilters;
40-
if (filters.Contains((int)SelfAssessmentCompetencyFilter.Verified) && filters.Contains((int)SelfAssessmentCompetencyFilter.Optional))
41-
{
42-
filteredCompetencies = from c in competencies
43-
let searchTextMatchesGroup = wordsInSearchText.All(w => c.CompetencyGroup?.Contains(w, StringComparison.CurrentCultureIgnoreCase) ?? false)
44-
let searchTextMatchesCompetencyDescription = wordsInSearchText.All(w => c.Description?.Contains(w, StringComparison.CurrentCultureIgnoreCase) ?? false)
45-
let searchTextMatchesCompetencyName = wordsInSearchText.All(w => c.Name?.Contains(w, StringComparison.CurrentCultureIgnoreCase) ?? false)
46-
let responseStatusFilterMatchesAnyQuestion =
47-
(filters.Contains((int)SelfAssessmentCompetencyFilter.Verified) && c.AssessmentQuestions.Any(q => q.Verified.HasValue && q.SignedOff == true) && c.Optional)
48-
where (wordsInSearchText.Count() == 0 || searchTextMatchesGroup || searchTextMatchesCompetencyDescription || searchTextMatchesCompetencyName)
49-
&& (!appliedResponseStatusFilters.Any() || responseStatusFilterMatchesAnyQuestion)
50-
select c;
51-
}
52-
else if (filters.Contains((int)SelfAssessmentCompetencyFilter.ConfirmationRejected) && filters.Contains((int)SelfAssessmentCompetencyFilter.Optional))
53-
{
54-
filteredCompetencies = from c in competencies
55-
let searchTextMatchesGroup = wordsInSearchText.All(w => c.CompetencyGroup?.Contains(w, StringComparison.CurrentCultureIgnoreCase) ?? false)
56-
let searchTextMatchesCompetencyDescription = wordsInSearchText.All(w => c.Description?.Contains(w, StringComparison.CurrentCultureIgnoreCase) ?? false)
57-
let searchTextMatchesCompetencyName = wordsInSearchText.All(w => c.Name?.Contains(w, StringComparison.CurrentCultureIgnoreCase) ?? false)
58-
let responseStatusFilterMatchesAnyQuestion =
59-
(filters.Contains((int)SelfAssessmentCompetencyFilter.ConfirmationRejected) && c.AssessmentQuestions.Any(q => q.Verified.HasValue && q.SignedOff != true) && c.Optional)
60-
where (wordsInSearchText.Count() == 0 || searchTextMatchesGroup || searchTextMatchesCompetencyDescription || searchTextMatchesCompetencyName)
61-
&& (!appliedResponseStatusFilters.Any() || responseStatusFilterMatchesAnyQuestion)
62-
select c;
63-
}
64-
else if (filters.Contains((int)SelfAssessmentCompetencyFilter.PendingConfirmation) && filters.Contains((int)SelfAssessmentCompetencyFilter.Optional))
65-
{
66-
filteredCompetencies = from c in competencies
67-
let searchTextMatchesGroup = wordsInSearchText.All(w => c.CompetencyGroup?.Contains(w, StringComparison.CurrentCultureIgnoreCase) ?? false)
68-
let searchTextMatchesCompetencyDescription = wordsInSearchText.All(w => c.Description?.Contains(w, StringComparison.CurrentCultureIgnoreCase) ?? false)
69-
let searchTextMatchesCompetencyName = wordsInSearchText.All(w => c.Name?.Contains(w, StringComparison.CurrentCultureIgnoreCase) ?? false)
70-
let responseStatusFilterMatchesAnyQuestion =
71-
(filters.Contains((int)SelfAssessmentCompetencyFilter.PendingConfirmation) && c.AssessmentQuestions.Any(q => q.ResultId != null && q.Verified == null && q.Requested != null && q.UserIsVerifier == false) && c.Optional)
72-
where (wordsInSearchText.Count() == 0 || searchTextMatchesGroup || searchTextMatchesCompetencyDescription || searchTextMatchesCompetencyName)
73-
&& (!appliedResponseStatusFilters.Any() || responseStatusFilterMatchesAnyQuestion)
74-
select c;
75-
}
76-
else if (filters.Contains((int)SelfAssessmentCompetencyFilter.AwaitingConfirmation) && filters.Contains((int)SelfAssessmentCompetencyFilter.Optional))
77-
{
78-
filteredCompetencies = from c in competencies
79-
let searchTextMatchesGroup = wordsInSearchText.All(w => c.CompetencyGroup?.Contains(w, StringComparison.CurrentCultureIgnoreCase) ?? false)
80-
let searchTextMatchesCompetencyDescription = wordsInSearchText.All(w => c.Description?.Contains(w, StringComparison.CurrentCultureIgnoreCase) ?? false)
81-
let searchTextMatchesCompetencyName = wordsInSearchText.All(w => c.Name?.Contains(w, StringComparison.CurrentCultureIgnoreCase) ?? false)
82-
let responseStatusFilterMatchesAnyQuestion =
83-
(filters.Contains((int)SelfAssessmentCompetencyFilter.AwaitingConfirmation) && c.AssessmentQuestions.Any(q => q.Verified == null && q.Requested != null && q.UserIsVerifier == true) && c.Optional)
84-
where (wordsInSearchText.Count() == 0 || searchTextMatchesGroup || searchTextMatchesCompetencyDescription || searchTextMatchesCompetencyName)
85-
&& (!appliedResponseStatusFilters.Any() || responseStatusFilterMatchesAnyQuestion)
86-
select c;
87-
}
88-
else if (filters.Contains((int)SelfAssessmentCompetencyFilter.RequiresSelfAssessment) && filters.Contains((int)SelfAssessmentCompetencyFilter.Optional))
89-
{
90-
filteredCompetencies = from c in competencies
91-
let searchTextMatchesGroup = wordsInSearchText.All(w => c.CompetencyGroup?.Contains(w, StringComparison.CurrentCultureIgnoreCase) ?? false)
92-
let searchTextMatchesCompetencyDescription = wordsInSearchText.All(w => c.Description?.Contains(w, StringComparison.CurrentCultureIgnoreCase) ?? false)
93-
let searchTextMatchesCompetencyName = wordsInSearchText.All(w => c.Name?.Contains(w, StringComparison.CurrentCultureIgnoreCase) ?? false)
94-
let responseStatusFilterMatchesAnyQuestion =
95-
(filters.Contains((int)SelfAssessmentCompetencyFilter.RequiresSelfAssessment) && c.AssessmentQuestions.Any(q => q.ResultId == null) && c.Optional)
96-
where (wordsInSearchText.Count() == 0 || searchTextMatchesGroup || searchTextMatchesCompetencyDescription || searchTextMatchesCompetencyName)
97-
&& (!appliedResponseStatusFilters.Any() || responseStatusFilterMatchesAnyQuestion)
98-
select c;
99-
}
100-
else if (filters.Contains((int)SelfAssessmentCompetencyFilter.SelfAssessed) && filters.Contains((int)SelfAssessmentCompetencyFilter.Optional))
101-
{
102-
filteredCompetencies = from c in competencies
103-
let searchTextMatchesGroup = wordsInSearchText.All(w => c.CompetencyGroup?.Contains(w, StringComparison.CurrentCultureIgnoreCase) ?? false)
104-
let searchTextMatchesCompetencyDescription = wordsInSearchText.All(w => c.Description?.Contains(w, StringComparison.CurrentCultureIgnoreCase) ?? false)
105-
let searchTextMatchesCompetencyName = wordsInSearchText.All(w => c.Name?.Contains(w, StringComparison.CurrentCultureIgnoreCase) ?? false)
106-
let responseStatusFilterMatchesAnyQuestion =
107-
(filters.Contains((int)SelfAssessmentCompetencyFilter.SelfAssessed) && c.AssessmentQuestions.Any(q => q.ResultId != null && q.Requested == null && q.SignedOff == null) && c.Optional)
108-
where (wordsInSearchText.Count() == 0 || searchTextMatchesGroup || searchTextMatchesCompetencyDescription || searchTextMatchesCompetencyName)
109-
&& (!appliedResponseStatusFilters.Any() || responseStatusFilterMatchesAnyQuestion)
110-
select c;
111-
}
112-
else
113-
{
114-
filteredCompetencies = from c in competencies
115-
let searchTextMatchesGroup = wordsInSearchText.All(w => c.CompetencyGroup?.Contains(w, StringComparison.CurrentCultureIgnoreCase) ?? false)
116-
let searchTextMatchesCompetencyDescription = wordsInSearchText.All(w => c.Description?.Contains(w, StringComparison.CurrentCultureIgnoreCase) ?? false)
117-
let searchTextMatchesCompetencyName = wordsInSearchText.All(w => c.Name?.Contains(w, StringComparison.CurrentCultureIgnoreCase) ?? false)
118-
let responseStatusFilterMatchesAnyQuestion =
119-
(filters.Contains((int)SelfAssessmentCompetencyFilter.RequiresSelfAssessment) && c.AssessmentQuestions.Any(q => q.ResultId == null))
120-
|| (filters.Contains((int)SelfAssessmentCompetencyFilter.SelfAssessed) && c.AssessmentQuestions.Any(q => q.ResultId != null && q.Requested == null && q.SignedOff == null))
121-
|| (filters.Contains((int)SelfAssessmentCompetencyFilter.PendingConfirmation) && c.AssessmentQuestions.Any(q => q.ResultId != null && q.Verified == null && q.Requested != null && q.UserIsVerifier == false))
122-
|| (filters.Contains((int)SelfAssessmentCompetencyFilter.ConfirmationRejected) && c.AssessmentQuestions.Any(q => q.Verified.HasValue && q.SignedOff != true))
123-
|| (filters.Contains((int)SelfAssessmentCompetencyFilter.AwaitingConfirmation) && c.AssessmentQuestions.Any(q => q.Verified == null && q.Requested != null && q.UserIsVerifier == true))
124-
|| (filters.Contains((int)SelfAssessmentCompetencyFilter.Verified) && c.AssessmentQuestions.Any(q => q.Verified.HasValue && q.SignedOff == true))
125-
|| (filters.Contains((int)SelfAssessmentCompetencyFilter.Optional) && c.Optional)
126-
where (wordsInSearchText.Count() == 0 || searchTextMatchesGroup || searchTextMatchesCompetencyDescription || searchTextMatchesCompetencyName)
127-
&& (!appliedResponseStatusFilters.Any() || responseStatusFilterMatchesAnyQuestion)
128-
select c;
129-
}
130-
}
131-
competencies = filteredCompetencies;
132-
}
133-
13431
private static void ApplyRequirementsFilters(ref IEnumerable<Competency> competencies, IEnumerable<int> filters)
13532
{
13633
var filteredCompetencies = competencies;

0 commit comments

Comments
 (0)