module Licitacao
class DocumentosDoPedidoController < ApplicationController
	include ControllerConcern
	include DocumentosDoPedidoHelper

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

	# GET /licitacao/documentos_do_pedido/1
	def show
	end

	# GET /licitacao/pedido/1/documentos_do_pedido/new
	def new
		@documento_do_pedido = @pedido.documentos_do_pedido.new
	end

	# POST /licitacao/pedido/1/documentos_do_pedido
	def create
		@documento_do_pedido = @pedido.documentos_do_pedido.new(documento_do_pedido_params)
		@documento_do_pedido.usuario = current_usuario

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

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

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

	# DELETE /licitacao/documentos_do_pedido/1
	def destroy
		mensagem = apaga_e_retorna_mensagem(@documento_do_pedido)
		redirect_to @documento_do_pedido.pedido, mensagem
	end

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

		respond_to do |format|
			format.js
		end
	end

	# GET /licitacao/documentos_do_pedido/:pedido_id/modelos/:id
	def modelos 
		if params[:lei].present?
			@modelos = Licitacao::ModeloDeDocumento.where(tipo: [11, 99]).where(lei: params[:lei])
		else
			@modelos = Licitacao::ModeloDeDocumento.where(tipo: [11, 99])
		end

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

	private
	def set_documento_do_pedido
		@documento_do_pedido = Licitacao::DocumentoDoPedido.find( params[:id] )
	end

	def set_pedido
		@pedido = Licitacao::Pedido.find(params[:pedido_id])
	end

	def disponibiliza_dependencias
		@tipo_de_documento ||= params[:documento]
		if @tipo_de_documento
			@tipos_de_documentos_dos_pedidos = Licitacao::DocumentoDoPedido.tipos_de_documento
			@modelos_de_documentos = Licitacao::ModeloDeDocumento.where(tipo: Licitacao::DocumentoDoPedido.tipos_de_documento[@tipo_de_documento])
		else
			@tipos_de_documentos_dos_pedidos = Licitacao::DocumentoDoPedido.tipos_de_documento
			@modelos_de_documentos = []
		end

		@leis = Licitacao::ModeloDeDocumento.leis
	end

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