@@ -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