module Licitacao
class ModelosDeDocumentoController < ApplicationController
	include ControllerConcern
	include LicitacaoControllersConcern

	skip_before_action :verifica_se_sessao_eh_de_licitacao!
	before_action :authenticate_usuario!
	before_action :autoriza_usuario!
	before_action :disponibiliza_dependencias, only: [:index, :create, :new, :update, :edit]
	before_action :set_modelo_de_documento, only: [:show, :edit, :update, :destroy]

	# GET /licitacao/modelos_de_documento
	def index
		if logado_na_licitacao?
			tipos_do_modulo = ModeloDeDocumento.tipos_da_licitacao.keys
		elsif logado_na_obra?
			tipos_do_modulo = ModeloDeDocumento.tipos_de_obra.keys
		elsif logado_no_administrativo?
			tipos_do_modulo = ModeloDeDocumento.tipos_do_administrativo.keys
		elsif contabilidade_atual.present?
			tipos_do_modulo = ModeloDeDocumento.tipos_da_contabilidade.keys
		end

		if params[:lei].present?
			@@lei = params[:lei]

			if @@lei == "1"
				@q = ModeloDeDocumento.lei_8666_93.where(tipo: tipos_do_modulo).order(:id).search(params[:q])
			elsif @@lei == "2"
				@q = ModeloDeDocumento.lei_14133_21.where(tipo: tipos_do_modulo).order(:id).search(params[:q])
			elsif @@lei == "0"
				@q = ModeloDeDocumento.where(lei: nil, tipo: tipos_do_modulo).order(:id).search(params[:q])
			end
		else
			@q = ModeloDeDocumento.where(tipo: tipos_do_modulo).order(:id).search(params[:q])
		end

		@modelos_de_documento = @q.result(distinct: false).paginate(page: params[:page], per_page: 10)
	end

	# GET /licitacao/modelos_de_documento/1
	def show
	end

	# GET /licitacao/modelos_de_documento/new
	def new
		@modelo_de_documento = ModeloDeDocumento.new
	end

	# POST /licitacao/modelos_de_documento
	def create
		@modelo_de_documento = ModeloDeDocumento.new(modelo_de_documento_params)

		if @modelo_de_documento.save
			redirect_to @modelo_de_documento, notice: "Modelo de Documento foi criado com sucesso."
		else
			render :new
		end
	end

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

	# PATCH/PUT /licitacao/modelos_de_documento/1
	def update
		if @modelo_de_documento.update(modelo_de_documento_params)
			redirect_to @modelo_de_documento, notice: "Modelo de Documento foi atualizado com sucesso."
		else
			render :edit
		end
	end

	# DELETE /licitacao/modelos_de_documento/1
	def destroy
		mensagem = apaga_e_retorna_mensagem(@modelo_de_documento)
		redirect_to licitacao_modelos_de_documento_url, mensagem
	end

	private
	def set_modelo_de_documento
		@modelo_de_documento = ModeloDeDocumento.find(params[:id])
	end

	def disponibiliza_dependencias
		@modalidades = []
		if logado_na_licitacao?
			@tipos = ModeloDeDocumento.tipos_da_licitacao
			@modalidades = ModeloDeDocumento.modalidades
		elsif logado_na_obra?
			@tipos = ModeloDeDocumento.tipos_de_obra
		elsif logado_no_administrativo?
			if Configuracao.last.usa_modulo_gestao_de_obras?
				@tipos = ModeloDeDocumento.tipos_do_administrativo_com_obras
			else
				@tipos = ModeloDeDocumento.tipos_do_administrativo
			end
		elsif contabilidade_atual.present?
			@tipos = ModeloDeDocumento.tipos_da_contabilidade
		end

		@lei = params[:lei]
		@leis = ModeloDeDocumento.leis
	end

	# Permite apenas os parâmetros específicos
	def modelo_de_documento_params
		params.require(:licitacao_modelo_de_documento).permit(
			:titulo, :tipo, :conteudo, :modalidade, :mostrar_cidade_data, :lei
		)
	end
end
end
