class Mumuki::Classroom::Student

Public Class Methods

attach_all_by!(uids, query) click to toggle source
# File lib/mumuki/classroom/models/student.rb, line 91
def attach_all_by!(uids, query)
  where(query).in(uid: uids).unset(:detached, :detached_at)
  criteria = query.merge('student.uid': {'$in': uids})
  Mumuki::Classroom::Assignment.attach_all_by! criteria
  Mumuki::Classroom::GuideProgress.attach_all_by! criteria
end
detach_all_by!(uids, query) click to toggle source
# File lib/mumuki/classroom/models/student.rb, line 84
def detach_all_by!(uids, query)
  where(query).in(uid: uids).update_all(detached: true, detached_at: Time.now)
  criteria = query.merge('student.uid': {'$in': uids})
  Mumuki::Classroom::Assignment.detach_all_by! criteria
  Mumuki::Classroom::GuideProgress.detach_all_by! criteria
end
last_updated_student_by(query) click to toggle source
# File lib/mumuki/classroom/models/student.rb, line 80
def last_updated_student_by(query)
  where(query).ne(detached: true).order_by(updated_at: :desc).first
end
report(criteria, &block) click to toggle source
# File lib/mumuki/classroom/models/student.rb, line 72
def report(criteria, &block)
  where(criteria).select(&block).as_json(only: [:first_name, :last_name, :email, :created_at, :detached_at])
end
uid_field() click to toggle source
# File lib/mumuki/classroom/models/student.rb, line 98
def uid_field
  :uid
end
update_all_stats(options) click to toggle source
# File lib/mumuki/classroom/models/student.rb, line 76
def update_all_stats(options)
  where(options).each(&:update_all_stats)
end

Public Instance Methods

as_submission_json() click to toggle source
# File lib/mumuki/classroom/models/student.rb, line 67
def as_submission_json
  as_json(only: %i(uid name email image_url social_id last_name first_name)).compact
end
attach!() click to toggle source
# File lib/mumuki/classroom/models/student.rb, line 51
def attach!
  unset :detached, :detached_at
  Mumuki::Classroom::Assignment.attach_all_by! sub_student_query(uid)
  Mumuki::Classroom::GuideProgress.attach_all_by! sub_student_query(uid)
end
course_name() click to toggle source
# File lib/mumuki/classroom/models/student.rb, line 14
def course_name
  course.to_mumukit_slug.course
end
destroy_cascade!() click to toggle source
# File lib/mumuki/classroom/models/student.rb, line 18
def destroy_cascade!
  destroy_progress!
  destroy!
end
destroy_progress!() click to toggle source
# File lib/mumuki/classroom/models/student.rb, line 23
def destroy_progress!
  destroy_progress_for_query!(sub_student_query uid)
end
destroy_progress_for_guide!(guide) click to toggle source
# File lib/mumuki/classroom/models/student.rb, line 27
def destroy_progress_for_guide!(guide)
  destroy_progress_for_query!(sub_student_query(uid).merge 'guide.slug': guide.slug)
end
destroy_progress_for_query!(query) click to toggle source
# File lib/mumuki/classroom/models/student.rb, line 31
def destroy_progress_for_query!(query)
  Mumuki::Classroom::GuideProgress.destroy_all_by!(query)
  Mumuki::Classroom::Assignment.destroy_all_by!(query)
end
detach!() click to toggle source
# File lib/mumuki/classroom/models/student.rb, line 45
def detach!
  update_attributes! detached: true, detached_at: Time.now
  Mumuki::Classroom::Assignment.detach_all_by! sub_student_query(uid)
  Mumuki::Classroom::GuideProgress.detach_all_by! sub_student_query(uid)
end
sub_student_query(uid) click to toggle source
# File lib/mumuki/classroom/models/student.rb, line 41
def sub_student_query(uid)
  {'organization': organization, 'course': course, 'student.uid': uid}
end
transfer_to!(organization, course) click to toggle source
# File lib/mumuki/classroom/models/student.rb, line 57
def transfer_to!(organization, course)
  Mumuki::Classroom::Assignment.transfer_all_by! sub_student_query(uid), organization, course
  Mumuki::Classroom::GuideProgress.transfer_all_by! sub_student_query(uid), organization, course
  update_attributes! organization: organization, course: course
end
update_all_stats() click to toggle source
# File lib/mumuki/classroom/models/student.rb, line 36
def update_all_stats
  all_stats = Mumuki::Classroom::Assignment.stats_by(sub_student_query uid)
  update_attributes!(stats: all_stats)
end
update_last_assignment_for() click to toggle source
# File lib/mumuki/classroom/models/student.rb, line 63
def update_last_assignment_for
  update_attributes!(last_assignment: Mumuki::Classroom::GuideProgress.last_assignment_by(sub_student_query uid))
end