class Projecao::IndicesDoCalculoDeProjecaoController < ApplicationController
	include ControllerConcern

	before_action do
		autoriza_usuario!(action_name, "projecao/projecoes_de_receitas")
	end
	before_action :authenticate_usuario!
	before_action :verifica_se_tem_contexto_valido_na_sessao!
	before_action :set_calculo_de_projecao, only: [:edit, :update]
	before_action :disponibiliza_dependencias, only: [:edit]

	def edit
	end

	def update
		unless params.has_key?(:projecao_calculo_de_projecao)
			redirect_to @calculo_de_projecao
		else
			if @calculo_de_projecao.update(indice_do_calculo_de_projecao_params)
				redirect_to projecao_calculo_de_projecao_path(id: @calculo_de_projecao.id, tab: 'indices'), notice: 'Índice(s) atualizado(s) com sucesso.'
			else
				disponibiliza_dependencias
				render :edit
			end
		end
	end

	def destroy
		indice_do_calculo = Projecao::IndiceDoCalculoDeProjecao.find(params[:id])
		mensagem = apaga_e_retorna_mensagem(indice_do_calculo)
		redirect_to projecao_calculo_de_projecao_path(id: indice_do_calculo.calculo_de_projecao.id, tab: 'indices'), mensagem
	end

	private
	def set_calculo_de_projecao
		@calculo_de_projecao = Projecao::CalculoDeProjecao.find(params[:calculo_id])
	end

	def disponibiliza_dependencias
		@indices = contexto_atual.projecao_de_receita.indices_de_projecao
	end

	def indice_do_calculo_de_projecao_params
		params.require(:projecao_calculo_de_projecao).permit(indices_do_calculo_de_projecao_attributes: [:id, :indice_de_projecao_id, :percentual, :_destroy])
	end
end
