module Contabilidade
	class ConfiguracoesDeFolhaController < ApplicationController
		include ControllerConcern
		before_action :authenticate_usuario!
		before_action :autoriza_usuario!
		before_action :set_configuracoes_de_folha, only: [:show, :edit, :update, :destroy]

		def index
			@configuracoes_de_folha = Contabilidade::ConfiguracaoDeFolha.where(orcamento_id: contexto_atual.id).order(:mes_de_referencia)
		
			if params[:mes].present? && params[:ano].present?
				@configuracoes_de_folha = @configuracoes_de_folha.joins(:orcamento).includes(:orcamento).where("mes_de_referencia = ? AND orcamentos.exercicio = ?", params[:mes], params[:ano])
			end
			respond_to do |format|
				format.html
				format.json { render json: @configuracoes_de_folha }
			end
		end
		
		
		def new
			@configuracoes_de_folha = Contabilidade::ConfiguracaoDeFolha.new
		end

		def edit
		end

		def create
			@configuracoes_de_folha = Contabilidade::ConfiguracaoDeFolha.new(configuracoes_de_folha_params.merge(orcamento_id: contexto_atual.id))
			ano_orcamento_atual = @configuracoes_de_folha.data_do_fechamento

			if ano_orcamento_atual.year == contexto_atual.exercicio
				if @configuracoes_de_folha.save
					redirect_to contabilidade_configuracoes_de_folha_path, notice: 'Configuracoes de folha foi criado(a) com sucesso.'
				else
					render :new
				end
			else
				redirect_to nova_configuracao_de_folha_path, alert: 'A configuração de folha deve ser do mesmo ano do orçamento.'
			end
		end

		def update
			if @configuracoes_de_folha.update( configuracoes_de_folha_params )
				redirect_to contabilidade_configuracoes_de_folha_path, notice: 'Configuracoes de folha foi atualizado(a) com sucesso.'
			else
				render :edit
			end
		end

		def destroy
			mensagem = apaga_e_retorna_mensagem(@configuracoes_de_folha)
			redirect_to contabilidade_configuracoes_de_folha_path, mensagem
		end

		private
		def set_configuracoes_de_folha
			@configuracoes_de_folha = Contabilidade::ConfiguracaoDeFolha.find( params[:id] )
		end

		# Permite apenas os parâmetros específicos
		def configuracoes_de_folha_params
			params.require(:contabilidade_configuracao_de_folha).permit(:orcamento_id, :mes_de_referencia, :data_do_fechamento_legislativo, :data_do_fechamento)
			
		end
	end
end
