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