class Tcm::ErrosDosLotesController < ApplicationController
	include ControllerConcern
	before_action :authenticate_usuario!
	before_action :set_erros_do_lote, only: [:show, :destroy]

	# GET /tcm/:exercicio/erros_dos_lotes
	def index
		if logado_na_contabilidade?
			@q = Tcm::ErrosDoLote.where(tipo: :contabilidade).order("id DESC").ransack(query_params)
		else
			@q = Tcm::ErrosDoLote.order("id DESC").ransack(query_params)
		end
		disponibiliza_dependencias
		@erros_dos_lotes = @q.result(distinct: false).paginate(page: params[:page], per_page: 10)
	end

	# GET /tcm/erros_dos_lotes/1
	def show
	end

	# GET /tcm/:exercicio/erros_dos_lotes/new
	def new
		orcamento = Orcamento.find_by( exercicio: params[:exercicio] )
		@erros_do_lote = orcamento.erros_dos_lotes.new
		disponibiliza_dependencias

		if Configuracao.first.codigo_do_municipio_no_tcm.blank?
			redirect_to tcm_erros_dos_lotes_url(orcamento), alert: "O Código do município no TCM não foi informado, acesse configurações para adicionar essa informação."
		end
	end

	# POST /tcm/:exercicio/erros_dos_lotes
	def create
		orcamento = Orcamento.find_by( exercicio: params[:exercicio] )
		@erros_do_lote = orcamento.erros_dos_lotes.new(erros_do_lote_params)

		if @erros_do_lote.save
			redirect_to @erros_do_lote, notice: 'Verificação de erros do Lote gerado com sucesso.'
		else
			disponibiliza_dependencias
			render :new
		end
	end

	# DELETE	/tcm/erros_dos_lotes/1
	def destroy
		mensagem = apaga_e_retorna_mensagem(@erros_do_lote)
		redirect_to tcm_erros_dos_lotes_url(orcamento_atual), mensagem
	end


	private
	def set_erros_do_lote
		@erros_do_lote = Tcm::ErrosDoLote.find( params[:id] )
	end

	def disponibiliza_dependencias
		@orcamentos = Orcamento.order("exercicio DESC").all

		if current_usuario.desenvolvedor? || current_usuario.ambos?
			@tipos_de_poderes = Tcm::Lote.tipos_de_poder
		else
			@tipos_de_poderes = Tcm::Lote.tipos_de_poder.reject { |i| i != cookies[:poder] }
		end

		if logado_na_contabilidade?
			tipos_contabilidade = ['contabilidade']
			@tipos = Tcm::ErrosDoLote.tipos.select{|tipo| tipos_contabilidade.include?(tipo)}
		else
			tipos_outros = ['orcamento', 'licitacao']
			@tipos = Tcm::ErrosDoLote.tipos
		end
	end

	# Permite apenas os parâmetros específicos
	def erros_do_lote_params
		params.require(:tcm_erros_do_lote).permit(:orcamento_id, :tipo, :situacao, :mes_de_referencia, :tipo_de_poder, :consulta_avancada)
	end
end
