Files
nairobi/app/controllers/budgets/executions_controller.rb
2018-11-06 13:02:35 +01:00

49 lines
1.4 KiB
Ruby

module Budgets
class ExecutionsController < ApplicationController
before_action :load_budget
load_and_authorize_resource :budget
def show
authorize! :read_executions, @budget
@statuses = ::Budget::Investment::Status.all
@headings = @budget.headings
.includes(investments: :milestones)
.joins(investments: :milestones)
.distinct
.order(name: :asc)
if params[:status].present?
@headings = @headings.where(filter_investment_by_latest_milestone, params[:status])
end
@headings = reorder_alphabetically_with_city_heading_first(@headings)
end
private
def load_budget
@budget = Budget.find_by(slug: params[:id]) || Budget.find_by(id: params[:id])
end
def filter_investment_by_latest_milestone
<<-SQL
(SELECT status_id FROM budget_investment_milestones
WHERE investment_id = budget_investments.id ORDER BY publication_date DESC LIMIT 1) = ?
SQL
end
def reorder_alphabetically_with_city_heading_first(headings)
headings.sort do |a, b|
if a.name == 'Toda la ciudad'
-1
elsif b.name == 'Toda la ciudad'
1
else
a.name <=> b.name
end
end
end
end
end