Module: Eco::API::MicroCases::People::Fetch::WithEachStarter

Included in:
Eco::API::MicroCases::People::Fetch
Defined in:
lib/eco/api/microcases/people/fetch/with_each_starter.rb

Instance Method Summary collapse

Instance Method Details

#with_each_starter(entries, people, options, log_present: false, append_created: true) {|entry, person| ... } ⇒ Eco::API::Organization::People

Note:
  • it also links to person.entry the input data entry.

Detects who in the entries is new in the organization and yield s them one by one to the given block.

Parameters:

  • entries (Eco::API::Common::People::Entries)

    the input entries with the data.

  • people (Eco::API::Organization::People)

    target existing People of the current update.

  • options (Hash)

    the options.

  • log_present (Boolean) (defaults to: false)

    log error message if an entry has match in people.

  • append_created (Boolean) (defaults to: true)

    whether or not a new person will be added to the people object.

Yields:

  • (entry, person)

    gives each new person of entries that is not present in people.

Yield Parameters:

  • entry (PersonEntry)

    the input entry with the data we should set on person.

  • person (Ecoportal::API::V1::Person)

    the new person.

Returns:



19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# File 'lib/eco/api/microcases/people/fetch/with_each_starter.rb', line 19

def with_each_starter(entries, people, options, log_present: false, append_created: true)
  starters = []
  micro.with_each(entries, people, options, append_created: append_created) do |entry, person|
    unless person.new?
      if log_present
        log(:error) {
          "This person (id: '#{person.id}') already exists: #{entry.to_s(:identify)}"
        }
      end

      next
    end

    starters << person
    yield(entry, person) if block_given?
  end

  people.newFrom starters
end