Class: Mumuki::Classroom::Student
- Includes:
- CourseMember
- Defined in:
- lib/mumuki/classroom/models/student.rb
Class Method Summary collapse
- .attach_all_by!(uids, query) ⇒ Object
- .detach_all_by!(uids, query) ⇒ Object
- .last_updated_student_by(query) ⇒ Object
- .report(criteria, &block) ⇒ Object
- .uid_field ⇒ Object
- .update_all_stats(options) ⇒ Object
Instance Method Summary collapse
- #as_submission_json ⇒ Object
- #attach! ⇒ Object
- #course_name ⇒ Object
- #destroy_cascade! ⇒ Object
- #destroy_progress! ⇒ Object
- #destroy_progress_for_guide!(guide) ⇒ Object
- #destroy_progress_for_query!(query) ⇒ Object
- #detach! ⇒ Object
- #sub_student_query(uid) ⇒ Object
- #transfer_to!(organization, course) ⇒ Object
- #update_all_stats ⇒ Object
- #update_last_assignment_for ⇒ Object
Methods included from CourseMember
Methods inherited from Document
inherited, whitelist_attributes
Class Method Details
.attach_all_by!(uids, query) ⇒ Object
91 92 93 94 95 96 |
# 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) ⇒ Object
84 85 86 87 88 89 |
# 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) ⇒ Object
80 81 82 |
# 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) ⇒ Object
72 73 74 |
# 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 ⇒ Object
98 99 100 |
# File 'lib/mumuki/classroom/models/student.rb', line 98 def uid_field :uid end |
.update_all_stats(options) ⇒ Object
76 77 78 |
# File 'lib/mumuki/classroom/models/student.rb', line 76 def update_all_stats() where().each(&:update_all_stats) end |
Instance Method Details
#as_submission_json ⇒ Object
67 68 69 |
# 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! ⇒ Object
51 52 53 54 55 |
# 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 ⇒ Object
14 15 16 |
# File 'lib/mumuki/classroom/models/student.rb', line 14 def course_name course.to_mumukit_slug.course end |
#destroy_cascade! ⇒ Object
18 19 20 21 |
# File 'lib/mumuki/classroom/models/student.rb', line 18 def destroy_cascade! destroy_progress! destroy! end |
#destroy_progress! ⇒ Object
23 24 25 |
# 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) ⇒ Object
27 28 29 |
# 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) ⇒ Object
31 32 33 34 |
# 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! ⇒ Object
45 46 47 48 49 |
# 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) ⇒ Object
41 42 43 |
# 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) ⇒ Object
57 58 59 60 61 |
# 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 ⇒ Object
36 37 38 39 |
# 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 ⇒ Object
63 64 65 |
# 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 |