Skip to Content Skip to Search
Methods
A
B
C
D
E
H
I
M
P
R
S
T
W
Included Modules

Attributes

[W] active_member_count
[W] broadcast_recipient_count
[RW] remote_error

Instance Public methods

active_member_count()

# File app/models/db/plan.rb, line 350
def active_member_count
  @active_member_count || Action::MemberSearcher
    .active_members(plan: self)
    .count
end

annual?()

# File app/models/db/plan.rb, line 313
def annual?
  subscription_plan_type? && year_interval?
end

as_json(options = {})

# File app/models/db/plan.rb, line 321
def as_json(options = {})
  # FIXME: legacy support for older strings still needed
  super(options).merge(plan_type: self.class.plan_types[plan_type])
end

billing_period()

1.send(“month”/“year”/etc) => 1.month

# File app/models/db/plan.rb, line 293
def billing_period
  interval_count.send(interval)
end

broadcast_recipient_count()

# File app/models/db/plan.rb, line 356
def broadcast_recipient_count
  @broadcast_recipient_count || Action::MemberSearcher
    .active_members(plan: self)
    .broadcastable
    .count
end

calculate_expiration(starting_from)

# File app/models/db/plan.rb, line 337
def calculate_expiration(starting_from)
  return nil unless with_expiration?
  specific_expiration_at || interval_expiration_at(starting_from)
end

deletable?()

# File app/models/db/plan.rb, line 268
def deletable?
  !remaining_active_members? && !remaining_active_subscriptions?
end

disable()

# File app/models/db/plan.rb, line 258
def disable
  self.enabled = false
  self.is_public = false
  save
end

disabled?()

# File app/models/db/plan.rb, line 264
def disabled?
  !enabled?
end

enable()

# File app/models/db/plan.rb, line 252
def enable
  self.enabled = true
  self.is_public = true
  save
end

expired?(starting_from)

# File app/models/db/plan.rb, line 332
def expired?(starting_from)
  (specific_expiration? && specific_time_expired?) ||
    (interval_expiration? && interval_expired?(starting_from))
end

expires_in!(duration)

# File app/models/db/plan.rb, line 342
def expires_in!(duration)
  update!(
    expiration_type: "interval",
    expiration_interval: duration.interval.singularize,
    expiration_count: duration.magnitude
  )
end

has_payments_remaining?(subscription)

# File app/models/db/plan.rb, line 248
def has_payments_remaining?(subscription)
  payment_plan? && interval_count > subscription.payments_made
end

has_trial?()

Also aliased as: trial?
# File app/models/db/plan.rb, line 233
def has_trial?
  trial_period_days.present? && !trial_period_days.zero?
end

interval_expiration?()

# File app/models/db/plan.rb, line 305
def interval_expiration?
  interval_expiration_type?
end

interval_expired?(starting_from)

# File app/models/db/plan.rb, line 272
def interval_expired?(starting_from)
  interval_expiration_type? && calculate_expiration_interval(starting_from) < Time.current
end

is_private?()

# File app/models/db/plan.rb, line 297
def is_private?
  !is_public?
end

monthly?()

# File app/models/db/plan.rb, line 317
def monthly?
  subscription_plan_type? && month_interval?
end

paid?()

Alias for: paid_plan_type?

paid_plan?()

Alias for: paid_plan_type?

paid_plan_type?()

Also aliased as: paid_plan?, paid?
# File app/models/db/plan.rb, line 238
def paid_plan_type?
  one_time_payment_plan_type? || recurring?
end

price()

# File app/models/db/plan.rb, line 326
def price
  if !free?
    Service::Money.new(amount, currency).format
  end
end

recurring?()

# File app/models/db/plan.rb, line 244
def recurring?
  subscription_plan_type? || multi_payment_plan_type?
end

rejoinable?()

# File app/models/db/plan.rb, line 301
def rejoinable?
  !free_plan? && !specific_expiration? && !specific_time_expired?
end

remaining_active_subscriptions?()

# File app/models/db/plan.rb, line 276
def remaining_active_subscriptions?
  subscriptions.exists?(status: %w[incomplete trialing active past_due unpaid])
end

specific_expiration?()

# File app/models/db/plan.rb, line 309
def specific_expiration?
  specific_time_expiration_type?
end

specific_time_expired?()

# File app/models/db/plan.rb, line 280
def specific_time_expired?
  specific_time_expiration_type? && expiration_at < Time.current
end

to_liquid()

# File app/models/db/plan.rb, line 284
def to_liquid
  EmailDrops::PlanDrop.new(self)
end

trial?()

Alias for: has_trial?

with_expiration?()

# File app/models/db/plan.rb, line 288
def with_expiration?
  !none_expiration_type?
end