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.
|
|
|
|
class StudentWorksScore < ApplicationRecord
|
|
|
|
|
#appeal_status: 0:正常;1:申诉中,2:撤销申诉;3:申诉成功;4:申诉被拒绝;5:申诉失效
|
|
|
|
|
belongs_to :student_work
|
|
|
|
|
belongs_to :user
|
|
|
|
|
has_many :journals_for_messages, -> { order('created_on desc') }, as: :jour, dependent: :destroy
|
|
|
|
|
has_one :student_works_scores_appeal, dependent: :destroy
|
|
|
|
|
has_many :tidings, as: :container, dependent: :destroy
|
|
|
|
|
has_many :attachments, as: :container, dependent: :destroy
|
|
|
|
|
|
|
|
|
|
validates :comment, length: { maximum: 2000 }
|
|
|
|
|
|
|
|
|
|
def show_name identity, user
|
|
|
|
|
identity < Course::STUDENT || self.user == user || self.reviewer_role != 3
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
def allow_delete current_user, identity
|
|
|
|
|
self.is_invalid && (current_user == self.user || identity < Course::STUDENT) ||
|
|
|
|
|
(self.score.nil? && current_user == self.user)
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
# 匿评分
|
|
|
|
|
def stu_score work_id
|
|
|
|
|
StudentWorksScore.find_by_sql("SELECT AVG(score) AS score FROM student_works_scores WHERE
|
|
|
|
|
student_work_id = #{work_id} AND reviewer_role = 3 AND score IS NOT NULL
|
|
|
|
|
AND appeal_status != 3 AND is_invalid = 0").first.score.try(:round, 2).to_f
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
# 助教平均分
|
|
|
|
|
def ta_score work_id
|
|
|
|
|
StudentWorksScore.find_by_sql("SELECT AVG(score) AS score FROM student_works_scores WHERE
|
|
|
|
|
student_work_id = #{work_id} AND reviewer_role = 2 AND score IS NOT NULL
|
|
|
|
|
AND is_invalid = 0").first.score.try(:round, 2).to_f
|
|
|
|
|
end
|
|
|
|
|
end
|