class Eco::API::UseCases::DefaultCases::ChangeEMailCase

Public Instance Methods

main(entries, people, session, options, usecase) click to toggle source

Target people with non-up-to-date emails will be updated to the new email

# File lib/eco/api/usecases/default_cases/change_email_case.rb, line 6
def main(entries, people, session, options, usecase)
  micro    = session.micro
  remove   = session.new_job("main", "remove account", :update, usecase, :account)
  change   = session.new_job("main", "change email",   :update, usecase, :core)
  invite   = session.new_job("post", "add account",    :update, usecase, [:core, :account])

  micro.with_each_present(entries, people, options, log_starter: true) do |entry, person|
    if entry.email != person.email
      super_id      = person.supervisor_id
      s_account_doc = person.account&.doc
      account_doc   = s_account_doc ? JSON.parse(s_account_doc.to_json) : nil

      remove.add(person) {|person| person.account = nil        }
      change.add(person) {|person| person.email   = entry.email}
      invite.add(person) do |person|
        person.account       = account_doc if account_doc
        person.supervisor_id = super_id
      end
    end
  end
end