Class: Decidim::Budgets::Order
- Inherits:
-
ApplicationRecord
- Object
- ActiveRecord::Base
- ApplicationRecord
- Decidim::Budgets::Order
- Includes:
- HasFeature
- Defined in:
- app/models/decidim/budgets/order.rb
Overview
The data store for a Order in the Decidim::Budgets component. It is unique for each user and feature and contains a collection of projects
Instance Method Summary collapse
-
#budget_percent ⇒ Object
Public: Returns the order budget percent from the settings total budget.
-
#can_checkout? ⇒ Boolean
Public: Check if the order total budget is enough to checkout.
-
#checked_out? ⇒ Boolean
Public: Returns true if the order has been checked out.
-
#maximum_budget ⇒ Object
Public: Returns the required maximum budget to checkout.
-
#minimum_budget ⇒ Object
Public: Returns the required minimum budget to checkout.
-
#total_budget ⇒ Object
Public: Returns the sum of project budgets.
Instance Method Details
#budget_percent ⇒ Object
Public: Returns the order budget percent from the settings total budget
47 48 49 |
# File 'app/models/decidim/budgets/order.rb', line 47 def budget_percent (total_budget.to_f / feature.settings.total_budget.to_f) * 100 end |
#can_checkout? ⇒ Boolean
Public: Check if the order total budget is enough to checkout
42 43 44 |
# File 'app/models/decidim/budgets/order.rb', line 42 def can_checkout? total_budget.to_f >= minimum_budget end |
#checked_out? ⇒ Boolean
Public: Returns true if the order has been checked out
37 38 39 |
# File 'app/models/decidim/budgets/order.rb', line 37 def checked_out? checked_out_at.present? end |
#maximum_budget ⇒ Object
Public: Returns the required maximum budget to checkout
58 59 60 61 |
# File 'app/models/decidim/budgets/order.rb', line 58 def maximum_budget return 0 unless feature feature.settings.total_budget.to_f end |
#minimum_budget ⇒ Object
Public: Returns the required minimum budget to checkout
52 53 54 55 |
# File 'app/models/decidim/budgets/order.rb', line 52 def minimum_budget return 0 unless feature feature.settings.total_budget.to_f * (feature.settings.vote_threshold_percent.to_f / 100) end |
#total_budget ⇒ Object
Public: Returns the sum of project budgets
32 33 34 |
# File 'app/models/decidim/budgets/order.rb', line 32 def total_budget projects.to_a.sum(&:budget) end |