class Covid::Screening < ApplicationRecord
  belongs_to :student

  has_many :answers, dependent: :destroy, autosave: true

  validates :date, uniqueness: { scope: :student_id, message: 'Date has already been taken' },
    presence: true

  scope :by_date, ->(date) { where(date: date) if date }
  scope :by_date_range, ->(range) { where(date: range) if range.present? }

  scope :by_grades, ->(grades) do
    return if grades.blank?

    joins(:student).where(Students: { Grade: grades })
  end

  scope :by_classroom, ->(classroom) do
    return if classroom.nil?

    joins(:student).merge(Student.by_classroom(classroom))
  end

  def self.today
    where(date: Time.zone.today)
  end
end
