Skip to content

Commit 8757b67

Browse files
authored
Merge pull request #3397 from TechnologyEnhancedLearning/Develop/Fixes/TD-5361-SwitchfilterlogicfromANDtoORtomatchanyselectedfilter
TD-5361 Seperating the filter method of the leaner and supervisor
2 parents 1e9e8a5 + 5178ecc commit 8757b67

File tree

2 files changed

+35
-2
lines changed

2 files changed

+35
-2
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-
public static void ApplyResponseStatusFilters(ref IEnumerable<Competency> competencies, IEnumerable<int> filters, string searchText = "")
33+
private 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: 34 additions & 1 deletion
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-
CompetencyFilterHelper.ApplyResponseStatusFilters(ref filteredCompetencies, filters, searchText);
20+
ApplyResponseStatusFilters(ref filteredCompetencies, filters, searchText);
2121
UpdateRequirementsFilterDropdownOptionsVisibility(search, filteredCompetencies);
2222
ApplyRequirementsFilters(ref filteredCompetencies, filters);
2323

@@ -28,6 +28,39 @@ public static IEnumerable<Competency> FilterCompetencies(IEnumerable<Competency>
2828
}
2929
return filteredCompetencies;
3030
}
31+
private static void ApplyResponseStatusFilters(ref IEnumerable<Competency> competencies, IEnumerable<int> filters, string searchText = "")
32+
{
33+
var appliedFilters = filters.Where(f => IsResponseStatusFilter(f)).ToList();
34+
var wordsInSearchText = searchText.Split(' ', StringSplitOptions.RemoveEmptyEntries);
35+
36+
if (!appliedFilters.Any() && string.IsNullOrWhiteSpace(searchText))
37+
return;
38+
39+
competencies = competencies.Where(c =>
40+
{
41+
// Search text match
42+
bool searchTextMatches = !wordsInSearchText.Any() ||
43+
wordsInSearchText.All(w =>
44+
(c.CompetencyGroup?.Contains(w, StringComparison.CurrentCultureIgnoreCase) ?? false) ||
45+
(c.Description?.Contains(w, StringComparison.CurrentCultureIgnoreCase) ?? false) ||
46+
(c.Name?.Contains(w, StringComparison.CurrentCultureIgnoreCase) ?? false)
47+
);
48+
49+
// All filters must match (AND)
50+
bool allFiltersMatch = appliedFilters.All(f =>
51+
(f == (int)SelfAssessmentCompetencyFilter.Verified && c.AssessmentQuestions.Any(q => q.Verified.HasValue && q.SignedOff == true)) ||
52+
(f == (int)SelfAssessmentCompetencyFilter.Optional && c.Optional) ||
53+
(f == (int)SelfAssessmentCompetencyFilter.ConfirmationRejected && c.AssessmentQuestions.Any(q => q.Verified.HasValue && q.SignedOff != true)) ||
54+
(f == (int)SelfAssessmentCompetencyFilter.PendingConfirmation && c.AssessmentQuestions.Any(q => q.ResultId != null && q.Verified == null && q.Requested != null && q.UserIsVerifier == false)) ||
55+
(f == (int)SelfAssessmentCompetencyFilter.AwaitingConfirmation && c.AssessmentQuestions.Any(q => q.Verified == null && q.Requested != null && q.UserIsVerifier == true)) ||
56+
(f == (int)SelfAssessmentCompetencyFilter.RequiresSelfAssessment && c.AssessmentQuestions.Any(q => q.ResultId == null)) ||
57+
(f == (int)SelfAssessmentCompetencyFilter.SelfAssessed && c.AssessmentQuestions.Any(q => q.ResultId != null && q.Requested == null && q.SignedOff == null))
58+
);
59+
60+
return searchTextMatches && allFiltersMatch;
61+
}).ToList();
62+
}
63+
3164
private static void ApplyRequirementsFilters(ref IEnumerable<Competency> competencies, IEnumerable<int> filters)
3265
{
3366
var filteredCompetencies = competencies;

0 commit comments

Comments
 (0)