socialforge/db/migrate/20150601032112_about_homewo...

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