class Ppa::IndicadoresController < ApplicationController
	include ControllerConcern
	include PpaControllersConcern

	before_action :authenticate_usuario!
	before_action :autoriza_usuario!
	before_action :set_ppa_indicador, only: [:show, :edit, :update, :destroy]
	before_action :disponibiliza_dependencias, only: [:new, :create, :edit, :update]
	# GET /ppa/indicadores
	def index
		@q = Ppa::Indicador.order(:id).search(params[:q])
		@ppa_indicadores = @q.result.paginate(page: params[:page], per_page: 10)
	end

	# GET /ppa/indicadores/1
	def show
	end

	# GET /ppa/indicadores/new
	def new
		programa = Ppa::Programa.find( params[:programa_id] )
		@ppa_indicador = programa.indicadores.build
	end

	# GET /ppa/indicadores/1/edit
	def edit
	end

	# POST /ppa/indicadores
	def create
		@ppa_indicador = Ppa::Indicador.new(ppa_indicador_params)

		if @ppa_indicador.save
			if manter_form_apos_cadastro?
				redirect_path = { action: :new, programa_id: @ppa_indicador.programa.id }
			else
				redirect_path = @ppa_indicador.programa
			end
			redirect_to redirect_path, notice: 'Indicador foi criado com sucesso.'
		else
			render :new
		end
	end

	# PATCH/PUT /ppa/indicadores/1
	def update
		if @ppa_indicador.update(ppa_indicador_params)
			redirect_to @ppa_indicador.programa, notice: 'Indicador foi atualizado com sucesso.'
		else
			render :edit
		end
	end

	# DELETE /ppa/indicadores/1
	def destroy
		mensagem = apaga_e_retorna_mensagem(@ppa_indicador)
		redirect_to @ppa_indicador.programa, mensagem
	end

	private
	# Use callbacks to share common setup or constraints between actions.
	def set_ppa_indicador
		@ppa_indicador = Ppa::Indicador.find(params[:id])
	end

	# Only allow a trusted parameter "white list" through.
	def ppa_indicador_params
		params.require(:ppa_indicador).permit(:programa_id, :nome, :ano_de_referencia, :indice_de_referencia, :unidade_de_medida_id, :fonte)
	end

	def disponibiliza_dependencias
		@unidades_de_medida = UnidadeDeMedida.disponiveis
	end
end
