module Contabilidade
class DocumentosDaLiquidacaoController < ApplicationController
	include ControllerConcern

	before_action :authenticate_usuario!
	before_action :autoriza_usuario!
	before_action :set_liquidacao, only: [:new, :create, :retorna_modelo]
	before_action :set_documento_da_liquidacao, only: [:show, :edit, :update, :destroy]
	before_action :disponibiliza_dependencias, except: [:retorna_modelo]

	# GET /contabilidade/documentos_da_liquidacao/new
	def new
		@documento_da_liquidacao = @liquidacao.documentos_da_liquidacao.new
	end

	# GET /contabilidade/documentos_da_liquidacao/1/edit
	def edit
	end

	# POST /contabilidade/documentos_da_liquidacao
	def create
		@documento_da_liquidacao = DocumentoDaLiquidacao.new(documento_da_liquidacao_params)

		if @documento_da_liquidacao.save
			if contabilidade_atual.present?
				redirect_to contabilidade_liquidacao_path(@documento_da_liquidacao.liquidacao), notice: 'Documento da liquidacao foi criado com sucesso.'
			else
				redirect_to administrativo_liquidacao_path(@documento_da_liquidacao.liquidacao), notice: 'Documento da liquidacao foi criado com sucesso.'
			end
		else
			render :new
		end
	end

	# PATCH/PUT /contabilidade/documentos_da_liquidacao/1
	def update
		if @documento_da_liquidacao.update( documento_da_liquidacao_params )
			if contabilidade_atual.present?
				redirect_to contabilidade_liquidacao_path(@documento_da_liquidacao.liquidacao), notice: 'Documento da liquidacao foi criado com sucesso.'
			else
				redirect_to administrativo_liquidacao_path(@documento_da_liquidacao.liquidacao), notice: 'Documento da liquidacao foi atualizado com sucesso.'
			end
		else
			render :edit
		end
	end

	# DELETE /contabilidade/documentos_da_liquidacao/1
	def destroy
		mensagem = apaga_e_retorna_mensagem(@documento_da_liquidacao)
		if contabilidade_atual.present?
			redirect_to contabilidade_liquidacao_path(@documento_da_liquidacao.liquidacao), mensagem
		else
			redirect_to administrativo_liquidacao_path(@documento_da_liquidacao.liquidacao), mensagem
		end
	end

	def retorna_modelo
		return if bloqueia_usuario_com_base_em 'create'
		@modelo = Licitacao::ModeloDeDocumento.find(params[:modelo_id])
		@configuracao = Configuracao.last
		@empenho = @liquidacao.empenho

		respond_to do |format|
			format.js
		end
	end

	def modelos
		if params[:lei].present?
			@modelos = Licitacao::ModeloDeDocumento.where(lei: params[:lei])
		else
			@modelos = Licitacao::ModeloDeDocumento.all
		end

		respond_to do |format|
			format.json {render json: @modelos}
		end
	end

	private
	def set_documento_da_liquidacao
		@documento_da_liquidacao = DocumentoDaLiquidacao.find( params[:id] )
	end

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

	def disponibiliza_dependencias
		@tipos_dos_documentos = Contabilidade::DocumentoDaLiquidacao.tipos_de_documento
		tipos_dos_modelos = [Licitacao::ModeloDeDocumento.tipos["liquidacao"], Licitacao::ModeloDeDocumento.tipos["outros_documentos"]]
		@modelos_de_documentos = Licitacao::ModeloDeDocumento.where(tipo: tipos_dos_modelos)
		@leis = Licitacao::ModeloDeDocumento.leis
	end

	# Permite apenas os parâmetros específicos
	def documento_da_liquidacao_params
		params.require(:contabilidade_documento_da_liquidacao).permit(:modelo_do_documento_id, :data_do_documento, :texto, :tipo_de_documento, :titulo_personalizado, :numero, :liquidacao_id)

	end
end
end
