40 lines
1.0 KiB
Ruby
40 lines
1.0 KiB
Ruby
module Budgets
|
|
class ExecutionsController < ApplicationController
|
|
before_action :load_budget
|
|
before_action :load_heading
|
|
before_action :load_investments
|
|
|
|
load_and_authorize_resource :budget
|
|
|
|
def show
|
|
authorize! :read_executions, @budget
|
|
@statuses = ::Budget::Investment::Status.all
|
|
end
|
|
|
|
private
|
|
|
|
def load_budget
|
|
@budget = Budget.find_by(slug: params[:id]) || Budget.find_by(id: params[:id])
|
|
end
|
|
|
|
def load_heading
|
|
@heading = if params[:heading_id].present?
|
|
@budget.headings.find_by(slug: params[:heading_id])
|
|
else
|
|
@heading = @budget.headings.first
|
|
end
|
|
end
|
|
|
|
def load_investments
|
|
@investments = Budget::Result.new(@budget, @heading).investments.joins(:milestones)
|
|
|
|
if params[:status].present?
|
|
@investments.where('budget_investment_milestones.status_id = ?', params[:status])
|
|
else
|
|
@investments
|
|
end
|
|
end
|
|
|
|
end
|
|
end
|