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.
29 lines
973 B
29 lines
973 B
5 years ago
|
class MigrateExerciseScoreTask
|
||
|
include ExercisesHelper
|
||
|
include GitHelper
|
||
|
|
||
|
def calculate exercise_id, user_login=nil
|
||
|
exercise = Exercise.find_by(id: exercise_id)
|
||
|
if exercise.present?
|
||
|
if user_login.present?
|
||
|
ex_users = exercise.exercise_users.where(commit_status: 1, user_id: User.where(login: user_login).pluck(:id))
|
||
|
else
|
||
|
ex_users = exercise.exercise_users.where(commit_status: 1)
|
||
|
end
|
||
|
|
||
|
ex_users.each do |ex_user|
|
||
|
puts ex_user.id
|
||
|
calculate_result = calculate_student_score(exercise, ex_user, ex_user.end_at)
|
||
|
s_score = calculate_result[:total_score]
|
||
|
total_score_subjective_score = ex_user.subjective_score < 0.0 ? 0.0 : ex_user.subjective_score
|
||
|
total_score = s_score + total_score_subjective_score
|
||
|
|
||
|
commit_option = {
|
||
|
:objective_score => s_score,
|
||
|
:score => total_score,
|
||
|
}
|
||
|
ex_user.update_attributes(commit_option)
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
end
|