class Licitacao::DocumentosDaCotacaoDoPedidoController < ApplicationController
	include ControllerConcern
	include Licitacao::DocumentosDaCotacaoDoPedidoHelper

	before_action :authenticate_usuario!
	before_action :autoriza_usuario!, except: %i[modelos]
	before_action :set_pessoa_do_pedido, only: %i[new create retorna_modelo]
	before_action :set_documento_da_cotacao_do_pedido, only: %i[show edit update destroy]
	before_action :disponibiliza_dependencias, only: %i[new create edit update]

	# GET /licitacao/documentos_da_cotacao_do_pedido/1
	def show
	end

	# GET /licitacao/pedido/1/documentos_da_cotacao_do_pedido/new
	def new
		@documento_da_cotacao = Licitacao::DocumentoDaCotacaoDoPedido.new
		@documento_da_cotacao.pessoa_do_pedido = @pessoa_do_pedido
		@tipo_de_documento = :cotacao_por_email
	end

	# POST /licitacao/pedido/1/documentos_da_cotacao_do_pedido
	def create
		@documento_da_cotacao = Licitacao::DocumentoDaCotacaoDoPedido.new(documento_da_cotacao_do_pedido_params)
		@documento_da_cotacao.usuario = current_usuario

		if @documento_da_cotacao.save
			redirect_to @pessoa_do_pedido, notice: 'Documento da cotação foi criado com sucesso.'
		else
			flash.now[:alert] = 'Não foi possível criar o documento da cotação, verifique as informações.'
			render :new
		end
	end

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

	# PATCH/PUT /licitacao/documentos_da_cotacao_do_pedido/1
	def update
		if @documento_da_cotacao.update(documento_da_cotacao_do_pedido_params)
			redirect_to @documento_da_cotacao.pessoa_do_pedido, notice: 'Documento da cotação foi atualizado(a) com sucesso.'
		else
			flash.now[:alert] = 'Não foi possível atualizar o documento da cotação, verifique as informações.'
			render :edit
		end
	end

	# DELETE /licitacao/documentos_da_cotacao_do_pedido/1
	def destroy
		mensagem = apaga_e_retorna_mensagem(@documento_da_cotacao)
		redirect_to @documento_da_cotacao.pessoa_do_pedido, mensagem
	end

	def retorna_modelo
		@modelo = Licitacao::ModeloDeDocumento.find(params[:modelo_id])
		@configuracao = Configuracao.last
		@pedido = @pessoa_do_pedido.pedido

		respond_to do |format|
			format.js
		end
	end

	# GET /licitacao/documentos_da_cotacao_do_pedido/:pedido_id/modelos/:id
	def modelos
		# @modelos = Licitacao::ModeloDeDocumento.where(tipo: :cotacao_por_email)

		# if params[:id] == 'personalizado'
		# 	render json: @modelos
		# else
		# 	render json: @modelos.send(params[:id])
		# end

		if params[:lei].present?
			@modelos = Licitacao::ModeloDeDocumento.where(tipo: :cotacao_por_email).where(lei: params[:lei])
		else
			@modelos = Licitacao::ModeloDeDocumento.where(tipo: :cotacao_por_email)
		end

		respond_to do |format|
			format.json {render json: @modelos}
		end
	end

	private
	def set_documento_da_cotacao_do_pedido
		@documento_da_cotacao = Licitacao::DocumentoDaCotacaoDoPedido.find(params[:id])
	end

	def set_pessoa_do_pedido
		@pessoa_do_pedido = Licitacao::PessoaDoPedido.find(params[:pessoa_do_pedido_id])
	end

	def disponibiliza_dependencias
		@modelos_de_documentos = Licitacao::ModeloDeDocumento.where(tipo: :cotacao_por_email)
		@leis = Licitacao::ModeloDeDocumento.leis
	end

	# Permite apenas os parâmetros específicos
	def documento_da_cotacao_do_pedido_params
		params.require(:licitacao_documento_da_cotacao_do_pedido).permit(
			:data_do_documento, :texto, :usuario_id, :pessoa_do_pedido_id, :documento,
			:modelo_do_documento_id, :titulo_personalizado, :tipo_de_documento
		)
	end
end
