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