class Controladoria::ProjetosController < ApplicationController
	include ControladoriaControllersConcern
	include ControllerConcern
	before_action :authenticate_usuario!
	before_action :autoriza_usuario!
	before_action :set_projeto, only: [:enviar_para_confirmar_projeto, :show, :enviar_para_copfin, :retornar_para_licitacao]
	before_action :disponibiliza_dependencias, only: [:index]

	# GET /controladoria/projetos
	def index
		@secretarias = current_usuario.unidades_orcamentarias

		orcamento = unless query_params["orcamento_id_eq"].blank?
			Orcamento.find(query_params["orcamento_id_eq"])
		else
			contexto_atual
		end

		projetos_basicos = current_usuario.projetos.do_exercicio(orcamento.exercicio)

		if params[:pendentes]
			projetos_basicos = projetos_basicos.where('licitacao_projetos.status = ? or licitacao_projetos.status = ?', 89, 90)
			@url_projetos = pendentes_controladoria_projetos_path
		else
			projetos_basicos = projetos_basicos.where.not('licitacao_projetos.status = ? or licitacao_projetos.status = ?', 89, 90)
			@url_projetos = controladoria_projetos_path
		end

		@q = projetos_basicos.order("data_do_projeto DESC").search(params[:q])
		@projetos = @q.result(distinct: true).paginate(page: params[:page], per_page: 10)
	end

	# GET /controladoria/projetos/1
	def show
	end

	# PATCH/PUT /controladoria/projetos/1/encaminhar_para_comite_programacao_financeira
	def enviar_para_copfin
		if @projeto.enviado_para_copfin!
			redirect_to controladoria_projeto_url(@projeto), success: 'O projeto foi encaminhado para a COPFIN com sucesso.'
		else
			redirect_to controladoria_projeto_url(@projeto), alert: 'Não foi possível encaminhar o projeto. Por favor, confira se ele contém erros'
		end
	end

	# PATCH/PUT /controladoria/projetos/1/confirmar_projeto
	def enviar_para_confirmar_projeto
		if @projeto.aguardando_autorizacao!
			redirect_to controladoria_projeto_url(@projeto), success: 'O projeto foi aprovado e enviado de volta para a licitação.'
		else
			redirect_to controladoria_projeto_url(@projeto), alert: 'Não foi possível encaminhar o projeto. Por favor, confira se ele contém erros'
		end
	end

	# PATCH/PUT /controladoria/projetos/1/retornar_para_licitacao
	def retornar_para_licitacao
		if @projeto.aberto!
			redirect_to controladoria_projeto_url(@projeto), success: 'O projeto foi enviado para a licitação para correção dos erros.'
		else
			redirect_to controladoria_projeto_url(@projeto), alert: 'Não foi possível encaminhar o projeto. Por favor, confira se ele contém erros'
		end
	end

	private
	def disponibiliza_dependencias
		@subcategorias = Base::Categoria.all.select(&:pode_ter_itens?).sort_by {|categoria| categoria.titulo}
	end

	def set_projeto
		@projeto =  Licitacao::Projeto.find( params[:id] )
	end

	# Permite apenas os parâmetros específicos
	def projeto_params
		params.require(:licitacao_projeto).permit(:comissao_id, :data_do_projeto, :pedido_id, :tipo_de_totalizacao, :legislacao_id, :modalidade_de_licitacao, :registro_de_preco, :modalidade_do_processo, :forma_de_agrupamento, :criterio_de_julgamento)
	end
end
