From 00cfb95913d4efd4628903dc35401f447220b1da Mon Sep 17 00:00:00 2001 From: kikito Date: Thu, 1 Dec 2016 16:31:05 +0100 Subject: [PATCH] Starts fixing management budget investments --- .../budget_investments_controller.rb | 37 +++++++++------ .../management/budgets_controller.rb | 1 + app/helpers/budget_headings_helper.rb | 6 ++- app/models/budget.rb | 1 + app/views/budgets/investments/show.html.erb | 19 +++++--- .../budget_investments/new.html.erb | 46 ++++++++++++++++++- config/locales/activerecord.en.yml | 2 +- .../management/budget_investments_spec.rb | 22 ++++----- 8 files changed, 97 insertions(+), 37 deletions(-) diff --git a/app/controllers/management/budget_investments_controller.rb b/app/controllers/management/budget_investments_controller.rb index 64dd30492..dec517171 100644 --- a/app/controllers/management/budget_investments_controller.rb +++ b/app/controllers/management/budget_investments_controller.rb @@ -2,11 +2,11 @@ class Management::BudgetInvestmentsController < Management::BaseController before_action :only_verified_users, except: :print before_action :set_budget_investment, only: [:vote, :show] - before_action :load_budget + before_action :load_accepting_headings, only: [:new, :create] def index - @budget_investments = apply_filters_and_search(Budget::Investment).order(cached_votes_up: :desc).page(params[:page]).for_render - set_budget_investment_votes(@budget_investments) + @investments = apply_filters_and_search(Budget::Investment).order(cached_votes_up: :desc).page(params[:page]).for_render + set_budget_investment_votes(@investments) end def new @@ -14,39 +14,40 @@ class Management::BudgetInvestmentsController < Management::BaseController end def create - @budget_investment = Budget::Investment.new(budget_investment_params) - @budget_investment.author = managed_user + @investment = Budget::Investment.new(budget_investment_params) + @investment.terms_of_service = "1" + @investment.author = managed_user - if @budget_investment.save - redirect_to management_budget_investment_path(@budget_investment), notice: t('flash.actions.create.notice', resource_name: t("activerecord.models.budget_investment", count: 1)) + if @investment.save + redirect_to management_budget_investment_path(@investment), notice: t('flash.actions.create.notice', resource_name: Budget::Investment.model_name.human, count: 1) else render :new end end def show - set_budget_investment_votes(@budget_investment) + set_budget_investment_votes(@investment) end def vote - @budget_investment.register_vote(managed_user, 'yes') - set_budget_investment_votes(@budget_investment) + @investment.register_vote(managed_user, 'yes') + set_budget_investment_votes(@investment) end def print params[:geozone] ||= 'all' - @budget_investments = apply_filters_and_search(Budget::Investment).order(cached_votes_up: :desc).for_render.limit(15) - set_budget_investment_votes(@budget_investments) + @investments = apply_filters_and_search(Budget::Investment).order(cached_votes_up: :desc).for_render.limit(15) + set_budget_investment_votes(@investments) end private def set_budget_investment - @budget_investment = Budget::Investment.find(params[:id]) + @investment = Budget::Investment.find(params[:id]) end def budget_investment_params - params.require(:budget_investment).permit(:title, :description, :external_url, :geozone_id, :terms_of_service) + params.require(:budget_investment).permit(:title, :description, :external_url, :geozone_id, :heading_id) end def only_verified_users @@ -55,7 +56,7 @@ class Management::BudgetInvestmentsController < Management::BaseController # This should not be necessary. Maybe we could create a specific show view for managers. def set_budget_investment_votes(budget_investments) - @budget_investment_votes = managed_user ? managed_user.budget_investment_votes(budget_investments) : {} + @investment_votes = managed_user ? managed_user.budget_investment_votes(budget_investments) : {} end def set_geozone_name @@ -76,4 +77,10 @@ class Management::BudgetInvestmentsController < Management::BaseController target end + def load_accepting_headings + accepting_budget_ids = Budget.accepting.pluck(:id) + accepting_budget_group_ids = Budget::Group.where(budget_id: accepting_budget_ids).pluck(:id) + @headings = Budget::Heading.where(group_id: accepting_budget_group_ids).order(:group_id, :name).includes(:group => :budget) + end + end diff --git a/app/controllers/management/budgets_controller.rb b/app/controllers/management/budgets_controller.rb index d4d5b8592..ed127df68 100644 --- a/app/controllers/management/budgets_controller.rb +++ b/app/controllers/management/budgets_controller.rb @@ -1,5 +1,6 @@ class Management::BudgetsController < Management::BaseController include FeatureFlags + include HasFilters feature_flag :budgets has_filters %w{open finished}, only: :index diff --git a/app/helpers/budget_headings_helper.rb b/app/helpers/budget_headings_helper.rb index b9944be9b..9bb511394 100644 --- a/app/helpers/budget_headings_helper.rb +++ b/app/helpers/budget_headings_helper.rb @@ -4,8 +4,12 @@ module BudgetHeadingsHelper budget.headings.map {|heading| [heading.name, heading.id]} end + def multiple_budgets_heading_select_options(headings) + headings.map { |heading| ["#{heading.budget.name} - #{heading.group.name} - #{heading.name}", heading.id] } + end + def budget_scoped_heading_select_options(budget) budget.headings.includes(:group).order("group_id ASC, budget_headings.name ASC").map {|heading| [heading.group.name + ': ' + heading.name, heading.id]} end -end \ No newline at end of file +end diff --git a/app/models/budget.rb b/app/models/budget.rb index e716c0181..9c4f9e7e1 100644 --- a/app/models/budget.rb +++ b/app/models/budget.rb @@ -17,6 +17,7 @@ class Budget < ActiveRecord::Base scope :open, -> { where.not(phase: "finished") } scope :finished, -> { where(phase: "finished") } scope :valuating, -> { where(valuating: true) } + scope :accepting, -> { where(phase: "accepting") } def on_hold? phase == "on_hold" diff --git a/app/views/budgets/investments/show.html.erb b/app/views/budgets/investments/show.html.erb index 2488262f8..f27daf0f7 100644 --- a/app/views/budgets/investments/show.html.erb +++ b/app/views/budgets/investments/show.html.erb @@ -1,6 +1,13 @@ <% provide :title do %><%= @investment.title %><% end %>
+ + +
<%= link_to :back, class: "back" do %> @@ -44,19 +51,19 @@ <% end %>
- <% if (@budget.selecting? && !@investment.unfeasible?) || - (@budget.balloting? && @investment.feasible? || - (@budget.on_hold?)) %> + <% if (@investment.budget.selecting? && !@investment.unfeasible?) || + (@investment.budget.balloting? && @investment.feasible? || + (@investment.budget.on_hold?)) %>