Sha256: b90f5cf231e9e4ce11c30d4b4004ef3b6665b754b9811f8c3efdc28b622aca20

Contents?: true

Size: 1.05 KB

Versions: 38

Compression:

Stored size: 1.05 KB

Contents

# frozen_string_literal: true

# This Workflow allows users to vote only in one budget, selected randomly.
#
# Note: random selection should be deterministic for the same user and the same budgets component.
# As the budget resources list could change and affect the random selection, it also allows to finish orders created on other budgets.
class BudgetsWorkflowRandom < Decidim::Budgets::Workflows::Base
  # Highlight the resource if the user didn't vote and is allowed to vote on it.
  def highlighted?(resource)
    vote_allowed?(resource)
  end

  # User can vote in the resource where they have an order in progress or in the randomly selected resource.
  def vote_allowed?(resource, consider_progress: true)
    return false if voted.any?

    if consider_progress
      progress?(resource) || (progress.none? && resource == random_resource)
    else
      resource == random_resource
    end
  end

  def discardable
    []
  end

  private

  def random_resource
    @random_resource ||= budgets.reorder(id: :asc).to_a[user.id % budgets.count] if user
  end
end

Version data entries

38 entries across 38 versions & 2 rubygems

Version Path
decidim-generators-0.27.9 lib/decidim/generators/app_templates/budgets_workflow_random.rb
decidim-generators-0.27.8 lib/decidim/generators/app_templates/budgets_workflow_random.rb
decidim-generators-0.27.7 lib/decidim/generators/app_templates/budgets_workflow_random.rb
decidim-generators-0.27.6 lib/decidim/generators/app_templates/budgets_workflow_random.rb
decidim-generators-0.26.10 lib/decidim/generators/app_templates/budgets_workflow_random.rb
decidim-file_authorization_handler-0.27.1.7 spec/decidim_dummy_app/lib/budgets_workflow_random.rb
decidim-generators-0.26.9 lib/decidim/generators/app_templates/budgets_workflow_random.rb
decidim-generators-0.27.5 lib/decidim/generators/app_templates/budgets_workflow_random.rb
decidim-generators-0.26.8 lib/decidim/generators/app_templates/budgets_workflow_random.rb
decidim-generators-0.27.4 lib/decidim/generators/app_templates/budgets_workflow_random.rb
decidim-generators-0.27.3 lib/decidim/generators/app_templates/budgets_workflow_random.rb
decidim-generators-0.26.7 lib/decidim/generators/app_templates/budgets_workflow_random.rb
decidim-generators-0.26.5 lib/decidim/generators/app_templates/budgets_workflow_random.rb
decidim-generators-0.27.2 lib/decidim/generators/app_templates/budgets_workflow_random.rb
decidim-generators-0.27.1 lib/decidim/generators/app_templates/budgets_workflow_random.rb
decidim-generators-0.26.4 lib/decidim/generators/app_templates/budgets_workflow_random.rb
decidim-generators-0.27.0 lib/decidim/generators/app_templates/budgets_workflow_random.rb
decidim-generators-0.26.3 lib/decidim/generators/app_templates/budgets_workflow_random.rb
decidim-generators-0.27.0.rc2 lib/decidim/generators/app_templates/budgets_workflow_random.rb
decidim-generators-0.27.0.rc1 lib/decidim/generators/app_templates/budgets_workflow_random.rb