module Licitacao
class ImpugnacoesController < ApplicationController
	include ControllerConcern
	before_action :authenticate_usuario!
	before_action :autoriza_usuario!
	before_action :set_impugnacao, only: [:show, :edit, :update, :destroy]
	before_action :set_processo, only: [:create, :new]
	before_action :valida_se_processo_esta_em_curso
	before_action :disponibiliza_dependencias, only: [:new, :edit]

	# GET /licitacao/impugnacoes/1
	def show
	end

	# GET /licitacao/impugnacoes/new
	def new
		@impugnacao = @processo.impugnacoes.new
	end

	# GET /licitacao/impugnacoes/1/edit
	def edit
	end

	# POST /licitacao/impugnacoes
	def create
		@impugnacao = @processo.impugnacoes.new(impugnacao_params)

		if @impugnacao.save
			redirect_to licitacao_processo_path(@processo, tab: "impugnacoes"), notice: 'Impugnação foi criada com sucesso.'
		else
			disponibiliza_dependencias
			render :new
		end
	end

	# PATCH/PUT /licitacao/impugnacoes/1
	def update
		if @impugnacao.update( impugnacao_params )
			redirect_to licitacao_processo_path(@impugnacao.processo, tab: "impugnacoes"), notice: 'Impugnação foi atualizada com sucesso.'
		else
			disponibiliza_dependencias
			render :edit
		end
	end

	# DELETE /licitacao/impugnacoes/1
	def destroy
		mensagem = apaga_e_retorna_mensagem(@impugnacao)
		redirect_to licitacao_processo_path(@impugnacao.processo, tab: "impugnacoes"), mensagem
	end

	private
	def set_impugnacao
		@impugnacao = Impugnacao.find( params[:id] )
	end

	def set_processo
		@processo = Processo.find( params[:processo_id] )
	end

	def disponibiliza_dependencias
		@tipos = Licitacao::Impugnacao.tipos.map {|key, _|
			[Licitacao::Impugnacao.localizar("tipo", key), key]
		}
	end

	def valida_se_processo_esta_em_curso
		processo = @processo || @impugnacao.processo
		redirect_to processo, alert: "Não é possível impugnar processo homologado" if processo.homologado?
	end

	# Permite apenas os parâmetros específicos
	def impugnacao_params
		params.require(:licitacao_impugnacao).permit(:data_da_impugnacao, :motivo, :tipo)

	end
end
end
