lib/canvas_sync/jobs/sync_admins_job.rb



module CanvasSync
  module Jobs
    class SyncAdminsJob < CanvasSync::Job
      # Syncs Admins using the Canvas API
      #
      #
      # @param options [Hash]
      def perform(options)
        updated_admin_ids = []
        api_client = CanvasSync.get_canvas_sync_client(batch_context)
        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')
      end
    end
  end
end