Sha256: a0357fe7fb527907cc8b802a10278424b0569e4e3c660030a42626987df455ae

Contents?: true

Size: 1.78 KB

Versions: 6

Compression:

Stored size: 1.78 KB

Contents

# frozen_string_literal: true

module Decidim
  module Budgets
    # Exposes the project resource so users can view them
    class ProjectsController < Decidim::Budgets::ApplicationController
      include FilterResource
      include NeedsCurrentOrder
      include Decidim::Budgets::Orderable

      helper_method :projects, :project, :budget, :all_geocoded_projects

      def index
        raise ActionController::RoutingError, "Not Found" unless budget
      end

      def show
        raise ActionController::RoutingError, "Not Found" unless budget
        raise ActionController::RoutingError, "Not Found" unless project
      end

      private

      def budget
        @budget ||= Budget.where(component: current_component).includes(:projects).find_by(id: params[:budget_id])
      end

      def projects
        return @projects if @projects

        @projects = reorder(search.result)
        @projects = @projects.page(params[:page]).per(current_component.settings.projects_per_page)
      end

      def all_geocoded_projects
        @all_geocoded_projects ||= projects.geocoded
      end

      def project
        @project ||= budget&.projects&.find_by(id: params[:id])
      end

      def search_collection
        Project.where(budget: budget).includes([:scope, :component, :attachments, :category])
      end

      def default_filter_params
        {
          search_text_cont: "",
          with_any_status: default_filter_status_params,
          with_any_scope: default_filter_scope_params,
          with_any_category: default_filter_category_params
        }
      end

      def default_filter_status_params
        show_selected_budgets? ? %w(selected) : %w(all)
      end

      def show_selected_budgets?
        voting_finished? && budget.projects.selected.any?
      end
    end
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
decidim-budgets-0.27.9 app/controllers/decidim/budgets/projects_controller.rb
decidim-budgets-0.27.8 app/controllers/decidim/budgets/projects_controller.rb
decidim-budgets-0.27.7 app/controllers/decidim/budgets/projects_controller.rb
decidim-budgets-0.27.6 app/controllers/decidim/budgets/projects_controller.rb
decidim-budgets-0.27.5 app/controllers/decidim/budgets/projects_controller.rb
decidim-budgets-0.27.4 app/controllers/decidim/budgets/projects_controller.rb