Sha256: 969e45d8fa12eba0939e64709dcca1cc5740e43c67379e241aeb183f41a60cdf

Contents?: true

Size: 1.94 KB

Versions: 8

Compression:

Stored size: 1.94 KB

Contents

module Eco
  module API
    class MicroCases
      # Helper to obtain all the elements of `people` anew from the _People Manager_.
      # @note
      #   1. This helper is normally used to run consecutive usecases, where data needs refresh.
      #   2. It only includes new people if they are not dirty (they do not have pending updates)
      #     - This contingency wouldn't be necessary if the server worked perfectly.
      # @param people [Eco::API::Organization::People] the people that needs refresh.
      # @param include_created [Boolean] include people created during this session? (will check `:create` batch jobs).
      # @return [Eco::API::Organization::People] the `People` object with the data.
      def people_refresh(people:, include_created: true) # rubocop:disable Metrics/AbcSize
        people = people.newFrom people.select do |person|
          !person.new? || !person.dirty?
        end

        ini = people.length

        if include_created
          session.job_groups.find_jobs(type: :create).map do |job|
            to_add = job.people.reject(&:dirty?)
            people = people.merge(to_add)
          end
        end

        created = people.length - ini
        msg    = "Going to refresh #{people.length} people with server data"
        msg   += " (including #{created} that were created)" if created.positive?
        logger.info(msg)

        start   = Time.now
        entries = session.batch.get_people(people, silent: true)
        secs    = (Time.now - start).round(3)
        cnt     = entries.count
        per_sec = (cnt.to_f / secs).round(2)
        logger.info("Re-loaded #{cnt} people (out of #{people.length}) in #{secs} seconds (#{per_sec} people/sec)")

        missing = people.length - entries.length
        logger.error("Missed to obtain #{missing} people during the refresh") if missing.positive?

        Eco::API::Organization::People.new(entries)
      end
    end
  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
eco-helpers-2.7.24 lib/eco/api/microcases/people_refresh.rb
eco-helpers-2.7.23 lib/eco/api/microcases/people_refresh.rb
eco-helpers-2.7.22 lib/eco/api/microcases/people_refresh.rb
eco-helpers-2.7.21 lib/eco/api/microcases/people_refresh.rb
eco-helpers-2.7.20 lib/eco/api/microcases/people_refresh.rb
eco-helpers-2.7.19 lib/eco/api/microcases/people_refresh.rb
eco-helpers-2.7.18 lib/eco/api/microcases/people_refresh.rb
eco-helpers-2.7.17 lib/eco/api/microcases/people_refresh.rb