class Base::SubfuncoesController < ApplicationController
	include ControllerConcern

	before_action :authenticate_usuario!
	before_action :autoriza_usuario!

	def index
		subfuncoes_tipicas = Base::Subfuncao.joins(:funcao).where(funcao_id: params[:funcao_id]).order(:codigo)
		subfuncoes_atipicas = Base::Subfuncao.joins(:funcao).where.not(funcao_id: params[:funcao_id], base_funcoes: {codigo: 99}).where(base_funcoes: {modulo_id: contexto_atual.id}).order(:codigo)

		json_retorno = { subfuncoes_tipicas: subfuncoes_tipicas, subfuncoes_atipicas: subfuncoes_atipicas } if (subfuncoes_tipicas.present? && subfuncoes_atipicas.present?)

		render :json => json_retorno
	end

	# GET /base/sub_funcoes/new
	def new
		@base_sub_funcao = Base::Subfuncao.new
		@base_sub_funcao.funcao = Base::Funcao.find(params[:id])
	end

	# GET /base/sub_funcoes/1/edit
	def edit
	end

	# POST /base/sub_funcoes
	def create
		@base_sub_funcao = Base::Subfuncao.new(ppa_sub_funcao_params)

		if @base_sub_funcao.save
			redirect_to @base_sub_funcao.funcao, notice: 'Sub-Função foi criado com sucesso.'
		else
			render :new
		end
	end

	# PATCH/PUT /base/sub_funcoes/1
	def update
		if @base_sub_funcao.update(ppa_sub_funcao_params)
			redirect_to @base_sub_funcao.funcao, notice: 'Sub-Função foi atualizado com sucesso.'
		else
			render :edit
		end
	end

	# DELETE /base/sub_funcoes/1
	def destroy
		@base_funcao = @base_sub_funcao.funcao
		mensagem = apaga_e_retorna_mensagem(@base_sub_funcao)
		redirect_to @base_funcao, mensagem
	end

	private
	# Use callbacks to share common setup or constraints between actions.
	def set_ppa_sub_funcao
		@ppa_sub_funcao = Base::Subfuncao.find(params[:id])
	end

	# Only allow a trusted parameter "white list" through.
	def base_sub_funcao_params
		params.require(:base_sub_funcao).permit(:nome, :funcao_id, :codigo)
	end
end
