Class: SpreeCmCommissioner::VendorPlaces::CreateWithGoogleMapData

Inherits:
Base
  • Object
show all
Defined in:
app/services/spree_cm_commissioner/vendor_places/create_with_google_map_data.rb

Constant Summary

Constants inherited from Base

Base::ALLOWED_PLACE_TYPES

Instance Method Summary collapse

Instance Method Details

#call(vendor:, place_type:, google_place_base_64_content:, description: nil, location: nil) ⇒ Object



22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# File 'app/services/spree_cm_commissioner/vendor_places/create_with_google_map_data.rb', line 22

def call(vendor:, place_type:, google_place_base_64_content:, description: nil, location: nil)
  error_message = validate_place_type!(place_type)
  return failure(nil, error_message) if error_message.present?

  # Only require location for stop and branch types
  return failure(nil, I18n.t('controller.vendor_places.location_required')) if %w[stop branch].include?(place_type) && location.nil?

  place = process_place(google_place_base_64_content: google_place_base_64_content)
  return failure(nil, place) unless place.is_a?(SpreeCmCommissioner::Place)

  vendor_place = create_vendor_place(vendor: vendor, place: place, place_type: place_type, description: description, location: location)
  return failure(nil, vendor_place) if vendor_place.nil? || vendor_place.is_a?(String)

  success(vendor_place)
end