Class: Item::CopyRelatedItemsFromSiblings
- Inherits:
-
BaseService
- Object
- BaseService
- Item::CopyRelatedItemsFromSiblings
- Defined in:
- app/services/item/copy_related_items_from_siblings.rb
Defined Under Namespace
Classes: Result
Instance Method Summary collapse
Methods inherited from BaseService
#initialize, #log_debug, #log_error, #log_info, #log_warning, #logger, #options, #tagged_logger
Constructor Details
This class inherits a constructor from BaseService
Instance Method Details
#process(item:, relation_type: nil) ⇒ Object
7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
# File 'app/services/item/copy_related_items_from_siblings.rb', line 7 def process(item:, relation_type: nil) # get the existing target_item_relations = item.target_item_relations.non_kit_components target_item_relations = target_item_relations.where(relation_type: relation_type) if relation_type.present? new_target_item_relations = [] # get our relatives relatives = item.relatives # each relatives gets its target item relation copied unless it is already present relatives.each do |relative_item| relative_target_item_relations = relative_item.target_item_relations.non_kit_components relative_target_item_relations = relative_target_item_relations.where(relation_type: relation_type) if relation_type.present? relative_target_item_relations.each do |tir| # Skip existing next if target_item_relations.detect{|etir| etir.target_item_id == tir.target_item_id } new_tir = tir.dup item.target_item_relations << new_tir # this saves new_target_item_relations << new_tir end end = "#{new_target_item_relations.size} relations were added to item #{item.sku}" Result.new(target_item_relations: new_target_item_relations, message: ) end |