Module: Decidim::Lausanne::Budgets::ProjectsHelper

Included in:
ApplicationHelper, BudgetMCell, ProjectListItemCell, ProjectMCell
Defined in:
app/helpers/decidim/lausanne/budgets/projects_helper.rb

Overview

A helper to render order and budgets actions

Instance Method Summary collapse

Instance Method Details

#budget_confirm_disabled_attrObject



31
32
33
34
# File 'app/helpers/decidim/lausanne/budgets/projects_helper.rb', line 31

def budget_confirm_disabled_attr
  return if current_order_can_be_checked_out? && voting_open? && current_order.valid?
  %( disabled="disabled" ).html_safe
end

#budget_to_currency(budget) ⇒ Object

Render a budget as a currency

budget - A integer to represent a budget



11
12
13
# File 'app/helpers/decidim/lausanne/budgets/projects_helper.rb', line 11

def budget_to_currency(budget)
  number_to_currency budget, unit: Decidim.currency_unit, precision: 0
end

#current_order_budget_percentObject

Return a percentage of the current order budget from the total budget



16
17
18
# File 'app/helpers/decidim/lausanne/budgets/projects_helper.rb', line 16

def current_order_budget_percent
  current_order&.budget_percent.to_f.floor
end

#current_order_budget_percent_minimumObject

Return the minimum percentage of the current order budget from the total budget



21
22
23
24
25
26
27
28
29
# File 'app/helpers/decidim/lausanne/budgets/projects_helper.rb', line 21

def current_order_budget_percent_minimum
  return 0 if current_order.minimum_projects_rule?

  if current_order.projects_rule?
    (current_order.minimum_projects.to_f / current_order.maximum_projects)
  else
    component_settings.vote_threshold_percent
  end
end

#current_order_can_be_checked_out?Boolean

Return true if the user can continue to the checkout process

Returns:

  • (Boolean)


40
41
42
# File 'app/helpers/decidim/lausanne/budgets/projects_helper.rb', line 40

def current_order_can_be_checked_out?
  current_order&.can_checkout?
end

#current_rule_descriptionObject



77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
# File 'app/helpers/decidim/lausanne/budgets/projects_helper.rb', line 77

def current_rule_description
  return unless current_order
  if current_order.projects_rule?
    if current_order.minimum_projects.positive? && current_order.minimum_projects.to_i < current_order.maximum_projects.to_i
      t(
        ".projects_rule.description",
        minimum_number: current_order.minimum_projects,
        maximum_number: current_order.maximum_projects,
        scope: "decidim.lausanne.budgets.projects.budget_summary"
      )
    else
      t(
        ".projects_rule_maximum_only.description",
        maximum_number: current_order.maximum_projects.to_i,
        scope: "decidim.lausanne.budgets.projects.budget_summary"
    )
    end
  elsif current_order.minimum_projects_rule?
    t(".minimum_projects_rule.description", minimum_number: current_order.minimum_projects, count: current_order.minimum_projects - current_order.total_projects)
  else
    t(".vote_threshold_percent_rule.description", minimum_budget: budget_to_currency(current_order.minimum_budget.to_i))
  end
end

#current_rule_explanation(scope = "budget_summary") ⇒ Object



47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
# File 'app/helpers/decidim/lausanne/budgets/projects_helper.rb', line 47

def current_rule_explanation(scope = "budget_summary")
  return unless current_order
  i18n_scope = "decidim.lausanne.budgets.projects.#{scope}"
  if current_order.projects_rule?
    if current_order.minimum_projects.positive? && current_order.minimum_projects.to_i < current_order.maximum_projects.to_i
      t(
        "#{i18n_scope}.projects_rule.instruction",
        minimum_number: current_order.minimum_projects,
        maximum_number: current_order.maximum_projects
      )
    else
      t(
        "#{i18n_scope}.projects_rule_maximum_only.instruction",
        maximum_number: current_order.maximum_projects,
      )
    end
  elsif current_order.minimum_projects_rule?
    t(
      "#{i18n_scope}.minimum_projects_rule.instruction",
      minimum_number: current_order.minimum_projects.to_i,
      count: [current_order.minimum_projects - current_order.total_projects, 0].max
    )
  else
    t(
      "#{i18n_scope}.vote_threshold_percent_rule.instruction",
      minimum_budget: budget_to_currency(current_order.minimum_budget.to_i),
    )
  end
end

#display_rules?Boolean

Returns:

  • (Boolean)


43
44
45
# File 'app/helpers/decidim/lausanne/budgets/projects_helper.rb', line 43

def display_rules?
  !( || current_order.checked_out?)
end