class Contabilidade::MetasFisicasDaLiquidacaoController < ApplicationController
	include ContabilidadeControllerConcern
	include ControllerConcern

	before_action :authenticate_usuario!
	before_action :autoriza_usuario!
	before_action :set_meta_fisica_da_liquidacao, only: [ :destroy ]
	before_action :set_liquidacao, only: [ :new, :create ]

	def new
		@meta_fisica_da_liquidacao = @liquidacao.metas_fisicas_da_liquidacao.new
		@metas_fisicas = disponibiliza_metas_fisicas( @liquidacao.empenho )
	end

	def create
		@meta_fisica_da_liquidacao = @liquidacao.metas_fisicas_da_liquidacao.new( meta_fisica_da_liquidacao_params )

		if @meta_fisica_da_liquidacao.save
			redirect_to contabilidade_liquidacao_path( @liquidacao ) + "?tab=metas", notice: 'Meta Física adicionada com sucesso.'
		else
			@metas_fisicas = disponibiliza_metas_fisicas( @liquidacao.empenho )
			render :new
		end
	end

	def destroy
		mensagem = apaga_e_retorna_mensagem( @meta_fisica_da_liquidacao )
		redirect_to contabilidade_liquidacao_path( @meta_fisica_da_liquidacao.liquidacao ) + "?tab=metas", mensagem
	end

	private
	def set_meta_fisica_da_liquidacao
		@meta_fisica_da_liquidacao = Contabilidade::MetaFisicaDaLiquidacao.find( params[ :id ] )
	end

	def set_liquidacao
		@liquidacao = Contabilidade::Liquidacao.find( params[ :liquidacao_id ] )
	end

	def disponibiliza_metas_fisicas empenho
		return empenho.metas_fisicas
	end

	def meta_fisica_da_liquidacao_params
		params.require( :contabilidade_meta_fisica_da_liquidacao ).permit( :liquidacao_id, :meta_fisica_id, :quantidade )
	end
end
