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