127 lines
4.7 KiB
Ruby
127 lines
4.7 KiB
Ruby
#encoding=UTF-8
|
|
class AboutHomework < ActiveRecord::Migration
|
|
def up
|
|
Bid.where("reward_type = 3").each do |bid|
|
|
transaction do
|
|
if bid.courses.first
|
|
# 作品基础属性
|
|
homework = HomeworkCommon.new
|
|
homework.name = bid.name
|
|
homework.description = bid.description
|
|
homework.user_id = bid.author_id
|
|
homework.end_time = bid.deadline
|
|
homework.publish_time = bid.deadline
|
|
bid.open_anonymous_evaluation == 1 ? homework.homework_type = 1 : homework.homework_type = 0
|
|
homework.late_penalty = 0
|
|
homework.course_id = bid.courses.first.id
|
|
homework.created_at = bid.created_on
|
|
homework.updated_at = bid.updated_on
|
|
homework.save
|
|
|
|
#个人动态
|
|
bid.acts.each do |act|
|
|
act.act_type = homework.class.to_s
|
|
act.act_id = homework.id
|
|
act.save
|
|
end
|
|
|
|
#作业附件
|
|
bid.attachments.each do |attach|
|
|
attach.container = homework
|
|
attach.save
|
|
end
|
|
|
|
# 匿评作业相关属性
|
|
homework_detail_manual = HomeworkDetailManual.new
|
|
homework_detail_manual.ta_proportion = 0.6
|
|
homework_detail_manual.comment_status = bid.comment_status + 1
|
|
homework_detail_manual.evaluation_start = bid.created_on
|
|
homework_detail_manual.evaluation_end = bid.created_on
|
|
homework_detail_manual.evaluation_num = bid.evaluation_num
|
|
homework_detail_manual.absence_penalty = 0
|
|
homework_detail_manual.homework_common = homework
|
|
homework_detail_manual.save
|
|
|
|
#作品列表
|
|
bid.homeworks.each do |homework_attach|
|
|
student_work = StudentWork.new
|
|
student_work.name = homework_attach.name
|
|
student_work.description = homework_attach.description
|
|
student_work.user_id = homework_attach.user_id
|
|
student_work.project_id = homework_attach.project_id
|
|
student_work.homework_common = homework
|
|
student_work.save
|
|
|
|
#作品文件
|
|
homework_attach.attachments.each do |attach|
|
|
attach.container = student_work
|
|
attach.save
|
|
end
|
|
|
|
#作品匿评列表
|
|
homework_attach.homework_evaluations.each do |homework_evaluation|
|
|
student_work_evaluation = StudentWorksEvaluationDistribution.new
|
|
student_work_evaluation.user_id = homework_evaluation.user_id
|
|
student_work_evaluation.student_work = student_work
|
|
student_work_evaluation.save
|
|
end
|
|
|
|
#评分评论相关
|
|
stars_reates = homework_attach.rates(:quality)
|
|
if stars_reates
|
|
stars_reates.each do |reate|
|
|
student_work_score = StudentWorksScore.new
|
|
student_work_score.user_id = reate.rater_id
|
|
student_work_score.score = reate.stars * 20
|
|
student_work_score.student_work = student_work
|
|
rater = User.find reate.rater_id
|
|
if rater
|
|
member = rater.members.where("course_id = ?",bid.courses.first.id).first
|
|
if member
|
|
role = member.roles.first.name
|
|
case role
|
|
when "Teacher"
|
|
student_work_score.reviewer_role = 1
|
|
when "Manager"
|
|
student_work_score.reviewer_role = 1
|
|
when "TeachingAsistant"
|
|
student_work_score.reviewer_role = 2
|
|
when "Student"
|
|
student_work_score.reviewer_role = 3
|
|
end
|
|
else
|
|
student_work_score.reviewer_role = 3
|
|
end
|
|
else
|
|
student_work_score.reviewer_role = 3
|
|
end
|
|
|
|
jour = homework_attach.journals_for_messages.where("is_comprehensive_evaluation = 1 and user_id = #{reate.rater_id}").order("created_on DESC").first
|
|
if jour
|
|
student_work_score.comment = jour.notes
|
|
student_work_score.save
|
|
#老师反馈附件
|
|
homework_attach.attachments.each do |attach|
|
|
attach.container = student_work_score
|
|
attach.save
|
|
end
|
|
else
|
|
student_work_score.save
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
def down
|
|
HomeworkCommon.destroy_all
|
|
HomeworkDetailManual.destroy_all
|
|
StudentWork.destroy_all
|
|
StudentWorksScore.destroy_all
|
|
StudentWorksEvaluationDistribution.destroy_all
|
|
end
|
|
end
|