Sha256: dd68c23d4a2fdba748709b557b56f44ef8ce05e655666d2ebeaf122638be1df8

Contents?: true

Size: 834 Bytes

Versions: 12

Compression:

Stored size: 834 Bytes

Contents

module CanvasSync
  module Jobs
    class SyncAdminsJob < CanvasSync::Job
      # Syncs Admins using the Canvas API
      #
      #
      # @param job_chain [Hash]
      # @param options [Hash]
      def perform(job_chain, _options)
        updated_admin_ids = []
        api_client = CanvasSync.get_canvas_sync_client(job_chain[:global_options])
        CanvasSync.sync_scope(Account).find_each do |acc|
          api_client.account_admins(acc.canvas_id).all_pages_each do |admin_params|
            admin_params[:account_id] = acc.canvas_id
            admin = update_or_create_model(Admin, admin_params)
            updated_admin_ids.push(admin.id)
          end
        end
        Admin.where.not(id: updated_admin_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_admins_job.rb
canvas_sync-0.16.5 lib/canvas_sync/jobs/sync_admins_job.rb
canvas_sync-0.16.4 lib/canvas_sync/jobs/sync_admins_job.rb
canvas_sync-0.16.3 lib/canvas_sync/jobs/sync_admins_job.rb
canvas_sync-0.16.2 lib/canvas_sync/jobs/sync_admins_job.rb
canvas_sync-0.16.1 lib/canvas_sync/jobs/sync_admins_job.rb
canvas_sync-0.15.1 lib/canvas_sync/jobs/sync_admins_job.rb
canvas_sync-0.15.0 lib/canvas_sync/jobs/sync_admins_job.rb
canvas_sync-0.14.0 lib/canvas_sync/jobs/sync_admins_job.rb
canvas_sync-0.13.0 lib/canvas_sync/jobs/sync_admins_job.rb
canvas_sync-0.12.0 lib/canvas_sync/jobs/sync_admins_job.rb
canvas_sync-0.11.0 lib/canvas_sync/jobs/sync_admins_job.rb