Class: CanvasSync::Jobs::SyncRolesJob

Inherits:
CanvasSync::Job show all
Defined in:
lib/canvas_sync/jobs/sync_roles_job.rb

Instance Method Summary collapse

Methods inherited from CanvasSync::Job

#create_job_log, #report_checker_wait_time, #update_or_create_model

Instance Method Details

#perform(job_chain, _options) ⇒ Object

Syncs Roles using the Canvas API

Parameters:

  • job_chain (Hash)
  • options (Hash)


9
10
11
12
13
14
15
16
17
18
19
20
# File 'lib/canvas_sync/jobs/sync_roles_job.rb', line 9

def perform(job_chain, _options)
  updated_role_ids = []
  api_client = CanvasSync.get_canvas_sync_client(job_chain[:global_options])
  CanvasSync.sync_scope(Account).find_each do |acc|
    api_client.list_roles(acc.canvas_id, state: %w[active inactive]).all_pages_each do |role_params|
      role = update_or_create_model(Role, role_params)
      updated_role_ids.push(role.id)
    end
  end
  Role.where.not(id: updated_role_ids).update_all(workflow_state: 'inactive')
  CanvasSync.invoke_next(job_chain)
end