module PayFeatures::Plan

Constants

BIGGEST_AMOUNT
SMALLEST_AMOUNT

Public Instance Methods

amount_for(identifier) click to toggle source
# File lib/pay_features/plan.rb, line 18
def amount_for(identifier)
  feature = find_feature(identifier)
  return SMALLEST_AMOUNT unless feature
  return feature.amount if feature.amount

  BIGGEST_AMOUNT
end
display_features() click to toggle source
# File lib/pay_features/plan.rb, line 30
def display_features
  display_features = features_from_previous

  pay_features.ordered.each do |f|
    index = display_features.index { |df| df[:identifier] == f.identifier }
    value = { identifier: f.identifier, description: f.description, amount: f.amount }

    if index
      display_features[index] = value.merge(new_feature: true)
    else
      value.merge!(new_feature: true) if previous_plan
      display_features << value
    end
  end

  display_features.flatten
end
features_from_previous() click to toggle source
# File lib/pay_features/plan.rb, line 64
def features_from_previous
  previous_features = []
  return previous_features unless previous_plan

  previous_plan_display_features.each do |f|
    previous_features << { identifier: f[:identifier], description: f[:description] }
  end

  previous_features
end
find_feature(identifier) click to toggle source
# File lib/pay_features/plan.rb, line 48
def find_feature(identifier)
  feature = pay_features.find_by(identifier: identifier)

  if feature
    feature
  elsif !feature && previous_plan.present?
    previous_plan.find_feature(identifier)
  end
end
has_feature?(identifier) click to toggle source
# File lib/pay_features/plan.rb, line 26
def has_feature?(identifier)
  find_feature(identifier).present?
end
previous_plan_display_features() click to toggle source
# File lib/pay_features/plan.rb, line 60
def previous_plan_display_features
  previous_plan.display_features
end