class Mumuki::Classroom::Event::UserChanged

Attributes

changes[RW]

Public Class Methods

execute!(user_h) click to toggle source
# File lib/mumuki/classroom/event/user_changed.rb, line 6
def execute!(user_h)
  set_diff_permissions user_h
  update_user_model user_h
end

Private Class Methods

set_diff_permissions(user) click to toggle source
# File lib/mumuki/classroom/event/user_changed.rb, line 22
def set_diff_permissions(user)
  self.changes = Mumukit::Auth::Permissions::Diff.diff(user[:old_permissions], user[:new_permissions]).changes_by_organization
end
student_added(organization, user, granted_slug) click to toggle source
# File lib/mumuki/classroom/event/user_changed.rb, line 26
def student_added(organization, user, granted_slug)
  uid = user[:uid]
  students = Mumuki::Classroom::Student.where(organization: organization, course: granted_slug.to_s, uid: uid)
  if students.exists?
    students.first.attach!
  else
    student = Mumuki::Classroom::Student.attributes_from_uid uid
    Mumuki::Classroom::Student.create! student.merge(organization: organization, course: granted_slug.to_s)
  end
end
student_removed(organization, user, granted_slug) click to toggle source
# File lib/mumuki/classroom/event/user_changed.rb, line 37
def student_removed(organization, user, granted_slug)
  student = Mumuki::Classroom::Student.find_by!(organization: organization, course: granted_slug.to_s, uid: user[:uid])
  student.detach!
end
teacher_added(organization, user, granted_slug) click to toggle source
# File lib/mumuki/classroom/event/user_changed.rb, line 42
def teacher_added(organization, user, granted_slug)
  uid = user[:uid]
  teacher = Mumuki::Classroom::Teacher.find_or_create_by!(organization: organization, course: granted_slug.to_s, uid: uid)
  teacher.update_attributes!(Mumuki::Classroom::Teacher.attributes_from_uid(uid))
end
teacher_removed(organization, user, granted_slug) click to toggle source
# File lib/mumuki/classroom/event/user_changed.rb, line 48
def teacher_removed(organization, user, granted_slug)
  teacher = Mumuki::Classroom::Teacher.find_by!(organization: organization, course: granted_slug.to_s, uid: user[:uid])
  teacher.destroy!
end
update_user_model(user) click to toggle source
# File lib/mumuki/classroom/event/user_changed.rb, line 13
def update_user_model(user)
  Organization.pluck(:name).each do |organization|
    changes[organization]&.each do |change|
      message = change.description
      self.send message, organization, user, change.granted_slug if self.respond_to? message, true
    end
  end
end