mirror of
https://github.com/Freika/dawarich.git
synced 2026-01-10 01:01:39 -05:00
43 lines
1.1 KiB
Ruby
43 lines
1.1 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
module Places
|
|
class NameFetcher
|
|
def initialize(place)
|
|
@place = place
|
|
end
|
|
|
|
def call
|
|
geodata = Geocoder.search([place.lat, place.lon], units: :km, limit: 1, distance_sort: true).first
|
|
|
|
return if geodata.blank?
|
|
|
|
properties = geodata.data&.dig('properties')
|
|
return if properties.blank?
|
|
|
|
ActiveRecord::Base.transaction do
|
|
update_place_name(properties, geodata)
|
|
|
|
update_visits_name(properties) if properties['name'].present?
|
|
|
|
place
|
|
end
|
|
end
|
|
|
|
private
|
|
|
|
attr_reader :place
|
|
|
|
def update_place_name(properties, geodata)
|
|
place.name = properties['name'] if properties['name'].present?
|
|
place.city = properties['city'] if properties['city'].present?
|
|
place.country = properties['country'] if properties['country'].present?
|
|
place.geodata = geodata.data if DawarichSettings.store_geodata?
|
|
|
|
place.save!
|
|
end
|
|
|
|
def update_visits_name(properties)
|
|
place.visits.where(name: Place::DEFAULT_NAME).update_all(name: properties['name'])
|
|
end
|
|
end
|
|
end
|