class Base::FontesDeRecursosController < ApplicationController
	include LoaControllersConcern
	include ControllerConcern
	before_action :authenticate_usuario!
	before_action :autoriza_usuario!
	before_action :set_fonte_de_recursos, only: [:show, :update,:edit]
	before_action :bloquear_orcamento, only: [:new, :edit, :destroy]

	def index
		if request.format.json?
			@fontes_de_recursos = contexto_atual.fontes_de_recursos.search(params[:q]).result
		else
			@fontes_de_recursos = contexto_atual.fontes_de_recursos
		end

		respond_to do |format|
			format.html
			format.json { render json: @fontes_de_recursos, methods: :codigo_e_descricao }
		end
	end

	def show

	end

	def edit
		@grupo_de_fonte = contexto_atual.grupos_das_fontes_de_recursos.pluck(:descricao, :id)
		if @fonte_de_recursos.percentuais_mensais == nil
			@fonte_de_recursos.create_percentuais_mensais
		end
	end

	def update
		if @fonte_de_recursos.update( fonte_de_recursos_params )
			redirect_to base_fontes_de_recursos_path(orcamento_atual.class.to_s.downcase, orcamento_atual.exercicio), notice: 'Dados alterados com sucesso.'
		else
			render :show
		end
	end

	private
	def set_fonte_de_recursos
		@fonte_de_recursos = contexto_atual.fontes_de_recursos.find_by(id: params[:id])
		@tipos_de_vinculos = Base::FonteDeRecursos.tipo_de_vinculos
	end

	def fonte_de_recursos_params
		if params.has_key? :base_fontes_de_recursos_fonte_tce
			params[:base_fonte_de_recursos] = params.delete :base_fontes_de_recursos_fonte_tce
		elsif params.has_key? :base_fontes_de_recursos_fonte2018
			params[:base_fonte_de_recursos] = params.delete :base_fontes_de_recursos_fonte2018
		end
		params.require(:base_fonte_de_recursos).permit(:fonte_vinculada, :percentual_minimo_de_destinacao, :tipo_de_vinculo,
			percentuais_mensais_attributes: [:percentual_janeiro, :percentual_fevereiro, :percentual_marco,
			:percentual_abril, :percentual_maio, :percentual_junho, :percentual_julho, :percentual_agosto,
			:percentual_setembro, :percentual_outubro, :percentual_novembro,:percentual_dezembro, :natureza_da_receita_id])
	end
end
