remove set_position

This commit is contained in:
simon lehericey 2022-05-12 14:18:28 +02:00
parent 84d2e38494
commit 7f23449f24
4 changed files with 35 additions and 32 deletions

View file

@ -39,15 +39,36 @@ class ProcedureRevision < ApplicationRecord
end
def add_type_de_champ(params)
if params[:parent_id]
find_or_clone_type_de_champ(params.delete(:parent_id))
.types_de_champ
.tap do |types_de_champ|
params[:order_place] = types_de_champ.present? ? types_de_champ.last.order_place + 1 : 0
end.create(params).migrate_parent!
parent_stable_id = params[:parent_id]
coordinate = {}
if parent_stable_id.present?
clone_parent_to_draft_revision(parent_stable_id)
parent = types_de_champ.find_by(stable_id: parent_stable_id)
parent_coordinate = revision_types_de_champ.find_by(type_de_champ: parent)
coordinate[:parent_id] = parent_coordinate.id
coordinate[:position] = children_of(parent).count
# old system
params[:order_place] = coordinate[:position]
params[:parent_id] = parent.id
elsif params[:private]
coordinate[:position] = revision_types_de_champ_private.count
else
types_de_champ.create(params)
coordinate[:position] = revision_types_de_champ_public.count
end
tdc = TypeDeChamp.new(params)
if tdc.save
coordinate[:type_de_champ] = tdc
revision_types_de_champ.create!(coordinate)
end
tdc
rescue => e
TypeDeChamp.new.tap { |tdc| tdc.errors.add(:base, e.message) }
end
def find_or_clone_type_de_champ(stable_id)