@@ -37,21 +37,96 @@ private static void ApplyResponseStatusFilters(ref IEnumerable<Competency> compe
3737            { 
3838                var  wordsInSearchText  =  searchText . Split ( ) . Where ( w =>  w  !=  string . Empty ) ; 
3939                filters  =  appliedResponseStatusFilters ; 
40-                 filteredCompetencies  =  from  c  in  competencies 
41-                                        let  searchTextMatchesGroup  =  wordsInSearchText . All ( w =>  c . CompetencyGroup ? . Contains ( w ,  StringComparison . CurrentCultureIgnoreCase )  ??  false ) 
42-                                        let  searchTextMatchesCompetencyDescription  =  wordsInSearchText . All ( w =>  c . Description ? . Contains ( w ,  StringComparison . CurrentCultureIgnoreCase )  ??  false ) 
43-                                        let  searchTextMatchesCompetencyName  =  wordsInSearchText . All ( w =>  c . Name ? . Contains ( w ,  StringComparison . CurrentCultureIgnoreCase )  ??  false ) 
44-                                        let  responseStatusFilterMatchesAnyQuestion  = 
45-                                           ( filters . Contains ( ( int ) SelfAssessmentCompetencyFilter . RequiresSelfAssessment )  &&  c . AssessmentQuestions . Any ( q =>  q . ResultId  ==  null ) ) 
46-                                        ||  ( filters . Contains ( ( int ) SelfAssessmentCompetencyFilter . SelfAssessed )  &&  c . AssessmentQuestions . Any ( q =>  q . ResultId  !=  null  &&  q . Requested  ==  null  &&  q . SignedOff  ==  null ) ) 
47-                                        ||  ( filters . Contains ( ( int ) SelfAssessmentCompetencyFilter . PendingConfirmation )  &&  c . AssessmentQuestions . Any ( q =>  q . ResultId  !=  null  &&   q . Verified  ==  null  &&  q . Requested  !=  null && q . UserIsVerifier == false ) ) 
48-                                        ||  ( filters . Contains ( ( int ) SelfAssessmentCompetencyFilter . ConfirmationRejected )  &&  c . AssessmentQuestions . Any ( q =>  q . Verified . HasValue  &&  q . SignedOff  !=  true ) ) 
49-                                        ||  ( filters . Contains ( ( int ) SelfAssessmentCompetencyFilter . AwaitingConfirmation )  &&  c . AssessmentQuestions . Any ( q =>  q . Verified  ==  null  &&  q . Requested  !=  null  &&  q . UserIsVerifier  ==  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  ) 
52-                                        where  ( wordsInSearchText . Count ( )  ==  0  ||  searchTextMatchesGroup  ||  searchTextMatchesCompetencyDescription  ||  searchTextMatchesCompetencyName ) 
53-                                            &&  ( ! appliedResponseStatusFilters . Any ( )  ||  responseStatusFilterMatchesAnyQuestion ) 
54-                                        select  c ; 
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+                 } 
55130            } 
56131            competencies  =  filteredCompetencies ; 
57132        } 
0 commit comments