diff options
Diffstat (limited to 'app/models/organisation.rb')
| -rw-r--r-- | app/models/organisation.rb | 66 | 
1 files changed, 41 insertions, 25 deletions
| diff --git a/app/models/organisation.rb b/app/models/organisation.rb index f6fba2d67..da7d1fcf3 100644 --- a/app/models/organisation.rb +++ b/app/models/organisation.rb @@ -1,3 +1,4 @@ +# coding: utf-8  class Organisation < ActiveRecord::Base    include DataFormatEnumerations @@ -18,36 +19,39 @@ class Organisation < ActiveRecord::Base    validates_presence_of :name    validates_uniqueness_of :code -  def self.portail_api_request -    conf = Rails.application.config.try(:stif_portail_api) -    raise 'Rails.application.config.stif_portail_api configuration is not defined' unless conf +  class << self -    HTTPService.get_json_resource( -      host: conf[:url], -      path: '/api/v1/organizations', -      token: conf[:key]) -  end +    def portail_api_request +      conf = Rails.application.config.try(:stif_portail_api) +      raise 'Rails.application.config.stif_portail_api configuration is not defined' unless conf + +      HTTPService.get_json_resource( +        host: conf[:url], +        path: '/api/v1/organizations', +        token: conf[:key]) +    end -  def self.sync_update code, name, scope -    org = Organisation.find_or_initialize_by(code: code) -    if scope -      org.sso_attributes ||= {} -      if org.sso_attributes['functional_scope'] != scope -        org.sso_attributes['functional_scope'] = scope -        # FIXME see #1941 -        org.sso_attributes_will_change! +    def sync_update code, name, scope +      org = Organisation.find_or_initialize_by(code: code) +      if scope +        org.sso_attributes ||= {} +        if org.sso_attributes['functional_scope'] != scope +          org.sso_attributes['functional_scope'] = scope +          # FIXME see #1941 +          org.sso_attributes_will_change! +        end        end +      org.name      = name +      org.synced_at = Time.now +      org.save +      org      end -    org.name      = name -    org.synced_at = Time.now -    org.save -    org -  end -  def self.portail_sync -    self.portail_api_request.each do |el| -      org = self.sync_update el['code'], el['name'], el['functional_scope'] -      puts "✓ Organisation #{org.name} has been updated" unless Rails.env.test? +    def portail_sync +      portail_api_request.each do |el| +        org = self.sync_update el['code'], el['name'], el['functional_scope'] +        puts "✓ Organisation #{org.name} has been updated" unless Rails.env.test? +      end      end    end @@ -64,4 +68,16 @@ class Organisation < ActiveRecord::Base      raise ActiveRecord::RecordNotFound    end +  def functional_scope +    JSON.parse( (sso_attributes || {}).fetch('functional_scope', '[]') ) +  end + +  def lines_set +    STIF::CodifligneLineId.lines_set_from_functional_scope( functional_scope ) +  end + +  def has_feature?(feature) +    features && features.include?(feature.to_s) +  end +  end | 
