class Service::Opportunity < ApplicationRecord
  include Base::Service::Opportunity

  belongs_to :group, foreign_key: :SOGID, inverse_of: :opportunities, touch: true

  has_many :family_logs, class_name: 'Service::FamilyLog', foreign_key: :SOID,
    dependent: :restrict_with_error, inverse_of: :opportunity
  has_many :student_logs, class_name: 'Service::StudentLog', foreign_key: :SOID,
    dependent: :restrict_with_error, inverse_of: :opportunity

  delegate :school, to: :group

  validates :name, presence: true, length: { maximum: 32 }

  scope :by_group, ->(ids) { where(group_id: ids) if ids }
  scope :not_archived, ->(archived) { where(archived: false) unless archived }
end
