houdini/lib/geocode_model.rb

48 lines
1 KiB
Ruby
Raw Normal View History

# frozen_string_literal: true
2020-06-12 20:03:43 +00:00
# License: AGPL-3.0-or-later WITH WTO-AP-3.0-or-later
# Full license explanation at https://github.com/houdiniproject/houdini/blob/master/LICENSE
module GeocodeModel
def self.supporter(id)
supp = Supporter.find_by_id(id)
with_reverse(supp) if supp.address && supp.state_code && supp.city
end
# Just a wrapper around a model's geocode method for delaying with:
# GeocodeModel.delay.geocode(user)
def self.geocode(model)
begin
model.geocode
rescue Exception => e
puts e
end
model.save
model
end
def self.with_reverse(model)
begin
model.geocode
model.reverse_geocode
rescue Exception => e
puts e
end
model.save
model
end
# Geocode and get the timezone for a model
def self.with_timezone(model)
begin
geocode(model)
rescue Exception => e
puts e
end
return model unless model.latitude && model.longitude
model.timezone = NearestTimeZone.to(model.latitude, model.longitude)
model.save
model
end
end