Class: Decidim::Budgets::Order

Inherits:
ApplicationRecord show all
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

Instance Method Details

#budget_percentObject

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

Returns:

  • (Boolean)


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

Returns:

  • (Boolean)


37
38
39
# File 'app/models/decidim/budgets/order.rb', line 37

def checked_out?
  checked_out_at.present?
end

#maximum_budgetObject

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_budgetObject

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_budgetObject

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