@@ -167,8 +167,7 @@ public static string GetFilterValueForRegistrationPrompt(int promptNumber, strin
167167                :  answer ; 
168168            return  BuildFilterValueString ( group ,  group . Split ( '(' ) [ 0 ] ,  propertyValue ) ; 
169169        } 
170-         public   static    string ?  CheckIfFilterisValid ( bool  clearFilters ,  string  existingFilterString ,  string  newFilterToAdd ,  IEnumerable < FilterModel >  availableFilters ,  HttpRequest  request , 
171-        string  cookieName ,  HttpResponse  response ) 
170+         public   static    string ?  GetValidFilters ( string  existingFilterString ,  string  newFilterToAdd ,  IEnumerable < FilterModel >  availableFilters ,  HttpRequest  request ,  string  cookieName ) 
172171        { 
173172            var  cookieValue  =  request . Cookies [ cookieName ] ; 
174173            if  ( string . IsNullOrEmpty ( cookieValue )  ||  cookieValue  ==  EmptyFiltersCookieValue ) 
@@ -186,14 +185,41 @@ public static string GetFilterValueForRegistrationPrompt(int promptNumber, strin
186185        . ToList ( ) ; 
187186            var  newCookieValue  =  string . Join ( "╡" ,  filteredResults ) ; 
188187            if  ( string . IsNullOrEmpty ( newCookieValue ) )  return  null ; 
189-             return  AddNewFilterToFilterString ( newCookieValue ,  newFilterToAdd ) ;   
188+             newCookieValue  =  AddNewFilterToFilterString ( newCookieValue ,  newFilterToAdd ) ; 
189+             return  RemoveDuplicateFilters (  newFilterToAdd ,  newCookieValue ) ; 
190190        } 
191191
192192        private  static    bool  IsFilterInvalid ( string  filterEntry ,  HashSet < string >  validFilterValues ) 
193193        { 
194194            if  ( validFilterValues . Contains ( filterEntry ) )  return  true ; 
195195            return  false ; 
196196        } 
197+         public   static   string  RemoveDuplicateFilters ( string  newFilterToAdd ,  string ?  existingFilterString ) 
198+         { 
199+             if  ( string . IsNullOrEmpty ( existingFilterString ) ) 
200+             { 
201+                 return  existingFilterString  ??  string . Empty ; 
202+             } 
203+             var  selectedFilters  =  existingFilterString . Split ( FilteringHelper . FilterSeparator ) . ToList ( ) ; 
204+             if  ( ! string . IsNullOrEmpty ( newFilterToAdd ) ) 
205+             { 
206+                 var  filterHeader  =  newFilterToAdd . Split ( FilteringHelper . Separator ) [ 0 ] ; 
207+                 var  dupfilters  =  selectedFilters . Where ( x =>  x . Contains ( filterHeader ) ) ; 
208+                 if  ( dupfilters . Count ( )  >  1 ) 
209+                 { 
210+                     foreach  ( var  filter  in  selectedFilters ) 
211+                     { 
212+                         if  ( filter . Contains ( filterHeader ) ) 
213+                         { 
214+                             selectedFilters . Remove ( filter ) ; 
215+                             existingFilterString  =  string . Join ( FilteringHelper . FilterSeparator ,  selectedFilters ) ; 
216+                             break ; 
217+                         } 
218+                     } 
219+                 } 
220+             } 
221+             return  existingFilterString ; 
222+         } 
197223        private  static   IEnumerable < FilterOptionModel >  GetFilterOptionsForPromptWithOptions ( Prompt  prompt ) 
198224        { 
199225            var  group  =  GetFilterGroupForPrompt ( prompt ) ; 
0 commit comments