@ -57,47 +57,97 @@ class HomeworkService
[ @bid , @totle_size , @cur_size , @percent ]
end
#启动匿评
#statue 1:启动成功, 2: 启动失败, 作业总数大于等于2份时才能启动匿评, 3:已开启匿评,请务重复开启
def start_anonymous_comment params , current_user
@bid = Bid . find ( params [ :id ] )
@course = @bid . courses . first
unless is_course_teacher ( current_user , @course ) || current_user . admin?
@statue = 4
raise '403'
end
if ( @bid . comment_status == 0 )
homeworks = @bid . homeworks
if ( homeworks && homeworks . size > = 2 )
homeworks . each_with_index do | homework , index |
user = homework . user
n = @bid . evaluation_num
n = n < homeworks . size ? n : homeworks . size - 1
assigned_homeworks = get_assigned_homeworks ( homeworks , n , index )
assigned_homeworks . each do | h |
@homework_evaluation = HomeworkEvaluation . new ( user_id : user . id , homework_attach_id : h . id )
@homework_evaluation . save
end
end
@bid . update_column ( 'comment_status' , 1 )
@statue = 1
else
@statue = 2
end
else
@statue = 3
end
@statue
end
#关闭匿评
def stop_anonymous_comment params , current_user
@bid = Bid . find ( params [ :id ] )
@course = @bid . courses . first
unless is_course_teacher ( current_user , @course ) || current_user . admin?
raise '403'
end
@bid . update_column ( 'comment_status' , 2 )
end
# 启动匿评 操作 逻辑改变,暂不删除
# #启动匿评
# #statue 1:启动成功, 2: 启动失败, 作业总数大于等于2份时才能启动匿评, 3:已开启匿评,请务重复开启
# def start_anonymous_comment params,current_user
# @bid = Bid.find(params[:id])
# @course = @bid.courses.first
# unless is_course_teacher(current_user,@course) || current_user.admin?
# @statue = 4
# raise '403'
# end
# if(@bid.comment_status == 0)
# homeworks = @bid.homeworks
# if(homeworks && homeworks.size >= 2)
# homeworks.each_with_index do |homework, index|
# user = homework.user
# n = @bid.evaluation_num
# n = n < homeworks.size ? n : homeworks.size - 1
# assigned_homeworks = get_assigned_homeworks(homeworks, n, index)
# assigned_homeworks.each do |h|
# @homework_evaluation = HomeworkEvaluation.new(user_id: user.id, homework_attach_id: h.id)
# @homework_evaluation.save
# end
# end
# @bid.update_column('comment_status', 1)
# @statue = 1
# else
# @statue = 2
# end
# else
# @statue = 3
# end
# @statue
# end
# #关闭匿评
# def stop_anonymous_comment params,current_user
# @bid = Bid.find(params[:id])
# @course = @bid.courses.first
# unless is_course_teacher(current_user,@course) || current_user.admin?
# raise '403'
# end
# @bid.update_column('comment_status', 2)
# end
# 开启匿评
#statue 1:启动成功, 2: 启动失败, 作业总数大于等于2份时才能启动匿评, 3:已开启匿评,请务重复开启,4:没有开启匿评的权限
def start_anonymous_comment params , current_user
homework = HomeworkCommon . find ( params [ :homework_id ] )
return { :status = > 4 } unless current_user . admin? || current_user . allowed_to? ( :as_teacher , Course . find ( params [ :course_id ] ) )
return { :status = > 5 } if Time . parse ( homework . end_time . to_s ) . strftime ( " %Y-%m-%d " ) > = Time . now . strftime ( " %Y-%m-%d " )
homework_detail_manual = homework . homework_detail_manual
if homework_detail_manual . comment_status == 1
student_works = homework . student_works
if student_works && student_works . size > = 2
student_works . each_with_index do | work , index |
user = work . user
n = homework_detail_manual . evaluation_num
n = n < student_works . size ? 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
homework_detail_manual . update_column ( 'comment_status' , 2 )
statue = 1
else
statue = 2
end
else
statue = 3
end
{ :status = > statue }
end
def get_assigned_homeworks ( student_works , n , index )
student_works += student_works
student_works [ index + 1 .. index + n ]
end
def stop_anonymous_comment params , current_user
homework = HomeworkCommon . find ( params [ :homework_id ] )
homework_detail_manual = homework . homework_detail_manual
homework_detail_manual . update_column ( 'comment_status' , 3 )
work_ids = " ( " << homework . student_works . map ( & :id ) . join ( " , " ) << " ) "
homework . student_works . each do | student_work |
absence_penalty_count = student_work . user . student_works_evaluation_distributions . where ( " student_work_id IN #{ work_ids } " ) . count - student_work . user . student_works_scores . where ( " student_work_id IN #{ work_ids } " ) . count
student_work . absence_penalty = absence_penalty_count > 0 ? absence_penalty_count * homework_detail_manual . absence_penalty : 0
student_work . save
end
end
# 匿评作品详情
# attachs 该作品的所有附件