class Eco::API::Organization::PolicyGroups
Public Class Methods
new(policy_groups = [], klass: Ecoportal::API::Internal::PolicyGroup)
click to toggle source
Calls superclass method
Eco::Language::Models::Collection::new
# File lib/eco/api/organization/policy_groups.rb, line 8 def initialize(policy_groups = [], klass: Ecoportal::API::Internal::PolicyGroup) @klass = Ecoportal::API::Internal::PolicyGroup @caches_init = false super(policy_groups, klass: @klass) init_caches end
Public Instance Methods
[](id_name)
click to toggle source
# File lib/eco/api/organization/policy_groups.rb, line 50 def [](id_name) @by_id[policy_group_id(id_name)] end
ids()
click to toggle source
# File lib/eco/api/organization/policy_groups.rb, line 15 def ids @by_id.keys end
names()
click to toggle source
# File lib/eco/api/organization/policy_groups.rb, line 19 def names @by_name.keys end
policy_group(id_name)
click to toggle source
# File lib/eco/api/organization/policy_groups.rb, line 46 def policy_group(id_name) self[id_name] end
to_id(name)
click to toggle source
# File lib/eco/api/organization/policy_groups.rb, line 23 def to_id(name) case name when Enumerable name.map do |n| policy_group(n)&.id end.compact else policy_group(name)&.id end end
to_name(id)
click to toggle source
# File lib/eco/api/organization/policy_groups.rb, line 34 def to_name(id) case id when Enumerable id.map do |n| policy_group(n)&.name end.compact else policy_group(id)&.name end end
user_pg_ids(initial: [], final: [], non_custom: (non_custom_not_used = true; []), preserve_custom: true)
click to toggle source
# File lib/eco/api/organization/policy_groups.rb, line 54 def user_pg_ids(initial: [], final: [], non_custom: (non_custom_not_used = true; []), preserve_custom: true) non_custom = to_id([non_custom].flatten.compact) initial = to_id([initial].flatten.compact) final = to_id([final].flatten.compact) unless initial.is_a?(Array) && final.is_a?(Array) && non_custom.is_a?(Array) raise "Expected Array for :initial, :final and :custom" end if !non_custom_not_used && preserve_custom initial_custom = initial - non_custom final = final + initial_custom end new_pg_ids = final - initial # keep same order as they where (initial & final) + new_pg_ids end
Private Instance Methods
init_caches()
click to toggle source
# File lib/eco/api/organization/policy_groups.rb, line 82 def init_caches return if @caches_init @by_id = self.map { |pg| [pg.id, pg] }.to_h @by_name = self.map { |pg| [pg.name&.downcase, pg] }.to_h @caches_init = true end
policy_group_id(id_name)
click to toggle source
# File lib/eco/api/organization/policy_groups.rb, line 78 def policy_group_id(id_name) (@by_name[id_name&.downcase] || @by_id[id_name])&.id end
policy_group_name(id_name)
click to toggle source
# File lib/eco/api/organization/policy_groups.rb, line 74 def policy_group_name(id_name) (@by_id[id_name] || @by_name[id_name&.downcase])&.name&.downcase end