module Contabilidade
class ContigenciamentosController < ApplicationController
	include ControllerConcern
	before_action :authenticate_usuario!
	before_action :autoriza_usuario!
	before_action :set_contigenciamento, only: [:show, :edit, :update, :destroy]
	before_action :disponibiliza_dependencias, only: [:new, :edit, :create,:update, :index]


	# GET /contabilidade/contigenciamentos
	def index
		contigenciamentos = Contabilidade::Contigenciamento.order(id: :desc)

		if params[:orcamentarios]
			contigenciamentos = contigenciamentos.where(tipo: Contabilidade::Contigenciamento.tipos["orcamentario"])
			@url_contegenciamentos = orcamentarios_contabilidade_contigenciamentos_path
		elsif params[:financeiros]
			contigenciamentos = contigenciamentos.where(tipo: Contabilidade::Contigenciamento.tipos["financeiro"])
			@url_contegenciamentos = financeiros_contabilidade_contigenciamentos_path
		else
			contigenciamentos = Contabilidade::Contigenciamento.all
			@url_solicitacao_de_alteracao_orcamentarias = licitacao_projetos_path
		end

		@q = contigenciamentos.order(:id).search(params[:q])
		@contigenciamentos = @q.result(distinct: false).paginate(page: params[:page], per_page: 10)
	end

	# GET /contabilidade/contigenciamentos/1
	def show
	end

	# GET /contabilidade/contigenciamentos/new
	def new
		tipo = params[:orcamentarios].present? ? "orcamentario" : "financeiro"
		@contigenciamento = Contabilidade::Contigenciamento.new(tipo: tipo)
	end

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

	# POST /contabilidade/contigenciamentos
	def create
		@contigenciamento = Contabilidade::Contigenciamento.new(contigenciamento_params)

		if @contigenciamento.save
			redirect_to @contigenciamento, notice: 'Contigenciamento foi criado(a) com sucesso.'
		else
			render :new
		end
	end

	# PATCH/PUT /contabilidade/contigenciamentos/1
	def update
		if @contigenciamento.update( contigenciamento_params )
			redirect_to @contigenciamento, notice: 'Contigenciamento foi atualizado(a) com sucesso.'
		else
			render :edit
		end
	end

	def editar_elementos

	end

	def atualizar_elementos

	end

	# DELETE /contabilidade/contigenciamentos/1
	def destroy
		mensagem = apaga_e_retorna_mensagem(@contigenciamento)
		redirect_to contabilidade_contigenciamentos_url, mensagem
	end

	def disponibiliza_dependencias
		@fontes_de_recurso = contabilidade_atual.fontes_de_recursos.order(:codigo)
		@decretos = Contabilidade::Decreto.where(tipo_de_decreto: 1)
		@tipos = Contabilidade::Contigenciamento.tipos
	end

	private
	def set_contigenciamento
		@contigenciamento = Contabilidade::Contigenciamento.find( params[:id] )
	end

	# Permite apenas os parâmetros específicos
	def contigenciamento_params
		params.require(:contabilidade_contigenciamento).permit(:data, :valor, :fonte_de_recurso_id, :tipo, :decreto_id)
	end
end
end
