mirror of
https://github.com/openfoodfoundation/openfoodnetwork
synced 2026-01-25 20:46:48 +00:00
35 lines
596 B
Ruby
35 lines
596 B
Ruby
# frozen_string_literal: true
|
|
|
|
class AddressGeocoder
|
|
def initialize(address)
|
|
@address = address
|
|
end
|
|
|
|
def geocode
|
|
latitude, longitude = Geocoder.coordinates(geocode_address)
|
|
|
|
return unless latitude.present? && longitude.present?
|
|
|
|
address.update(latitude:, longitude:)
|
|
end
|
|
|
|
private
|
|
|
|
attr_reader :address
|
|
|
|
def geocode_address
|
|
address_parts.select(&:present?).join(', ')
|
|
end
|
|
|
|
def address_parts
|
|
[
|
|
address.address1,
|
|
address.address2,
|
|
address.zipcode,
|
|
address.city,
|
|
address.country&.name,
|
|
address.state&.name
|
|
]
|
|
end
|
|
end
|