@ -57,47 +57,97 @@ class HomeworkService
[ @bid , @totle_size , @cur_size , @percent ]
[ @bid , @totle_size , @cur_size , @percent ]
end
end
#启动匿评
# 启动匿评 操作 逻辑改变,暂不删除
#statue 1:启动成功, 2: 启动失败, 作业总数大于等于2份时才能启动匿评, 3:已开启匿评,请务重复开启
# #启动匿评
def start_anonymous_comment params , current_user
# #statue 1:启动成功, 2: 启动失败, 作业总数大于等于2份时才能启动匿评, 3:已开启匿评,请务重复开启
@bid = Bid . find ( params [ :id ] )
# def start_anonymous_comment params,current_user
@course = @bid . courses . first
# @bid = Bid.find(params[:id])
unless is_course_teacher ( current_user , @course ) || current_user . admin?
# @course = @bid.courses.first
@statue = 4
# unless is_course_teacher(current_user,@course) || current_user.admin?
raise '403'
# @statue = 4
end
# raise '403'
if ( @bid . comment_status == 0 )
# end
homeworks = @bid . homeworks
# if(@bid.comment_status == 0)
if ( homeworks && homeworks . size > = 2 )
# homeworks = @bid.homeworks
homeworks . each_with_index do | homework , index |
# if(homeworks && homeworks.size >= 2)
user = homework . user
# homeworks.each_with_index do |homework, index|
n = @bid . evaluation_num
# user = homework.user
n = n < homeworks . size ? n : homeworks . size - 1
# n = @bid.evaluation_num
assigned_homeworks = get_assigned_homeworks ( homeworks , n , index )
# n = n < homeworks.size ? n : homeworks.size - 1
assigned_homeworks . each do | h |
# assigned_homeworks = get_assigned_homeworks(homeworks, n, index)
@homework_evaluation = HomeworkEvaluation . new ( user_id : user . id , homework_attach_id : h . id )
# assigned_homeworks.each do |h|
@homework_evaluation . save
# @homework_evaluation = HomeworkEvaluation.new(user_id: user.id, homework_attach_id: h.id)
end
# @homework_evaluation.save
end
# end
@bid . update_column ( 'comment_status' , 1 )
# end
@statue = 1
# @bid.update_column('comment_status', 1)
else
# @statue = 1
@statue = 2
# else
end
# @statue = 2
else
# end
@statue = 3
# else
end
# @statue = 3
@statue
# end
end
# @statue
#关闭匿评
# end
def stop_anonymous_comment params , current_user
# #关闭匿评
@bid = Bid . find ( params [ :id ] )
# def stop_anonymous_comment params,current_user
@course = @bid . courses . first
# @bid = Bid.find(params[:id])
unless is_course_teacher ( current_user , @course ) || current_user . admin?
# @course = @bid.courses.first
raise '403'
# unless is_course_teacher(current_user,@course) || current_user.admin?
end
# raise '403'
@bid . update_column ( 'comment_status' , 2 )
# end
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 该作品的所有附件
# attachs 该作品的所有附件