5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
|
# File 'app/interactors/spree_cm_commissioner/vendor_nearby_place_builder.rb', line 5
def call
context.nearby_places = []
json_response = fetch_nearby_places
json_response['results'].each_with_index do |json, _|
place = SpreeCmCommissioner::Place.find_or_initialize_by(reference: json['reference'])
place.assign_attributes(
reference: json['reference'],
types: json['types'].blank? ? '' : json['types'][0],
name: json['name'],
vicinity: json['vicinity'],
lat: json['geometry']['location']['lat'],
lon: json['geometry']['location']['lng'],
icon: json['icon'],
rating: json['rating']
)
distance = SpreeCmCommissioner::NearbyPlaceDistanceFinder.call(
vendor: vendor,
place: place
).distance
nearby_place = if place.persisted?
SpreeCmCommissioner::VendorPlace.find_or_initialize_by(vendor_id: vendor.id, place_id: place.id)
else
SpreeCmCommissioner::VendorPlace.new(vendor: vendor, place: place)
end
nearby_place.distance = distance
context.nearby_places << nearby_place
end
end
|