module CourseMember

Public Instance Methods

as_normalized_json(member = {}) click to toggle source
# File lib/mumuki/classroom/models/concerns/course_member.rb, line 43
def as_normalized_json(member = {})
  member.as_json.merge uid: (member[:uid] || member[:email])&.downcase,
                       email: member[:email]&.downcase,
                       last_name: member[:last_name]&.downcase&.titleize,
                       first_name: member[:first_name]&.downcase&.titleize
end
as_user(verified: true) click to toggle source
# File lib/mumuki/classroom/models/concerns/course_member.rb, line 20
def as_user(verified: true)
  member_json = as_json.merge_if(verified, validated_first_name: first_name, validated_last_name: last_name)
  User.whitelist_attributes member_json
end
attributes_from_uid(uid) click to toggle source
# File lib/mumuki/classroom/models/concerns/course_member.rb, line 31
def attributes_from_uid(uid)
  whitelist_attributes User.locate!(uid).to_resource_h
end
create_from_json!(member_json) click to toggle source
# File lib/mumuki/classroom/models/concerns/course_member.rb, line 35
def create_from_json!(member_json)
  create! normalized_attributes_from_json(member_json)
end
ensure_not_exists!(query) click to toggle source
# File lib/mumuki/classroom/models/concerns/course_member.rb, line 26
def ensure_not_exists!(query)
  existing_members = where(query)
  raise Mumuki::Classroom::CourseMemberExistsError, {existing_members: existing_members.map(&:uid)}.to_json if existing_members.exists?
end
normalized_attributes_from_json(member_json) click to toggle source
# File lib/mumuki/classroom/models/concerns/course_member.rb, line 39
def normalized_attributes_from_json(member_json)
  whitelist_attributes as_normalized_json(member_json)
end