houdini/lib/geocode_model.rb

47 lines
1,011 B
Ruby
Raw Normal View History

# frozen_string_literal: true
# License: AGPL-3.0-or-later WITH Web-Template-Output-Additional-Permission-3.0-or-later
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