Sha256: 50825a6c04d5af0908a5fe02cc572d59385ee73b2769e8afc114ba068b916401

Contents?: true

Size: 1.33 KB

Versions: 2

Compression:

Stored size: 1.33 KB

Contents

module CanvasSync
  module Jobs
    # ActiveJob class that starts a Canvas provisioning report
    class SyncProvisioningReportJob < CanvasSync::Job
      # @param options [Hash] If options contains a :term_scope a seperate provisioning report
      #   will be started for each term in that scope. :models should be an array of
      #   models to sync.
      def perform(options)
        start_report(report_params(options), options)
      end

      protected

      def start_report(report_params, options)
        CanvasSync::Jobs::ReportStarter.perform_later(
          "proservices_provisioning_csv",
          report_params,
          CanvasSync::Processors::ProvisioningReportProcessor.to_s,
          options,
        )
      end

      def report_params(options, canvas_term_id = options[:canvas_term_id] || batch_context[:canvas_term_id])
        params = {
          include_deleted: true,
        }

        options[:models].each do |model|
          # group_membership is the only model param that is singular :(
          model = 'group_membership' if model == 'group_memberships'
          params[model] = true
        end

        params[:enrollment_term_id] = canvas_term_id if canvas_term_id

        params.merge!(options[:report_parameters]) if options[:report_parameters].present?

        { parameters: params }
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
canvas_sync-0.17.0.beta2 lib/canvas_sync/jobs/sync_provisioning_report_job.rb
canvas_sync-0.17.0.beta1 lib/canvas_sync/jobs/sync_provisioning_report_job.rb