[#3477] Push up reliance on mutable state

This commit is contained in:
Frederic Merizen 2019-02-19 15:28:12 +01:00
parent ac4750e5e3
commit 66fa7ef11d

View file

@ -87,7 +87,7 @@ module NewGestionnaire
@dossiers = @dossiers.where(id: filtered_sorted_paginated_ids) @dossiers = @dossiers.where(id: filtered_sorted_paginated_ids)
eager_load_displayed_fields @dossiers = eager_load_displayed_fields(@dossiers)
@dossiers = @dossiers.sort_by { |d| filtered_sorted_paginated_ids.index(d.id) } @dossiers = @dossiers.sort_by { |d| filtered_sorted_paginated_ids.index(d.id) }
@ -241,7 +241,7 @@ module NewGestionnaire
procedure_presentation.fields_for_select procedure_presentation.fields_for_select
end end
def eager_load_displayed_fields def eager_load_displayed_fields(dossiers)
procedure_presentation.displayed_fields procedure_presentation.displayed_fields
.reject { |field| field['table'] == 'self' } .reject { |field| field['table'] == 'self' }
.group_by do |field| .group_by do |field|
@ -250,24 +250,24 @@ module NewGestionnaire
else else
field['table'] field['table']
end end
end.each do |group_key, fields| end.reduce(dossiers) do |dossiers, (group_key, fields)|
case group_key case group_key
when 'type_de_champ_group' when 'type_de_champ_group'
if fields.any? { |field| field['table'] == 'type_de_champ' } if fields.any? { |field| field['table'] == 'type_de_champ' }
@dossiers = @dossiers.includes(:champs).references(:champs) dossiers = dossiers.includes(:champs).references(:champs)
end end
if fields.any? { |field| field['table'] == 'type_de_champ_private' } if fields.any? { |field| field['table'] == 'type_de_champ_private' }
@dossiers = @dossiers.includes(:champs_private).references(:champs_private) dossiers = dossiers.includes(:champs_private).references(:champs_private)
end end
where_conditions = fields.map do |field| where_conditions = fields.map do |field|
"champs.type_de_champ_id = #{field['column']}" "champs.type_de_champ_id = #{field['column']}"
end.join(" OR ") end.join(" OR ")
@dossiers = @dossiers.where(where_conditions) dossiers.where(where_conditions)
else else
@dossiers = @dossiers.includes(fields.first['table']) dossiers.includes(fields.first['table'])
end end
end end
end end