houdini/lib/geocode_model.rb
2020-06-15 10:26:57 -05:00

47 lines
1 KiB
Ruby

# frozen_string_literal: true
# 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