scinote-web/app/services/repository_actions/duplicate_cell.rb
2020-01-16 16:03:13 +01:00

37 lines
1,002 B
Ruby

# frozen_string_literal: true
module RepositoryActions
class DuplicateCell
def initialize(cell, new_row, user)
@cell = cell
@new_row = new_row
@user = user
end
def call
new_value = @cell.value.dup
new_cell = RepositoryCell.new(repository_row: @new_row, repository_column: @cell.repository_column)
new_cell.value = new_value
new_value.created_by = @user
new_value.last_modified_by = @user
if respond_to?("#{@cell.value_type.split('::').last.underscore}_extra_attributes", true)
__send__("#{@cell.value_type.split('::').last.underscore}_extra_attributes", new_value)
end
new_value.save!
end
private
def repository_asset_value_extra_attributes(value)
new_asset = @cell.value.asset.duplicate
value.asset = new_asset
end
def repository_checklist_value_extra_attributes(value)
value.repository_checklist_items = @cell.value.repository_checklist_items
end
end
end