aboutsummaryrefslogtreecommitdiffstats
path: root/app/models/organisation.rb
diff options
context:
space:
mode:
authorXinhui2016-08-10 10:43:13 +0200
committerXinhui2016-08-10 10:43:13 +0200
commit53526748c12eb790647b656254b009a08278b70f (patch)
treedae69edd198142e25f9334391cd3d9568ed96987 /app/models/organisation.rb
parent0857749941849c71a6d24f2a38891d3c19964126 (diff)
downloadchouette-core-53526748c12eb790647b656254b009a08278b70f.tar.bz2
Refactoring move portail sync code into models
Diffstat (limited to 'app/models/organisation.rb')
-rw-r--r--app/models/organisation.rb30
1 files changed, 30 insertions, 0 deletions
diff --git a/app/models/organisation.rb b/app/models/organisation.rb
index 9d6e92825..fc5e2699e 100644
--- a/app/models/organisation.rb
+++ b/app/models/organisation.rb
@@ -21,4 +21,34 @@ class Organisation < ActiveRecord::Base
def add_rule_parameter_set
RuleParameterSet.default_for_all_modes( self).save
end
+
+ def self.portail_api_request
+ conf = Rails.application.config.try(:stif_portail_api)
+ raise 'Rails.application.config.stif_portail_api settings is not defined' unless conf
+
+ conn = Faraday.new(:url => conf[:url]) do |c|
+ c.headers['Authorization'] = "Token token=\"#{conf[:key]}\""
+ c.adapter Faraday.default_adapter
+ end
+
+ resp = conn.get '/api/v1/organizations'
+ if resp.status == 200
+ JSON.parse resp.body
+ else
+ raise "Error on api request status : #{resp.status} => #{resp.body}"
+ end
+ end
+
+ def self.portail_sync
+ self.portail_api_request.each do |el|
+ Organisation.find_or_create_by(code: el['code']).tap do |org|
+ org.name = el['name']
+ if org.changed?
+ org.synced_at = Time.now
+ org.save
+ puts "✓ Organisation #{org.name} has been updated" unless Rails.env.test?
+ end
+ end
+ end
+ end
end