summaryrefslogtreecommitdiff
path: root/app
diff options
context:
space:
mode:
Diffstat (limited to 'app')
-rw-r--r--app/models/geo_location_service.rb2
-rw-r--r--app/models/user.rb19
-rw-r--r--app/views/devise/registrations/edit.html.erb3
-rw-r--r--app/views/devise/registrations/new.html.erb3
4 files changed, 26 insertions, 1 deletions
diff --git a/app/models/geo_location_service.rb b/app/models/geo_location_service.rb
index e5a0dc5..50f418f 100644
--- a/app/models/geo_location_service.rb
+++ b/app/models/geo_location_service.rb
@@ -23,6 +23,8 @@ class GeoLocationService
def self.ExtractGeoLocationFromJson( jsonString)
parsed = JSON.parse(jsonString)
+ return nil if parsed["locations"].length == 0
+
# need to handle more than one match
x = parsed["locations"][0]["feature"]["geometry"]["x"]
y = parsed["locations"][0]["feature"]["geometry"]["y"]
diff --git a/app/models/user.rb b/app/models/user.rb
index 4a170b9..a471980 100644
--- a/app/models/user.rb
+++ b/app/models/user.rb
@@ -1,8 +1,25 @@
class User < ActiveRecord::Base
devise :database_authenticatable, :registerable, :recoverable, :rememberable, :trackable, :validatable
+ after_save :get_location
- attr_accessible :name, :email, :password, :password_confirmation, :remember_me
+ attr_accessible :name, :email, :password, :password_confirmation, :remember_me, :postal_code, :latitude, :longitude
has_many :needs
has_many :links
acts_as_tagger
+
+private
+
+ def get_location
+
+ return if self.postal_code.nil?
+
+ location = GeoLocationService.GetGeoLocation(self.postal_code)
+
+ return if location.nil?
+
+ update_column :latitude, location.y
+ update_column :longitude, location.x
+
+ end
+
end
diff --git a/app/views/devise/registrations/edit.html.erb b/app/views/devise/registrations/edit.html.erb
index 1465dcc..ae74bdd 100644
--- a/app/views/devise/registrations/edit.html.erb
+++ b/app/views/devise/registrations/edit.html.erb
@@ -9,6 +9,9 @@
<div><%= f.label :email %><br />
<%= f.email_field :email %></div>
+ <div><%= f.label :postal_code %><br />
+ <%= f.text_field :postal_code %></div>
+
<% if devise_mapping.confirmable? && resource.pending_reconfirmation? %>
<div>Currently waiting confirmation for: <%= resource.unconfirmed_email %></div>
<% end %>
diff --git a/app/views/devise/registrations/new.html.erb b/app/views/devise/registrations/new.html.erb
index 9a9a71d..4d70d49 100644
--- a/app/views/devise/registrations/new.html.erb
+++ b/app/views/devise/registrations/new.html.erb
@@ -9,6 +9,9 @@
<div><%= f.label :email %><br />
<%= f.email_field :email %></div>
+ <div><%= f.label :postal_code %><br />
+ <%= f.text_field :postal_code %></div>
+
<div><%= f.label :password %><br />
<%= f.password_field :password %></div>