class Subscription < ApplicationRecord
  STATUSES = %w[active trialing past_due canceled incomplete].freeze
  ACTIVE_STATUSES = %w[active trialing].freeze

  belongs_to :club
  belongs_to :plan
  belongs_to :pending_plan, class_name: "Plan", optional: true
  belongs_to :admin_comped_by, class_name: "AdminAccount", optional: true

  validates :status, inclusion: { in: STATUSES }
  validates :club_id, uniqueness: true

  scope :active, -> { where(status: ACTIVE_STATUSES) }

  def active?
    status.in?(ACTIVE_STATUSES)
  end

  def premium?
    active? && plan.premium?
  end

  def premium_full?
    active? && plan.slug == "premium_full"
  end

  def free?
    plan.slug == "free"
  end

  def plan_change_pending?
    pending_plan_id.present?
  end

  def admin_comped?
    admin_comped
  end
end
