2018-03-25 16:15:39 +00:00
|
|
|
# License: AGPL-3.0-or-later WITH Web-Template-Output-Additional-Permission-3.0-or-later
|
2018-03-25 17:30:42 +00:00
|
|
|
module GeocodeModel
|
|
|
|
|
|
|
|
def self.supporter(id)
|
|
|
|
supp = Supporter.find_by_id(id)
|
|
|
|
if supp.address && supp.state_code && supp.city
|
|
|
|
with_reverse(supp)
|
|
|
|
end
|
|
|
|
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
|