class Mumuki::Classroom::Event::ProgressTransfer::Base
Attributes
indicator[R]
source_organization[R]
Public Class Methods
new(indicator, source_organization, destination_organization)
click to toggle source
# File lib/mumuki/classroom/event/progress_transfer/base.rb, line 4 def initialize(indicator, source_organization, destination_organization) @indicator = indicator @source_organization = source_organization @destination_organization = destination_organization end
Public Instance Methods
execute!()
click to toggle source
# File lib/mumuki/classroom/event/progress_transfer/base.rb, line 10 def execute! raise ActiveRecord::RecordNotFound, "Mumuki::Classroom::Student not found" unless old_student && new_student new_student.destroy_progress_for_guide!(indicator.content) destination_organization.switch! indicator.assignments.each do |assignment| transfer_sibling_for(assignment)&.update! organization: destination_organization.name, course: new_course, guide: guide_h end transfer_guide_progress! update_student!(old_student) update_student!(new_student) end
Private Instance Methods
classroom_sibling_for(assignment)
click to toggle source
# File lib/mumuki/classroom/event/progress_transfer/base.rb, line 49 def classroom_sibling_for(assignment) Mumuki::Classroom::Assignment.classroom_sibling_for(assignment, source_organization.name) end
destination_organization()
click to toggle source
# File lib/mumuki/classroom/event/progress_transfer/base.rb, line 34 def destination_organization @destination_organization end
guide()
click to toggle source
# File lib/mumuki/classroom/event/progress_transfer/base.rb, line 86 def guide indicator.content end
guide_h()
click to toggle source
# File lib/mumuki/classroom/event/progress_transfer/base.rb, line 94 def guide_h @guide_h ||= guide.as_json( only: [:slug, :name], include: { language: { only: [:name, :devicon] } } ).merge( parent: { type: guide_parent.class.to_s, name: guide.name, position: guide_parent.number, chapter: guide.chapter.as_json(only: [:id], methods: [:name]) } ) end
guide_parent()
click to toggle source
# File lib/mumuki/classroom/event/progress_transfer/base.rb, line 90 def guide_parent guide.usage_in_organization end
guide_progress()
click to toggle source
# File lib/mumuki/classroom/event/progress_transfer/base.rb, line 45 def guide_progress Mumuki::Classroom::GuideProgress.find_by(guide_progress_query) end
guide_progress_query()
click to toggle source
# File lib/mumuki/classroom/event/progress_transfer/base.rb, line 73 def guide_progress_query { organization: source_organization, course: old_course, 'guide.slug': guide.slug, 'student.uid': user.uid } end
new_course()
click to toggle source
# File lib/mumuki/classroom/event/progress_transfer/base.rb, line 65 def new_course new_student.course end
new_student()
click to toggle source
# File lib/mumuki/classroom/event/progress_transfer/base.rb, line 53 def new_student @new_student ||= student_for destination_organization.name end
old_course()
click to toggle source
# File lib/mumuki/classroom/event/progress_transfer/base.rb, line 69 def old_course old_student.course end
old_student()
click to toggle source
# File lib/mumuki/classroom/event/progress_transfer/base.rb, line 57 def old_student @old_student ||= student_for source_organization end
student_for(organization)
click to toggle source
# File lib/mumuki/classroom/event/progress_transfer/base.rb, line 61 def student_for(organization) Mumuki::Classroom::Student.last_updated_student_by organization: organization, uid: user.uid end
transfer_guide_progress!()
click to toggle source
# File lib/mumuki/classroom/event/progress_transfer/base.rb, line 38 def transfer_guide_progress! transfer_item.update!(guide: guide_h, student: new_student.dup, organization: destination_organization.name, course: new_course) end
update_student!(student)
click to toggle source
# File lib/mumuki/classroom/event/progress_transfer/base.rb, line 29 def update_student!(student) student.update_all_stats student.update_last_assignment_for end
user()
click to toggle source
# File lib/mumuki/classroom/event/progress_transfer/base.rb, line 82 def user indicator.user end