Class: SpreeCmCommissioner::Metafields::ProductMetadataService

Inherits:
Object
  • Object
show all
Defined in:
app/services/spree_cm_commissioner/metafields/product_metadata_service.rb

Instance Method Summary collapse

Constructor Details

#initialize(params) ⇒ ProductMetadataService

Returns a new instance of ProductMetadataService.



4
5
6
# File 'app/services/spree_cm_commissioner/metafields/product_metadata_service.rb', line 4

def initialize(params)
  @params = params
end

Instance Method Details

#productObject



8
9
10
# File 'app/services/spree_cm_commissioner/metafields/product_metadata_service.rb', line 8

def product
  @product ||= Spree::Product.find_by!(slug: @params[:id])
end

#remove_metafield_by_key(key, scope) ⇒ Object



22
23
24
25
26
27
28
29
# File 'app/services/spree_cm_commissioner/metafields/product_metadata_service.rb', line 22

def remove_metafield_by_key(key, scope)
   = scope == :private ? product. || {} : product. || {}

  return if ['guests'].blank?

  ['guests'].reject! { |guest| guest['key'] == key }
  product.update!(scope == :private ? { private_metadata:  } : { public_metadata:  })
end

#update_metafields(scope) ⇒ Object



12
13
14
15
16
17
18
19
20
# File 'app/services/spree_cm_commissioner/metafields/product_metadata_service.rb', line 12

def update_metafields(scope)
   = scope == :private ? product. || {} : product. || {}

  filtered_guests = @params[:metadata][:guests].map(&:to_h).reject { |guest| guest[:key].blank? }

  [:guests] = filtered_guests

  product.update!(scope == :private ? { private_metadata:  } : { public_metadata:  })
end