Files
grecia/app/controllers/admin/budget_investments_controller.rb
Javi Martín ac6d50e06b Remove tracker role
The current tracking section had a few issues:

* When browsing as an admin, this section becomes useless since no
investments are shown
* Browsing investments in the admin section, you're suddenly redirected
to the tracking section, making navigation confusing
* One test related to the officing dashboard failed due to these changes
and had been commented
* Several views and controller methods were copied from other sections,
leading to duplication and making the code harder to maintain
* Tracking routes were defined for proposals and legislation processes,
but in the tracking section only investments were shown
* Probably many more things, since these issues were detected after only
an hour reviewing and testing the code

So we're removing this untested section before releasing version 1.1. We
might add it back afterwards.
2019-11-01 20:08:46 +01:00

136 lines
3.9 KiB
Ruby

class Admin::BudgetInvestmentsController < Admin::BaseController
include FeatureFlags
include CommentableActions
include DownloadSettingsHelper
include ChangeLogHelper
include Translatable
feature_flag :budgets
has_orders %w[oldest], only: [:show, :edit]
has_filters %w[all], only: [:index, :toggle_selection]
before_action :load_budget, except: :show_investment_log
before_action :load_investment, only: [:show, :edit, :update, :toggle_selection]
before_action :load_ballot, only: [:show, :index]
before_action :parse_valuation_filters
before_action :load_investments, only: [:index, :toggle_selection]
before_action :load_change_log, only: [:show]
def index
load_tags
respond_to do |format|
format.html
format.js
format.csv do
send_data to_csv(@investments, Budget::Investment),
type: "text/csv",
disposition: "attachment",
filename: "budget_investments.csv"
end
end
end
def show
load_comments
end
def edit
load_staff
load_valuator_groups
load_tags
end
def update
authorize! :admin_update, @investment
if @investment.update(budget_investment_params)
redirect_to admin_budget_budget_investment_path(@budget,
@investment,
Budget::Investment.filter_params(params).to_h),
notice: t("flash.actions.update.budget_investment")
else
load_staff
load_valuator_groups
load_tags
render :edit
end
end
def toggle_selection
@investment.toggle :selected
@investment.save!
load_investments
end
private
def load_comments
@commentable = @investment
@comment_tree = CommentTree.new(@commentable, params[:page], @current_order, valuations: true)
set_comment_flags(@comment_tree.comments)
end
def resource_model
Budget::Investment
end
def resource_name
resource_model.parameterize(separator: "_")
end
def load_investments
@investments = Budget::Investment.scoped_filter(params, @current_filter).order_filter(params)
@investments = Kaminari.paginate_array(@investments) if @investments.is_a?(Array)
@investments = @investments.page(params[:page]) unless request.format.csv?
end
def budget_investment_params
attributes = [:external_url, :heading_id, :administrator_id, :tag_list,
:valuation_tag_list, :incompatible, :visible_to_valuators, :selected,
:milestone_tag_list, valuator_ids: [], valuator_group_ids: []]
params.require(:budget_investment).permit(attributes, translation_params(Budget::Investment))
end
def load_budget
@budget = Budget.find_by_slug_or_id! params[:budget_id]
end
def load_investment
@investment = @budget.investments.find(params[:id])
end
def load_staff
@admins = @budget.administrators.includes(:user)
@valuators = @budget.valuators.includes(:user).order(description: :asc).order("users.email ASC")
end
def load_valuator_groups
@valuator_groups = ValuatorGroup.all.order(name: :asc)
end
def load_tags
@tags = Budget::Investment.tags_on(:valuation_tags).order(:name).distinct
end
def load_ballot
query = Budget::Ballot.where(user: current_user, budget: @budget)
@ballot = @budget.balloting? ? query.first_or_create! : query.first_or_initialize
end
def parse_valuation_filters
if params[:valuator_or_group_id]
model, id = params[:valuator_or_group_id].split("_")
if model == "group"
params[:valuator_group_id] = id
else
params[:valuator_id] = id
end
end
end
def load_change_log
@logs = Budget::Investment::ChangeLog.by_investment(@investment.id)
end
end