require "#{Rails.root}/lib/routes_helper"

Rails.application.routes.draw do

	namespace :licitacao do
		resources :solucoes_do_etp do 
			member do
				get 'editar_itens'
				patch 'atualizar_itens'
				post 'atualizar_solucao_final'
				get 'quantidades', action: :editar_quantidades, as: :editar_quantidades_etp
				patch 'quantidades', action: :atualizar_quantidades, as: :atualizar_quantidades_etp
			end
		end
		resources :etps do
			post 'impactos_medidas', on: :member
			get 'edit_impacto_medida/:impacto_id/:medida_id', to: 'etps#edit_impacto_medida', as: 'edit_impacto_medida'
			patch 'update_impacto_medida/:impacto_id/:medida_id', to: 'etps#update_impacto_medida', as: 'update_impacto_medida'
			delete 'destroy_impacto_medida/:impacto_id/:medida_id', to: 'etps#destroy_impacto_medida', as: 'destroy_impacto_medida'
			post 'criar_pedido', on: :member
			member do
				post :confirmar
				post :voltar_etapa
				patch :atualizar_unidades_orcamentarias
				delete :remove_unidade_e_seus_itens
				post :impactos_medidas
				get :edit_impacto_medida
			end
	
			# Ações específicas para unidades convidadas
			get 'unidades_orcamentarias', action: :editar_unidades_orcamentarias, as: :editar_unidades_orcamentarias_etp
			patch 'unidades_orcamentarias', action: :atualizar_unidades_orcamentarias, as: :atualizar_unidades_orcamentarias_etp
			
		end
	end	

  namespace :contabilidade do
    resources :transferencias_de_saldo_pcasp
  end

  namespace :contabilidade do
    resources :bloqueios_mensais_do_pcasp do
			member do
				patch :bloquear, as: :bloquear_balancete
				patch :desbloquear, as: :desbloquear_balancete
			end
		end
  end
	
	resources :log_movimentacoes_pcasp, only: [:index, :show] do
		member do
			get 'gerar_movimentacoes'
		end
	end

  namespace :pncp do
    resources :orgaos_pncp
  end

  namespace :patrimonio do
    resources :transferencias
  end

  namespace :patrimonio do
    resources :responsaveis_do_bem_patrimonial
  end
  namespace :contabilidade do
    resources :fontes_da_configuracao_contabil
  end

  use_doorkeeper do
    skip_controllers :applications, :authorized_applications, :applications, :token_info
  end

  mount Receita::Api => '/receitas'
	mount GestaoDeEstoque::Api => '/gestao_de_estoques'

  namespace :transparencia do
    resources :documentos
  end
	def draw(routes_name)
		instance_eval(File.read(Rails.root.join("config/routes/#{routes_name}.rb")))
	end

	get '/new/liquidacao/:liquidacao_id', to: 'contabilidade/estornos_de_liquidacao#new', as: :new_estorno_de_liquidacao
	post 'estornos_de_liquidacao/liquidacao/:liquidacao_id', to: 'contabilidade/estornos_de_liquidacao#create', as: :create_estorno_de_liquidacao

	#Artualizar linhas do SIM
	patch 'empenhos/:id/atualiza_linha', to: 'empenhos#atualiza_linha', as: :atualiza_linha_empenho
	patch 'contabilidade/liquidacoes/:id/atualiza_linha', to: 'contabilidade/liquidacoes#atualiza_linha', as: :atualiza_linha_liquidacao
	patch 'contabilidade_pagamentos/:id/atualiza_linha', to: 'contabilidade/pagamentos#atualiza_linha', as: :atualiza_linha_pagamento

	#NOME DOS MÓDULOS
	draw :contabilidade_routes
	draw :pesquisas_routes
	draw :projecao_routes
	draw :base_routes
	draw :loa_routes
	draw :ppa_routes
	draw :licitacao_routes
	draw :administrativo_routes
	draw :controladoria_routes
	draw :usuarios_routes
	draw :tcm_routes
	draw :obra_routes
	draw :gestao_de_estoque_routes
	draw :patrimonio_routes
	draw :gestao_do_portal_da_transparencia_routes
	draw :pca_routes
	draw :pncp_routes

	get 'empenhos/:orcamento_da_despesa/lancamentos_do_empenhos', to: 'empenhos#lancamentos_do_empenhos', as: :lancamentos_dos_empenhos


	resources :empenhos do
		collection do
			get '/',               action: :index
			get '/ativos',         action: :index, defaults: { ativos: true }
			get '/em_analise',     action: :index, defaults: { em_analise: true }
			get '/confirmados',    action: :index, defaults: { confirmados: true }
			get '/anulados',       action: :index, defaults: { anulados: true }
			get '/recebidos',       action: :index, defaults: { recebidos: true }
			get '/enviados_para_contabilidade', action: :index, defaults: { enviado_para_contabilidade: true }
			get '/reconhecimentos_de_divida', action: :index, defaults: { reconhecimento_de_divida: true }
			get '/restos_a_pagar', action: :restos_a_pagar, defaults: { restos_a_pagar: true }
			get '/retorna_complementos_por_fonte_do_empenho', to: 'empenhos#retorna_complementos_por_fonte_do_empenho' # Ajax
			get '/:orcamento_id/empenhos_por_orcamento', to: 'empenhos#empenhos_por_orcamento' #Ajax
			post	'/receber_multiplos_empenhos', to: 'empenhos#recebe_multiplos_empenhos', as: :empenho_receber_multiplos
			get '/retorna_novo_numero_de_empenho', to: 'empenhos#retorna_novo_numero_de_empenho', as: :retorna_novo_numero_de_empenho
		end

		member do
			patch :enviar_para_controladoria
			patch :enviar_para_copfin
			patch :enviar_para_contabilidade
			patch :enviar_para_administrativo
			patch :confirmar_empenho
			patch :retornar_para_administrativo
			patch :retornar_para_solicitado
			patch :receber
			get :apagar_liquidacoes

			get   :editar_itens
			get   :busca_itens
			get 	:show_resto_a_pagar
			patch :adiciona_itens
			patch :atualiza_itens
			patch :remover_todos_os_itens
			get   :editar_contas_bancarias_da_unidade
			patch :atualiza_contas_bancarias_da_unidade
			patch :atualiza_numero_do_empenho
			patch :atualiza_subconta_do_empenho
			patch :atualiza_operacao_de_credito_do_empenho
			post  :duplicar
			post :criar_restos_a_pagar
			get :configurar_unidade_orcamentaria
			get :configurar_fonte_de_recursos
			patch :atualiza_unidade_do_empenho
			post :atualiza_fonte_do_empenho
			get   :retorna_dados_do_empenho # Ajax
			get   :retorna_liquidacoes_confirmadas # Ajax
			get   :retorna_contas_bancarias_do_pagamento # Ajax
			get   :retorna_medicoes_da_obra #Ajax
			get   :editar_cronograma
			post   :atualizar_cronograma
			get :editar_conta_do_fornecedor
			patch :atualizar_conta_do_fornecedor
		end
	end

	namespace :comunicacao do
		resources :mensagens, only: [:index, :show]
	end

	# Portal da Transparência
	get 'portal_da_transparencia/index/:tipo_de_poder', to: 'portal_da_transparencia#index', as: :portal_da_transparencia_index
	get 'portal_da_transparencia/acessibilidade/:tipo_de_poder', to: 'portal_da_transparencia#acessibilidade', as: :portal_da_transparencia_acessibilidade
	get 'portal_da_transparencia/sobre/:tipo_de_poder', to: 'portal_da_transparencia#sobre', as: :portal_da_transparencia_sobre
	get 'portal_da_transparencia/glossario/:tipo_de_poder', to: 'portal_da_transparencia#glossario', as: :portal_da_transparencia_glossario
	get 'portal_da_transparencia/perguntas_frequentes/:tipo_de_poder', to: 'portal_da_transparencia#perguntas_frequentes', as: :portal_da_transparencia_perguntas_frequentes
	get 'portal_da_transparencia/index_obras/:tipo_de_poder', to: 'portal_da_transparencia#index_obras', as: :portal_da_transparencia_index_obras
	get 'portal_da_transparencia/:obra_id/obra/:tipo_de_poder', to: 'portal_da_transparencia#obra', as: :portal_da_transparencia_obra
	get 'portal_da_transparencia/diarias_e_passagens/:tipo_de_poder', to: 'portal_da_transparencia#diarias_e_passagens', as: :portal_da_transparencia_diarias_e_passagens
	get 'portal_da_transparencia/licitacoes/:tipo_de_poder', to: 'portal_da_transparencia#licitacoes', as: :portal_da_transparencia_licitacoes
	get 'portal_da_transparencia/contratos/:tipo_de_poder', to: 'portal_da_transparencia#contratos', as: :portal_da_transparencia_contratos
	get 'portal_da_transparencia/:processo_id/licitacao/:tipo_de_poder', to: 'portal_da_transparencia#licitacao', as: :portal_da_transparencia_licitacao
	get 'portal_da_transparencia/:contrato_id/contrato/:tipo_de_poder', to: 'portal_da_transparencia#contrato', as: :portal_da_transparencia_contrato
	get 'portal_da_transparencia/lista_de_documentos/:tipo_de_poder', to: 'portal_da_transparencia#lista_de_documentos', as: :portal_da_transparencia_lista_de_documentos
	get 'portal_da_transparencia/talao_da_receita/:talao_da_receita_id/:tipo_de_poder', to: 'portal_da_transparencia#talao_da_receita', as: :portal_da_transparencia_talao_da_receita
	get 'portal_da_transparencia/receitas/:tipo_de_poder', to: 'portal_da_transparencia#receitas', as: :portal_da_transparencia_receitas
	get 'portal_da_transparencia/receitas/:tipo_de_poder/orcamentaria', to: 'portal_da_transparencia#receitas_orcamentarias', as: :portal_da_transparencia_receitas_orcamentarias
	get 'portal_da_transparencia/receitas/:tipo_de_poder/extraorcamentaria', to: 'portal_da_transparencia#receitas_extra', as: :portal_da_transparencia_receitas_extra
	get 'portal_da_transparencia/receitas/:tipo_de_poder/repasses_do_duodecimo', to: 'portal_da_transparencia#repasses_do_duodecimo', as: :portal_da_transparencia_receitas_repasses_duodecimo
	get 'portal_da_transparencia/receitas/:tipo_de_poder/repasse_do_duodecimo/:id', to: 'portal_da_transparencia#repasse_do_duodecimo', as: :portal_da_transparencia_receitas_repasse_duodecimo
	get 'portal_da_transparencia/:natureza_da_receita/receita/:tipo_de_poder', to: 'portal_da_transparencia#receita', as: :portal_da_transparencia_receita
	get 'portal_da_transparencia/:talao_id/receita_extra/:tipo_de_poder', to: 'portal_da_transparencia#receita_extra', as: :portal_da_transparencia_receita_extra
	get 'portal_da_transparencia/:transferencia_financeira_id/transferencia_financeira/:tipo_de_poder', to: 'portal_da_transparencia#transferencia_financeira', as: :portal_da_transparencia_transferencia_financeira
	get 'portal_da_transparencia/despesas/:tipo_de_poder', to: 'portal_da_transparencia#despesas', as: :portal_da_transparencia_despesas
	get 'portal_da_transparencia/despesas/:tipo_de_poder/empenhos', to: 'portal_da_transparencia#empenhos', as: :portal_da_transparencia_empenhos
	get 'portal_da_transparencia/despesas/:tipo_de_poder/liquidacoes', to: 'portal_da_transparencia#liquidacoes', as: :portal_da_transparencia_liquidacoes
	get 'portal_da_transparencia/despesas/:tipo_de_poder/liquidacao/:id', to: 'portal_da_transparencia#liquidacao', as: :portal_da_transparencia_liquidacao
	get 'portal_da_transparencia/despesas/:tipo_de_poder/pagamentos', to: 'portal_da_transparencia#pagamentos', as: :portal_da_transparencia_pagamentos
	get 'portal_da_transparencia/despesas/:tipo_de_poder/ordem_cronologica', to: 'portal_da_transparencia#ordem_cronologica', as: :portal_da_transparencia_ordem_cronologica
	get 'portal_da_transparencia/despesas/:tipo_de_poder/:grupo/ordem_cronologica_pagamentos', to: 'portal_da_transparencia#ordem_cronologica_pagamentos', as: :portal_da_transparencia_ordem_cronologica_pagamentos
	get 'portal_da_transparencia/despesas/:tipo_de_poder/pagamento/:id', to: 'portal_da_transparencia#pagamento', as: :portal_da_transparencia_pagamento
	get 'portal_da_transparencia/despesas/:tipo_de_poder/restos_a_pagar', to: 'portal_da_transparencia#restos_a_pagar', as: :portal_da_transparencia_restos_a_pagar
	get 'portal_da_transparencia/despesas/:tipo_de_poder/restos_a_pagar_pago', to: 'portal_da_transparencia#restos_a_pagar_pago', as: :portal_da_transparencia_restos_a_pagar_pago
	get 'portal_da_transparencia/despesas/:tipo_de_poder/resto_a_pagar_pago/:id', to: 'portal_da_transparencia#resto_a_pagar_pago', as: :portal_da_transparencia_resto_a_pagar_pago
	get 'portal_da_transparencia/:despesa_id/despesa/:tipo_de_poder', to: 'portal_da_transparencia#despesa', as: :portal_da_transparencia_despesa
	get 'portal_da_transparencias/convenios_e_transferencias/:tipo_de_poder', to: 'portal_da_transparencia#convenios_e_transferencias', as: :portal_da_transparencia_convenios_e_transferencias
	get 'portal_da_transparencias/recebidos/:tipo_de_poder', to: 'portal_da_transparencia#transferencias_e_convenios', as: :portal_da_transparencia_transferencias_e_convenios
	get 'portal_da_transparencias/recebido/:id/:tipo_de_poder', to: 'portal_da_transparencia#transferencia_e_convenio', as: :portal_da_transparencia_transferencia_e_convenio
	get 'portal_da_transparencias/repasses/:tipo_de_poder', to: 'portal_da_transparencia#empenhos_repasses', as: :portal_da_transparencia_repasses
	get 'portal_da_transparencia/diarias/:tipo_de_poder', to: 'portal_da_transparencia#diarias', as: :portal_da_transparencia_diarias
	get 'portal_da_transparencia/:diaria_id/diaria/:tipo_de_poder', to:'portal_da_transparencia#diaria', as: :portal_da_transparencia_diaria


	########################################################################################################
		# RELATÓRIOS DO PORTAL

	resources :relatorio_do_portal, only: [:new] do
		get 'imprimir', on: :collection
		get 'imprimir_planilha', on: :collection
	end

	resources :folgas, except: [:show] # FERIADOS

	resources :auditoria, only: [:index, :show]

	resources :unidades_de_medida, except: [:show]
	post 'unidades_de_medida/esconder_unidade', to: 'unidades_de_medida#esconder_unidade', as: :unidades_de_medida_esconder_unidade

	resources :documentos_do_usuario, except: [:show]

	resources :relatorios_gerais, only: [:new]
	get 'relatorios_gerais/imprimir', to: 'relatorios_gerais#imprimir'

	scope '/contexto' do
		get '/', to: 'contexto#index', as: :contexto
		post '/selecionar_contexto', to: 'contexto#selecionar_contexto', as: :selecionar_contexto
		get '/modulo', to: 'contexto#seleciona_modulo', as: :seleciona_modulo
		post '/modulo', to: 'contexto#troca_modulo', as: :troca_modulo
	end

	scope '/impressao' do
		post '/', to: 'impressoes#index', as: :impressoes
	end

  resources :configuracoes_sim, except: [:show]

	resources :ncms

	resources :requisicoes_de_relatorios, only: [:index] do
		member do
			get :download_pdf
			get :cancelar
		end
	end

	scope '/configuracoes' do
		get '/', to: 'configuracoes#edit', as: :edit_configuracoes
		put '/', to: 'configuracoes#update', as: :configuracoes
    get '/configuracoes_sim/:tipo_sim', to: 'configuracoes#show_configuracoes_sim', as: :show_configuracoes_sim
	end

	get 'changelogs', to: 'changelogs#index', as: :changelogs

	post '/tinymce_assets', to: 'tinymce_assets#create'

	get 'negado', to: 'inicio#acesso_negado', as: :acesso_negado
	get 'bloqueio_geral', to: 'inicio#bloqueio_geral', as: :bloqueio_geral

	mount ActionCable.server => '/cable'

	get 'health', to: 'contexto#health', as: :health

	root 'contexto#index'

	# if Rails.env.production?
	# 	get "*path" => "inicio#pagina_nao_encontrada"
	# end

end
