class ClassGradePosting < Base::ClassGradePosting
  audited

  belongs_to :student
  belongs_to :classroom, foreign_key: :ClassID
  belongs_to :subject, foreign_key: :SubjectID, class_name: 'ClassSubject'

  has_many :class_students, through: :classroom

  scope :by_classroom, ->(classroom) { where(class_id: classroom) if classroom }
  scope :by_quarter, ->(quarter) { where(quarter: quarter) if quarter }
  scope :with_viewable_grades, -> { joins(:classroom).merge(Classroom.with_viewable_grades) }
  scope :by_student, ->(student_id) { merge(Classroom.by_student(student_id)) }

  scope :by_parent_viewable, ->(student_id) do
    query = joins(:classroom).merge(Classroom.by_parent_viewable(true))
    query.where(student_id: student_id)
  end
end
