refactor(dossier): implement champs_for_revision
This commit is contained in:
parent
9280ccc23d
commit
283ee72d51
2 changed files with 30 additions and 0 deletions
|
@ -1391,6 +1391,20 @@ class Dossier < ApplicationRecord
|
||||||
user.france_connect_information.present?
|
user.france_connect_information.present?
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def champs_by_stable_id_with_row
|
||||||
|
champs_for_revision.index_by(&:stable_id_with_row)
|
||||||
|
end
|
||||||
|
|
||||||
|
def champs_for_revision(scope = nil, root = false)
|
||||||
|
champs_index = champs.group_by(&:stable_id)
|
||||||
|
|
||||||
|
if scope.is_a?(TypeDeChamp)
|
||||||
|
revision.children_of(scope)
|
||||||
|
else
|
||||||
|
revision.types_de_champ_for(scope, root)
|
||||||
|
end.flat_map { champs_index[_1.stable_id] || [] }
|
||||||
|
end
|
||||||
|
|
||||||
private
|
private
|
||||||
|
|
||||||
def create_missing_traitemets
|
def create_missing_traitemets
|
||||||
|
|
|
@ -155,6 +155,22 @@ class ProcedureRevision < ApplicationRecord
|
||||||
dossier
|
dossier
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def types_de_champ_for(scope = nil, root = false)
|
||||||
|
# We return an unordered collection
|
||||||
|
return types_de_champ if !root && scope.nil?
|
||||||
|
return types_de_champ.filter { scope == :public ? _1.public? : _1.private? } if !root
|
||||||
|
|
||||||
|
# We return an ordered collection
|
||||||
|
case scope
|
||||||
|
when :public
|
||||||
|
types_de_champ_public
|
||||||
|
when :private
|
||||||
|
types_de_champ_private
|
||||||
|
else
|
||||||
|
types_de_champ_public + types_de_champ_private
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
def children_of(tdc)
|
def children_of(tdc)
|
||||||
if revision_types_de_champ.loaded?
|
if revision_types_de_champ.loaded?
|
||||||
parent_coordinate_id = revision_types_de_champ
|
parent_coordinate_id = revision_types_de_champ
|
||||||
|
|
Loading…
Reference in a new issue