You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
49 lines
2.0 KiB
49 lines
2.0 KiB
6 years ago
|
class HomeworkEvaluationCommentAssginJob < ApplicationJob
|
||
|
queue_as :evaluation_comment
|
||
|
|
||
|
def get_assigned_homeworks(student_works, n, index)
|
||
|
student_works += student_works
|
||
|
student_works[index + 1..index + n]
|
||
|
end
|
||
|
|
||
|
def perform(homework_common_id)
|
||
|
homework_common = HomeworkCommon.find_by(id: homework_common_id)
|
||
|
return if homework_common.blank?
|
||
|
homework_detail_manual = homework_common.homework_detail_manual
|
||
|
|
||
|
if homework_common.homework_type == "group"
|
||
|
student_works = homework_common.student_works.where("work_status != 0").group(:group_id)
|
||
|
student_work_projects = homework_common.student_works.where("work_status != 0").shuffle
|
||
|
student_work_projects.each do |pro_work|
|
||
|
n = homework_detail_manual.evaluation_num
|
||
|
n = (n < student_works.size && n != -1) ? n : student_works.size - 1
|
||
|
work_index = -1
|
||
|
student_works.each_with_index do |stu_work, stu_index|
|
||
|
if stu_work.group_id.to_i == pro_work.group_id.to_i
|
||
|
work_index = stu_index
|
||
|
end
|
||
|
end
|
||
|
assigned_homeworks = get_assigned_homeworks(student_works, n, work_index)
|
||
|
assigned_homeworks.each do |h|
|
||
|
student_works_evaluation_distributions = StudentWorksEvaluationDistribution.new(user_id: pro_work.user_id, student_work_id: h.id)
|
||
|
student_works_evaluation_distributions.save
|
||
|
end
|
||
|
end
|
||
|
|
||
|
else
|
||
|
student_works = homework_common.student_works.has_committed
|
||
|
student_works = student_works.shuffle
|
||
|
student_works.each_with_index do |work, index|
|
||
|
user = work.user
|
||
|
n = homework_detail_manual.evaluation_num
|
||
|
n = (n < student_works.size && n != -1) ? n : student_works.size - 1
|
||
|
assigned_homeworks = get_assigned_homeworks(student_works, n, index)
|
||
|
assigned_homeworks.each do |h|
|
||
|
student_works_evaluation_distributions = StudentWorksEvaluationDistribution.new(user_id: user.id, student_work_id: h.id)
|
||
|
student_works_evaluation_distributions.save
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
end
|