fix: make filter works on multiple_drop_down_list

This commit is contained in:
simon lehericey 2024-10-16 17:58:11 +02:00
parent 5522efc3e5
commit 4059bfdc11
No known key found for this signature in database
GPG key ID: CDE670D827C7B3C5
5 changed files with 53 additions and 2 deletions

View file

@ -39,5 +39,11 @@ module DossierFilteringConcern
q = Array.new(values.count, "(#{table_column} = ?)").join(' OR ')
where(q, *(values))
}
scope :filter_array_enum, lambda { |table, column, values|
table_column = DossierFilterService.sanitized_column(table, column)
q = Array.new(values.count, "(#{table_column} = ?)").join(' OR ')
where(q, *(values. map { |value| "[\"#{value}\"]" }))
}
end
end

View file

@ -532,7 +532,9 @@ class TypeDeChamp < ApplicationRecord
end
def self.filter_hash_type(type_champ)
if is_choice_type_from(type_champ)
if type_champ == 'multiple_drop_down_list'
:enums
elsif is_choice_type_from(type_champ)
:enum
else
:text

View file

@ -92,6 +92,9 @@ class DossierFilterService
if filtered_column.type == :enum
dossiers.with_type_de_champ(column)
.filter_enum(:champs, value_column, values)
elsif filtered_column.type == :enums
dossiers.with_type_de_champ(column)
.filter_array_enum(:champs, value_column, values)
else
dossiers.with_type_de_champ(column)
.filter_ilike(:champs, value_column, values)