To make it more consistent with the rest of the Admin panel, the CRUD for budget groups and headings has been changed from the old "all-in-one" form to a separate form for each resource.
64 lines
1.3 KiB
Ruby
64 lines
1.3 KiB
Ruby
class Admin::BudgetGroupsController < Admin::BaseController
|
|
include FeatureFlags
|
|
feature_flag :budgets
|
|
|
|
before_action :load_budget
|
|
before_action :load_group, except: [:index, :new, :create]
|
|
|
|
def index
|
|
@groups = @budget.groups.order(:id)
|
|
end
|
|
|
|
def new
|
|
@group = @budget.groups.new
|
|
end
|
|
|
|
def edit
|
|
end
|
|
|
|
def create
|
|
@group = @budget.groups.new(budget_group_params)
|
|
if @group.save
|
|
redirect_to groups_index, notice: t("admin.budget_groups.create.notice")
|
|
else
|
|
render :new
|
|
end
|
|
end
|
|
|
|
def update
|
|
if @group.update(budget_group_params)
|
|
redirect_to groups_index, notice: t("admin.budget_groups.update.notice")
|
|
else
|
|
render :edit
|
|
end
|
|
end
|
|
|
|
def destroy
|
|
if @group.headings.any?
|
|
redirect_to groups_index, alert: t("admin.budget_groups.destroy.unable_notice")
|
|
else
|
|
@group.destroy
|
|
redirect_to groups_index, notice: t("admin.budget_groups.destroy.success_notice")
|
|
end
|
|
end
|
|
|
|
private
|
|
|
|
def load_budget
|
|
@budget = Budget.includes(:groups).find(params[:budget_id])
|
|
end
|
|
|
|
def load_group
|
|
@group = @budget.groups.find(params[:id])
|
|
end
|
|
|
|
def groups_index
|
|
admin_budget_groups_path(@budget)
|
|
end
|
|
|
|
def budget_group_params
|
|
params.require(:budget_group).permit(:name, :max_votable_headings)
|
|
end
|
|
|
|
end
|