class Announcement < ApplicationRecord
  belongs_to :user

  validates :content, presence: true
  validates :starts_at, presence: true
  validates :link_href, presence: true, if: -> { link_text.present? }
  validate :starts_at, :validate_date_range

  def self.find_active
    Rails.cache.fetch "announcement_active", expires_in: 1.minute do
      where "starts_at <= :now AND ends_at > :now", now: Time.current
    end
  end

  def active?
    Time.now.utc >= starts_at && Time.now.utc < ends_at
  end

  def link_present?
    link_text.present?
  end

  def validate_date_range
    if starts_at > ends_at
      errors.add(:starts_at, "Start date must be before end date")
    end
  end
end