
module Contabilidade
class EstornosDeDespesaExtraOrcamentariaController < ApplicationController
	include ControllerConcern
	before_action :authenticate_usuario!
	before_action :autoriza_usuario!
	before_action :set_estorno_de_despesa_extra_orcamentaria, only: [ :edit, :update, :destroy]
	before_action :set_despesa_extra_orcamentaria, only: [:new, :create]
	# before_action -> {verifica_mes_bloqueado(@estorno_de_despesa_extra_orcamentaria)}, only: [:edit, :destroy]

	# GET /contabilidade/estorno_de_despesas_extra_orcamentarias/new
	def new
		if @despesa_extra_orcamentaria.estornada?
			redirect_to :back, alert: 'Despesa extraorçamentária já foi estornada.'
		else
			@estorno_de_despesa_extra_orcamentaria = @despesa_extra_orcamentaria.build_estorno_de_despesa_extra_orcamentaria
		end
	end

	# POST /contabilidade/estorno_de_despesas_extra_orcamentarias
	def create

		@estorno_de_despesa_extra_orcamentaria = @despesa_extra_orcamentaria.build_estorno_de_despesa_extra_orcamentaria(estorno_de_despesa_extra_orcamentaria_params)
		@estorno_de_despesa_extra_orcamentaria.usuario_id = current_usuario.try(:id)
		if params[:relancamento] == "true" && @estorno_de_despesa_extra_orcamentaria.valid?
			mensagem = 'Por favor, realizar o relançamento do empenho para concluir a anulação total do empenho antigo.'
			redirect_to new_contabilidade_despesa_extra_orcamentaria_path(exercicio: contabilidade_atual.exercicio, atributos_para_relancamento: @despesa_extra_orcamentaria.attributes, atributos_de_estorno: @estorno_de_despesa_extra_orcamentaria.attributes), notice: mensagem
		else
			if @estorno_de_despesa_extra_orcamentaria.save
				redirect_to @estorno_de_despesa_extra_orcamentaria.despesa_extra_orcamentaria, notice: 'Estorno de despesa extraorçamentária foi criado(a) com sucesso.'
			else
				render :new
			end
		end
	end

	def show
	end

	def edit
	end

	def update
		if @estorno_de_despesa_extra_orcamentaria.update(estorno_de_despesa_extra_orcamentaria_params)
			redirect_to @estorno_de_despesa_extra_orcamentaria.despesa_extra_orcamentaria,
				notice: 'Estorno de despesa extra foi atualizada com sucesso!'
		else
			flash.now[:alert] = 'Não foi possível atualizar o Estorno de despesa extra, verifique os campos.'
			disponibiliza_dependencias
			render :edit
		end
	end

	def destroy
		@despesa_extra_orcamentaria = Contabilidade::DespesaExtraOrcamentaria.find( @estorno_de_despesa_extra_orcamentaria.despesa_extra_orcamentaria_id )
		mensagem = apaga_e_retorna_mensagem(@estorno_de_despesa_extra_orcamentaria)
		redirect_to @despesa_extra_orcamentaria,
			notice: 'Estorno de despesa extra foi excluido com sucesso!'
	end


	private
	def set_estorno_de_despesa_extra_orcamentaria
		#@despesa_extra_orcamentaria = Contabilidade::DespesaExtraOrcamentaria.find( params[:despesa_extra_orcamentaria_id] )
		@estorno_de_despesa_extra_orcamentaria = Contabilidade::EstornoDeDespesaExtraOrcamentaria.find( params[:estorno_de_despesa_extra_orcamentaria_id] )
	end

	def set_despesa_extra_orcamentaria
		@despesa_extra_orcamentaria = Contabilidade::DespesaExtraOrcamentaria.find( params[:despesa_extra_orcamentaria_id] )
	end

	# Permite apenas os parâmetros específicos
	def estorno_de_despesa_extra_orcamentaria_params
		params.require(:contabilidade_estorno_de_despesa_extra_orcamentaria).permit(:justificativa, :data_do_estorno)
	end
end
end
