class Eco::API::Common::People::Entries
@attr_reader entries [Array<Eco::API::Common::PersonEntry] a pure ‘Array` object.
Class meant to offer a collection of entries, normally used to get parsed input data.
def [](id_or_ext)
def [](id_or_ext) id(id_or_ext) || external_id(id_or_ext) end
def email_id_maps
def email_id_maps email_present.group_by(:email).transform_values { |person| person.id } end
def entry(id: nil, external_id: nil, email: nil)
def entry(id: nil, external_id: nil, email: nil) init_caches pers = nil pers = @by_id[id]&.first if id pers = @by_external_id[external_id&.strip]&.first if !pers && !external_id.to_s.strip.empty? pers = @by_email[email&.downcase.strip]&.first if !pers && !email.to_s.strip.empty? pers = @by_external_id[email&.downcase.strip]&.first if !pers && !email.to_s.strip.empty? pers end
def exclude(object)
def exclude(object) exclude_people(into_a(object)) end
def exclude_people(list)
def exclude_people(list) discarded = list.map do |person| find(person) end.compact newFrom to_a - discarded end
def external_id(*args)
def external_id(*args) attr('external_id', *args).first end
def find(object)
def find(object) id = object.respond_to?("id")? object.send("id") : nil external_id = object.respond_to?("external_id")? object.send("external_id") : nil email = object.respond_to?("email")? object.send("email") : nil entry(id: id, external_id: external_id, email: email) end
def group_by_supervisor
def group_by_supervisor to_h(:supervisor_id) end
def id(*args)
def id(*args) attr('id', *args).first end
def init_caches
def init_caches return if @caches_init @by_id = to_h @by_external_id = to_h('external_id') @by_email = to_h('email') @caches_init = true end
def initialize(data = [], klass:, factory:)
def initialize(data = [], klass:, factory:) super(data, klass: klass, factory: factory) @caches_init = false end
def on_change
def on_change @caches_init = false end
def to_h(attr = "id")
def to_h(attr = "id") super(attr || "id") end