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

  belongs_to :club
  belongs_to :plan

  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
end
