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