Sha256: eb55d9907b913b32c499c59fafcd3b6fbcd30de7bbf49e8dcba12dc7b488d898
Contents?: true
Size: 793 Bytes
Versions: 12
Compression:
Stored size: 793 Bytes
Contents
module CanvasSync module Jobs class SyncRolesJob < CanvasSync::Job # Syncs Roles using the Canvas API # # # @param job_chain [Hash] # @param options [Hash] 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 end end end
Version data entries
12 entries across 12 versions & 1 rubygems