module Licitacao
class DocumentosDoApostilamentoController < ApplicationController
	include ControllerConcern
	include DocumentosDoApostilamentoHelper

	before_action :authenticate_usuario!
	before_action :autoriza_usuario!, except: [:retorna_modelo, :modelos]
	before_action :set_apostilamento, only: [:new, :create, :retorna_modelo]
	before_action :set_documento_do_apostilamento, only: [:show, :edit, :update, :destroy]

	# GET /licitacao/documentos_do_apostilamento/1
	def show
	end

	# GET /licitacao/documentos_do_apostilamento/new
	def new
		@documento_do_apostilamento = @apostilamento.documentos_do_apostilamento.new
		disponibiliza_dependencias
	end

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

	# POST /licitacao/documentos_do_apostilamento
	def create
		@documento_do_apostilamento = @apostilamento.documentos_do_apostilamento.new(documentos_do_apostilamento_params)

		if @documento_do_apostilamento.save
			redirect_to @documento_do_apostilamento.apostilamento, notice: 'Documentos do apostilamento foi criado com sucesso.'
		else
			disponibiliza_dependencias
			render :new
		end
	end

	# PATCH/PUT /licitacao/documentos_do_apostilamento/1
	def update
		if @documento_do_apostilamento.update( documentos_do_apostilamento_params )
			redirect_to @documento_do_apostilamento.apostilamento, notice: 'Documentos do apostilamento foi atualizado com sucesso.'
		else
			render :edit
		end
	end

	# DELETE /licitacao/documentos_do_apostilamento/1
	def destroy
		mensagem = apaga_e_retorna_mensagem(@documento_do_apostilamento)
		redirect_to licitacao_apostilamento_path(@documento_do_apostilamento.apostilamento), mensagem
	end

	def retorna_modelo
		return if bloqueia_usuario_com_base_em 'create'
		@modelo = Licitacao::ModeloDeDocumento.find(params[:modelo_id])
		@configuracao = Configuracao.last
		@contrato = @apostilamento.contrato
		@processo = @contrato.projeto
		@pedido = @processo.pedido

		respond_to do |format|
			format.js
		end
	end

	def modelos
		return if bloqueia_usuario_com_base_em 'create'
		@modelos = Licitacao::ModeloDeDocumento.all

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

	private
	def set_documento_do_apostilamento
		@documento_do_apostilamento = DocumentoDoApostilamento.find( params[:id] )
	end

	def set_apostilamento
		@apostilamento = Licitacao::Apostilamento.find(params[:apostilamento_id])
	end

	def disponibiliza_dependencias
		@tipos_de_documentos_dos_apostilamentos = Licitacao::DocumentoDoApostilamento.tipos_de_documento
		@modelos_de_documentos = []
	end

	# Permite apenas os parâmetros específicos
	def documentos_do_apostilamento_params
		params.require(:licitacao_documento_do_apostilamento).permit(:tipo_de_documento, :titulo_personalizado, :numero, :apostilamento_id, :data_do_documento, :texto, :modelo_do_documento_id)

	end
end
end
