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

Version Path
canvas_sync-0.11.1 lib/canvas_sync/jobs/sync_roles_job.rb
canvas_sync-0.16.5 lib/canvas_sync/jobs/sync_roles_job.rb
canvas_sync-0.16.4 lib/canvas_sync/jobs/sync_roles_job.rb
canvas_sync-0.16.3 lib/canvas_sync/jobs/sync_roles_job.rb
canvas_sync-0.16.2 lib/canvas_sync/jobs/sync_roles_job.rb
canvas_sync-0.16.1 lib/canvas_sync/jobs/sync_roles_job.rb
canvas_sync-0.15.1 lib/canvas_sync/jobs/sync_roles_job.rb
canvas_sync-0.15.0 lib/canvas_sync/jobs/sync_roles_job.rb
canvas_sync-0.14.0 lib/canvas_sync/jobs/sync_roles_job.rb
canvas_sync-0.13.0 lib/canvas_sync/jobs/sync_roles_job.rb
canvas_sync-0.12.0 lib/canvas_sync/jobs/sync_roles_job.rb
canvas_sync-0.11.0 lib/canvas_sync/jobs/sync_roles_job.rb