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