Log activity for content reordering only when order change [SCI-10730]

This commit is contained in:
Andrej 2024-06-17 12:52:48 +02:00
parent df5a414bf5
commit 873a70e425
3 changed files with 32 additions and 15 deletions

View file

@ -5,15 +5,18 @@ class ResultOrderableElementsController < ApplicationController
before_action :check_manage_permissions before_action :check_manage_permissions
def reorder def reorder
position_changed = false
ActiveRecord::Base.transaction do ActiveRecord::Base.transaction do
params[:result_orderable_element_positions].each do |id, position| params[:result_orderable_element_positions].each do |id, position|
result_element = @result.result_orderable_elements.find(id) result_element = @result.result_orderable_elements.find(id)
result_element.insert_at(position) position_changed ||= result_element.insert_at(position)
end end
end end
log_activity(:result_content_rearranged, @my_module.experiment.project, my_module: @my_module.id) if position_changed
@result.touch log_activity(:result_content_rearranged, @my_module.experiment.project, my_module: @my_module.id)
@result.touch
end
render json: params[:result_orderable_element_positions], status: :ok render json: params[:result_orderable_element_positions], status: :ok
rescue ActiveRecord::RecordInvalid rescue ActiveRecord::RecordInvalid

View file

@ -6,16 +6,23 @@ class StepOrderableElementsController < ApplicationController
def reorder def reorder
@step.with_lock do @step.with_lock do
position_changed = false
params[:step_orderable_element_positions].each do |id, position| params[:step_orderable_element_positions].each do |id, position|
@step.step_orderable_elements.find(id).update_column(:position, position) step_element = @step.step_orderable_elements.find(id)
if step_element.position != position
position_changed = true
step_element.update_column(:position, position)
end
end end
if @protocol.in_module? if position_changed
log_activity(:task_step_content_rearranged, @my_module.experiment.project, my_module: @my_module.id) if @protocol.in_module?
else log_activity(:task_step_content_rearranged, @my_module.experiment.project, my_module: @my_module.id)
log_activity(:protocol_step_content_rearranged, nil, protocol: @protocol.id) else
log_activity(:protocol_step_content_rearranged, nil, protocol: @protocol.id)
end
@step.touch
end end
@step.touch
end end
render json: params[:step_orderable_element_positions], status: :ok render json: params[:step_orderable_element_positions], status: :ok

View file

@ -241,16 +241,23 @@ class StepsController < ApplicationController
def reorder def reorder
@protocol.with_lock do @protocol.with_lock do
position_changed = false
params[:step_positions].each do |id, position| params[:step_positions].each do |id, position|
@protocol.steps.find(id).update_column(:position, position) step = @protocol.steps.find(id)
if position != step.position
position_changed = true
step.update_column(:position, position)
end
end end
if @protocol.in_module? if position_changed
log_activity(:task_steps_rearranged, @my_module.experiment.project, my_module: @my_module.id) if @protocol.in_module?
else log_activity(:task_steps_rearranged, @my_module.experiment.project, my_module: @my_module.id)
log_activity(:protocol_steps_rearranged, nil, protocol: @protocol.id) else
log_activity(:protocol_steps_rearranged, nil, protocol: @protocol.id)
end
@protocol.touch
end end
@protocol.touch
end end
render json: { render json: {