mirror of
https://github.com/scinote-eln/scinote-web.git
synced 2024-11-11 10:06:53 +08:00
36 lines
1,002 B
Ruby
36 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
|