class ContextoController < ApplicationController
	before_action :authenticate_usuario!

	# contexto_path
	def index
		@qtd_de_usuarios_nao_aprovados = Usuario.nao_aprovados.size

		@orcamentos = Orcamento.order('exercicio DESC')
		if session[:modulo].in? %w(licitacao administrativo controladoria obra planejamento gestao_de_estoque patrimonio)
			@ppas = Ppa::Ppa.order('exercicio_inicial DESC')
			session[:contexto_tipo] = nil
			render 'selecionar_exercicio'
		elsif session[:modulo].in? %w(transparencia)
			redirect_to portal_da_transparencia_path, :target => 'blank'
		elsif session[:modulo].in? %w(gestao_do_portal_da_transparencia)
			session[:contexto_tipo] = 'Portal da Transparência'
			redirect_to gestao_do_portal_da_transparencia_inicio_path
		else
			@contabilidades = Orcamento.order('exercicio DESC').aprovados.all
			session[:contexto_tipo] = nil
		end
	end

	# selecionar_contexto_path
	def selecionar_contexto
		contexto = params[:tipo].constantize.find_by( id: params[:id] )
		if contexto.present?
			session[:contexto_id] = contexto.id
			session[:contexto_tipo] = params[:modulo] || contexto.class.name

			if ((!params[:alteracao_orcamentaria].present? && session[:modulo] == 'alteracao_orcamentaria') ||
						!params[:financeiro].present? && session[:modulo] == 'financeiro') && params[:modulo].try(:parameterize) == "contabilidade"
				session[:modulo] = params[:modulo].try(:parameterize)
			end

			if params[:alteracao_orcamentaria] == "true"
				session[:modulo] = 'alteracao_orcamentaria'
			end

			if params[:financeiro] == "true"
				session[:modulo] = 'financeiro'
			end
			redirect_path = case session[:contexto_tipo]
											when "Licitacao"
												licitacao_inicio_path
											when "Administrativo"
												administrativo_inicio_path
											when "Controladoria"
												controladoria_inicio_path
											when "Obra"
												obra_inicio_path
											when "Gestao_de_estoque"
												gestao_de_estoque_inicio_path
											when "Patrimonio"
												patrimonio_inicio_path
											when "Planejamento"
												contexto
											else
												if params[:alteracao_orcamentaria] == "true"
													contabilidade_alteracao_orcamentaria_inicio_path
												elsif params[:contabilidade] == "true"
													contabilidade_inicio_path
												elsif params[:financeiro] == "true"
													contabilidade_financeiro_inicio_path
												else
													contexto
												end
											end
			redirect_to redirect_path, notice: "Contexto selecionado com sucesso."
		else
			redirect_to contexto_path, alert: 'Ocorreu um erro ao selecionar o contexto.'
		end
	end

	# GET	/contexto/modulo
	def seleciona_modulo
		@qtd_de_usuarios_nao_aprovados = Usuario.nao_aprovados.size

		session[:contexto_id] = nil
	end

	# POST	/contexto/modulo
	def troca_modulo
		session[:modulo] = params[:modulo]
		redirect_to contexto_path, notice: "Modulo selecionado com sucesso."
	end

	def health
		render plain: "ok"
	end
end
