Sha256: 8343b78f4e58567382ec86b1f87a5f668e32e9373ec96b5433ac9355b55a9ba2

Contents?: true

Size: 1.6 KB

Versions: 19

Compression:

Stored size: 1.6 KB

Contents

<%= autogenerated_event_warning %>

class LiveEvents::SubmissionEvent < LiveEvents::BaseEvent

  # The following is provided in the live events call:
  # {
  #     submission_id: submission.global_id,
  #     assignment_id: submission.global_assignment_id,
  #     user_id: submission.global_user_id,
  #     submitted_at: submission.submitted_at,
  #     graded_at: submission.graded_at,
  #     updated_at: submission.updated_at,
  #     score: submission.score,
  #     grade: submission.grade,
  #     submission_type: submission.submission_type,
  #     body: LiveEvents.truncate(submission.body),
  #     url: submission.url,
  #     attempt: submission.attempt
  # }

  def perform(event_payload)
    super
    return if assignment.nil? || user.nil?
    attrs = {
        canvas_submission_id: local_canvas_id(payload[:submission_id]),
        assignment_id: assignment.try(:id),
        user_id: user.try(:id),
        submitted_at: payload[:submitted_at],
        graded_at: payload[:graded_at],
        score: payload[:score],
        grade: payload[:grade],
        submission_type: payload[:submission_type]
    }
    create_or_update(attrs)
  rescue => e
    log_error e
  ensure
    true
  end
end

private
def create_or_update(attrs)
  submission = Submission.where(canvas_submission_id: attrs[:canvas_submission_id]).first_or_initialize
  submission.assign_attributes(attrs)
  submission.save!
  submission
end


def assignment
  @assignment ||= Assignment.find_by(canvas_assignment_id: local_canvas_id(payload[:assignment_id]))
end

def user
  @user ||= User.find_by(canvas_user_id: local_canvas_id(payload[:user_id]))
end

Version data entries

19 entries across 19 versions & 1 rubygems

Version Path
canvas_sync-0.3.23 lib/canvas_sync/generators/templates/services/live_events/submission/submission_event.rb
canvas_sync-0.3.22 lib/canvas_sync/generators/templates/services/live_events/submission/submission_event.rb
canvas_sync-0.3.21 lib/canvas_sync/generators/templates/services/live_events/submission/submission_event.rb
canvas_sync-0.3.20 lib/canvas_sync/generators/templates/services/live_events/submission/submission_event.rb
canvas_sync-0.3.19 lib/canvas_sync/generators/templates/services/live_events/submission/submission_event.rb
canvas_sync-0.3.18 lib/canvas_sync/generators/templates/services/live_events/submission/submission_event.rb
canvas_sync-0.3.17 lib/canvas_sync/generators/templates/services/live_events/submission/submission_event.rb
canvas_sync-0.3.16 lib/canvas_sync/generators/templates/services/live_events/submission/submission_event.rb
canvas_sync-0.3.15 lib/canvas_sync/generators/templates/services/live_events/submission/submission_event.rb
canvas_sync-0.3.14 lib/canvas_sync/generators/templates/services/live_events/submission/submission_event.rb
canvas_sync-0.3.13 lib/canvas_sync/generators/templates/services/live_events/submission/submission_event.rb
canvas_sync-0.3.12 lib/canvas_sync/generators/templates/services/live_events/submission/submission_event.rb
canvas_sync-0.3.11 lib/canvas_sync/generators/templates/services/live_events/submission/submission_event.rb
canvas_sync-0.3.10 lib/canvas_sync/generators/templates/services/live_events/submission/submission_event.rb
canvas_sync-0.3.9 lib/canvas_sync/generators/templates/services/live_events/submission/submission_event.rb
canvas_sync-0.3.8 lib/canvas_sync/generators/templates/services/live_events/submission/submission_event.rb
canvas_sync-0.3.7 lib/canvas_sync/generators/templates/services/live_events/submission/submission_event.rb
canvas_sync-0.3.6 lib/canvas_sync/generators/templates/services/live_events/submission/submission_event.rb
canvas_sync-0.3.5 lib/canvas_sync/generators/templates/services/live_events/submission/submission_event.rb