class LogMovimentacoesPcaspController < ApplicationController
	include ControllerConcern
	before_action :authenticate_usuario!
	before_action :autoriza_usuario!
	before_action :set_log_movimentacao_pcasp, only: [:show, :gerar_movimentacoes]

	# GET /log_movimentacoes_pcasp
	def index
		@q = LogMovimentacaoPcasp.where("extract(year from created_at) = ?", contexto_atual.exercicio).order("id desc").search(params[:q])
		@log_movimentacoes_pcasp = @q.result(distinct: false).paginate(page: params[:page], per_page: 15)
	end

	def show
		if @log_movimentacao_pcasp.gerador_type == 'Loa::OrcamentoDaDespesa'
			redirect_to log_movimentacoes_pcasp_path, notice: 'Entre através do menu orçamento.'
		elsif @log_movimentacao_pcasp.gerador_type == 'Loa::OrcamentoDaReceita'
			redirect_to log_movimentacoes_pcasp_path, notice: 'Entre através do menu orçamento.'
		elsif @log_movimentacao_pcasp.gerador_type == 'Contabilidade::BloqueioDeDotacao'
			redirect_to log_movimentacoes_pcasp_path, notice: 'Pesquise o orçamento da despesa para verificar essa informação.'
		elsif @log_movimentacao_pcasp.gerador_type == 'Contabilidade::EstornoDeDespesaExtraOrcamentaria'
			redirect_to @log_movimentacao_pcasp.gerador.despesa_extra_orcamentaria
		else
			redirect_to @log_movimentacao_pcasp.gerador
		end
	end

	def gerar_movimentacoes
		begin
			if @log_movimentacao_pcasp.present?
				@log_movimentacao_pcasp.gerador.gerar_todos_os_movimentos(nil, contexto_atual)
				@log_movimentacao_pcasp.gerador.update_column(:created_at, @log_movimentacao_pcasp.gerador.created_at)
				@log_movimentacao_pcasp.gerador.valida_movimentacoes_pcasp if @log_movimentacao_pcasp.gerador.respond_to?(:valida_movimentacoes_pcasp)
				render json: { success: true }
			else
				render json: { success: false, message: 'Nenhum registro encontrado.' }
			end
		rescue Exception => e
			render json: { success: false, message: e.message }
		end
	end

	private
	def set_log_movimentacao_pcasp
		@log_movimentacao_pcasp = LogMovimentacaoPcasp.find( params[:id] )
	end

	# Permite apenas os parâmetros específicos
	def log_movimentacao_pcasp_paramsqtd_movimentacoes_controle
		
	end
end
