class Loa::UnidadesGestorasController < ApplicationController
	include ControllerConcern
	include Loa::UnidadesGestorasHelper

	before_action -> { verifica_modulo_na_sessao(["licitacao", "contabilidade", "planejamento"]) }
	before_action :authenticate_usuario!
	before_action :autoriza_usuario!
	before_action :bloquear_orcamento, only: [:new, :edit, :destroy]
	before_action :set_unidade_gestora, only: [:show, :edit, :update, :destroy]
	before_action only: [:edit, :update, :destroy] do
		verifica_autorizacao_para_status_de_orcamento_helper(@unidade_gestora.status_do_orcamento)
	end

	# GET /loa/unidades_gestoras
	def index
		# orcamento = Orcamento.find_by( exercicio: params[:exercicio] ) || contexto_atual
		@q = Loa::UnidadeGestora.order("codigo::integer").ransack(query_params)
		@unidades_gestoras = @q.result(distinct: false).paginate(page: params[:page], per_page: 10)
	end

	# GET /loa/unidades_gestoras/1
	def show
	end

	# GET /loa/unidades_gestoras/new
	def new
		# orcamento = Orcamento.find_by( exercicio: params[:exercicio] )
		@unidade_gestora = Loa::UnidadeGestora.new
	end

	# GET /loa/unidades_gestoras/1/edit
	def edit
	end

	# POST /loa/unidades_gestoras
	def create
		# orcamento = Orcamento.find_by( exercicio: params[:exercicio] )
		@unidade_gestora = Loa::UnidadeGestora.new(unidade_gestora_params)
		@unidade_gestora.status_do_orcamento = contexto_atual[:status]
		if @unidade_gestora.save

			if manter_form_apos_cadastro?
				redirect_path = new_unidade_gestora
			else
				redirect_path = rota_unidade_gestora(@unidade_gestora)
			end
				redirect_to redirect_path, notice: 'Unidade gestora foi criado(a) com sucesso.'
		else
			render :new
		end
	end

	# PATCH/PUT /loa/unidades_gestoras/1
	def update
		if @unidade_gestora.update( unidade_gestora_params )
			redirect_to rota_unidade_gestora(@unidade_gestora), notice: 'Unidade gestora foi atualizado(a) com sucesso.'
		else
			render :edit
		end
	end

	# DELETE /loa/unidades_gestoras/1
	def destroy
		mensagem = apaga_e_retorna_mensagem(@unidade_gestora)
		redirect_to rota_unidades_gestoras, mensagem
	end

	def envios_pncp
		@q = Loa::UnidadeGestora.order("codigo::integer").ransack(query_params)
		@unidades_gestoras = @q.result(distinct: false).paginate(page: params[:page], per_page: 10)
	end

	private
	def set_unidade_gestora
		@unidade_gestora = Loa::UnidadeGestora.find( params[:id] )
	end

	# Permite apenas os parâmetros específicos
	def unidade_gestora_params
		params.require(:loa_unidade_gestora).permit(:orgao_id,:responsavel_contabil_diferente, :codigo, :nome, :cnpj, :data_de_cadastro, :numero_da_lei_de_criacao, :data_encerramento, centro_de_custos_attributes: [:unidade_gestora_id, :centro_de_custos_mae_id, :nivel, :descricao, :_destroy])

	end
end
