module Base
class LegislacoesController < ApplicationController
	include ControllerConcern
	before_action :authenticate_usuario!
	before_action :autoriza_usuario!
	before_action :set_legislacao, only: [:show, :edit, :update, :destroy]

	# GET /base/legislacoes
	def index
		disponibiliza_dependencias
		@q = Base::Legislacao.order(:id).search(params[:q])
		@legislacoes = @q.result(distinct: false).paginate(page: params[:page], per_page: 10)
	end

	# GET /base/legislacoes/1
	def show
	end

	# GET /base/legislacoes/new
	def new
		@legislacao = Base::Legislacao.new
		@legislacao_configuracoes = Base::LegislacaoConfiguracoes.new
		disponibiliza_dependencias
	end

	# GET /base/legislacoes/1/edit
	def edit
		@legislacao.build_legislacao_configuracoes if @legislacao.legislacao_configuracoes.nil?
		@legislacao_configuracoes = @legislacao.legislacao_configuracoes
		disponibiliza_dependencias
	end

	# POST /base/legislacoes
	def create
		@legislacao = Base::Legislacao.new(legislacao_params)

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

	# PATCH/PUT /base/legislacoes/1
	def update
		if @legislacao.update( legislacao_params )
			redirect_to @legislacao, notice: 'Legislacao foi atualizado(a) com sucesso.'
		else
			disponibiliza_dependencias
			render :edit
		end
	end

	# DELETE /base/legislacoes/1
	def destroy
		mensagem = apaga_e_retorna_mensagem(@legislacao)
		redirect_to base_legislacoes_url, mensagem
	end

	private
	def set_legislacao
		@legislacao = Base::Legislacao.find( params[:id] )
	end

	def disponibiliza_dependencias
		@tipos = Base::Legislacao.tipos
		@esferas = Base::Legislacao.esferas
	end


	# Permite apenas os parâmetros específicos
	def legislacao_params
		params.require(:base_legislacao).permit(:titulo, :arquivo, :tipo, :descricao, :data_da_legislacao, 
		:esconder, :esfera, :lei_federal,
		legislacao_configuracoes_attributes: [:legislacao_id, :pb_dispensa, :pb_inexigibilidade, :pb_chamada, 
		:aditivo_prazo, :aditivo_acrescimo, :aditivo_reducao, :aditivo_reajuste_acrescimo, :aditivo_reajuste_decrescimo,
		:aditivo_prazo_e_reducao, :aditivo_prazo_e_acrescimo, :aditivo_renovacao, :aditivo_prazo_e_reajuste_acrescimo, :aditivo_prazo_e_reajuste_decrescimo,
		:aditivo_nova_unidade, :aditivo_mudanca_item, :aditivo_alteracao_contratual, :aditivo_recisao])

	end
end
end