class ConfiguracoesSimController < ApplicationController
	include ControllerConcern
	before_action :authenticate_usuario!
	before_action :autoriza_usuario!
	before_action :set_configuracao_sim, only: [:show, :edit, :update, :destroy]
	before_action :disponibiliza_dependencias, only: [:show, :new, :create, :edit, :update, :destroy]

	# GET /configuracoes_sim
	def index
		@q = ConfiguracaoSim.order(:id).search(params[:q])
		@configuracoes_sim = @q.result(distinct: false).paginate(page: params[:page], per_page: 10)
	end

	# GET /configuracoes_sim/1
	def show
	end

	# GET /configuracoes_sim/new
	def new
		@configuracao_sim = ConfiguracaoSim.new
	end

	# GET /configuracoes_sim/1/edit
	def edit
		if current_usuario.ambos?
			@poder_do_usuario = @configuracao_sim.tipo_sim
		end
	end

	# POST /configuracoes_sim
	def create
		@configuracao_sim = ConfiguracaoSim.new(configuracao_sim_params)

		if current_usuario.ambos?
			@poder_do_usuario = configuracao_sim_params[:tipo_sim]
		end

		if @configuracao_sim.save
			redirect_to show_configuracoes_sim_path(tipo_sim: @poder_do_usuario), notice: 'Configuracao sim foi criado(a) com sucesso.'
		else
			render :new
		end
	end

	# PATCH/PUT /configuracoes_sim/1
	def update
		if current_usuario.ambos?
			@poder_do_usuario = configuracao_sim_params[:tipo_sim]
		end

		if @configuracao_sim.update( configuracao_sim_params )
			redirect_to show_configuracoes_sim_path(tipo_sim: @poder_do_usuario), notice: 'Configuracao sim foi atualizado(a) com sucesso.'
		else
			render :edit
		end
	end

	# DELETE /configuracoes_sim/1
	def destroy
		if current_usuario.ambos?
			@poder_do_usuario = @configuracao_sim.tipo_sim
		end

		mensagem = apaga_e_retorna_mensagem(@configuracao_sim)
		redirect_to show_configuracoes_sim_path(tipo_sim: @poder_do_usuario), mensagem
	end

	private
	def disponibiliza_dependencias
		@configuracao = Configuracao.last
		@agentes = ::Base::AgentePublicoMunicipal.where('tipo_de_cargo <> ? and tipo_de_cargo <> ? and tipo_de_cargo <> ?', 59, 60, 90).distinct
		@pessoas_fisicas = ::Base::Pessoa.left_joins(:agentes_publicos_municipais).where('tipo_de_cargo not in (59, 60, 90) or base_agentes_publicos_municipais.id is null').includes(:tipo_de_pessoa).where.not(cpf: nil).distinct
		@pessoas_juridicas = ::Base::Pessoa.includes(:tipo_de_pessoa).where.not(cnpj: nil).distinct
		@tipo_responsavel = params[:tipo_responsavel]
		@tipo_de_pessoa = params[:tipo_pessoa]

		if current_usuario.ambos?
			@poder_do_usuario = params[:tipo_sim]
		else
			@poder_do_usuario = current_usuario.tipo_de_poder
		end
	end

	def set_configuracao_sim
		@configuracao = Configuracao.last
		@configuracao_sim = ConfiguracaoSim.find( params[:id] )
	end

	# Permite apenas os parâmetros específicos
	def configuracao_sim_params
		params.require(:configuracao_sim).permit(:configuracao_id, :agente_publico_id, :pessoa_id, :tipo_de_responsavel,
			:data_de_entrada, :data_de_saida, :tipo_sim, :crc, :tipo_responsavel, :tipo_pessoa)
	end
end
