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