43 lines
1.2 KiB
Ruby
43 lines
1.2 KiB
Ruby
class Admin::SpendingProposalsController < Admin::BaseController
|
|
include FeatureFlags
|
|
feature_flag :spending_proposals
|
|
|
|
has_filters %w{all without_admin without_valuators}, only: :index
|
|
|
|
load_and_authorize_resource
|
|
|
|
def index
|
|
@spending_proposals = geozone_filter(params[:geozone_id].presence).includes(:geozone, administrator: :user, valuators: :user).send(@current_filter).order(created_at: :desc).page(params[:page])
|
|
end
|
|
|
|
def show
|
|
@admins = Administrator.includes(:user).all
|
|
@valuators = Valuator.includes(:user).all.order("users.username ASC")
|
|
end
|
|
|
|
def assign_admin
|
|
@spending_proposal.update(params.require(:spending_proposal).permit(:administrator_id))
|
|
render nothing: true
|
|
end
|
|
|
|
def assign_valuators
|
|
params[:spending_proposal] ||= {}
|
|
params[:spending_proposal][:valuator_ids] ||= []
|
|
@spending_proposal.update(params.require(:spending_proposal).permit(valuator_ids: []))
|
|
end
|
|
|
|
private
|
|
|
|
def geozone_filter(geozone)
|
|
case geozone
|
|
when nil
|
|
@spending_proposals
|
|
when 'all'
|
|
@spending_proposals.where(geozone_id: nil)
|
|
else
|
|
@spending_proposals.where(geozone_id: params[:geozone_id].presence)
|
|
end
|
|
end
|
|
|
|
end
|