Files
grecia/app/controllers/admin/budgets_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

88 lines
2.3 KiB
Ruby

class Admin::BudgetsController < Admin::BaseController
include Translatable
include ReportAttributes
include FeatureFlags
feature_flag :budgets
has_filters %w[open finished], only: :index
before_action :load_budget, except: [:index, :new, :create]
load_and_authorize_resource
def index
@budgets = Budget.send(@current_filter).order(created_at: :desc).page(params[:page])
end
def show
end
def new
load_staff
end
def edit
load_staff
end
def calculate_winners
return unless @budget.balloting_process?
@budget.headings.each { |heading| Budget::Result.new(@budget, heading).delay.calculate_winners }
redirect_to admin_budget_budget_investments_path(
budget_id: @budget.id,
advanced_filters: ["winners"]),
notice: I18n.t("admin.budgets.winners.calculated")
end
def update
if @budget.update(budget_params)
redirect_to admin_budgets_path, notice: t("admin.budgets.update.notice")
else
load_staff
render :edit
end
end
def create
@budget = Budget.new(budget_params)
if @budget.save
redirect_to admin_budget_path(@budget), notice: t("admin.budgets.create.notice")
else
load_staff
render :new
end
end
def destroy
if @budget.investments.any?
redirect_to admin_budgets_path, alert: t("admin.budgets.destroy.unable_notice")
elsif @budget.poll.present?
redirect_to admin_budgets_path, alert: t("admin.budgets.destroy.unable_notice_polls")
else
@budget.destroy!
redirect_to admin_budgets_path, notice: t("admin.budgets.destroy.success_notice")
end
end
private
def budget_params
descriptions = Budget::Phase::PHASE_KINDS.map { |p| "description_#{p}" }.map(&:to_sym)
valid_attributes = [:phase,
:currency_symbol,
administrator_ids: [],
valuator_ids: []
] + descriptions
params.require(:budget).permit(*valid_attributes, *report_attributes, translation_params(Budget))
end
def load_budget
@budget = Budget.find_by_slug_or_id! params[:id]
end
def load_staff
@admins = Administrator.includes(:user)
@valuators = Valuator.includes(:user).order(description: :asc).order("users.email ASC")
end
end