module Licitacao
class DocumentosDoAditivoController < ApplicationController
	include ControllerConcern
	include DocumentosDoAditivoHelper

	protect_from_forgery except: :retorna_modelo

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

	# GET /licitacao/documentos_do_aditivo/1
	def show
	end

	# GET /licitacao/documentos_do_aditivo/new
	def new
		@documento_do_aditivo = @aditivo.documentos_do_aditivo.new
		disponibiliza_dependencias
	end

	# GET /licitacao/documentos_do_aditivo/1/edit
	def edit
		disponibiliza_dependencias
	end

	# POST /licitacao/documentos_do_aditivo
	def create
		@documento_do_aditivo = @aditivo.documentos_do_aditivo.new(documento_do_aditivo_params)
		@documento_do_aditivo.usuario = current_usuario

		if @documento_do_aditivo.save
			redirect_to @documento_do_aditivo.aditivo, notice: 'Documento do aditivo foi criado(a) com sucesso.'
		else
			disponibiliza_dependencias
			render :new
		end
	end

	# PATCH/PUT /licitacao/documentos_do_aditivo/1
	def update
		if @documento_do_aditivo.update( documento_do_aditivo_params )
			redirect_to @documento_do_aditivo.aditivo, notice: 'Documento do aditivo foi atualizado(a) com sucesso.'
		else
			disponibiliza_dependencias
			render :edit
		end
	end

	# DELETE /licitacao/documentos_do_aditivo/1
	def destroy
		mensagem = apaga_e_retorna_mensagem(@documento_do_aditivo)
		redirect_to licitacao_aditivo_path(@documento_do_aditivo.aditivo), mensagem
	end

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

		respond_to do |format|
			format.js
		end
	end

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

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

	private
	def set_documento_do_aditivo
		@documento_do_aditivo = Licitacao::DocumentoDoAditivo.find( params[:id] )
	end

	def set_aditivo
		@aditivo = Licitacao::Aditivo.find(params[:aditivo_id])
	end

	def disponibiliza_dependencias
		@tipos_de_documentos_dos_aditivos = Licitacao::DocumentoDoAditivo.tipos_de_documento
		@modelos_de_documentos = []
		@leis = Licitacao::ModeloDeDocumento.leis
	end

	# Permite apenas os parâmetros específicos
	def documento_do_aditivo_params
		params.require(:licitacao_documento_do_aditivo).permit(:titulo_personalizado,:tipo_de_documento,:data_do_documento, :texto, :usuario_id, :aditivo_id, :documento, :modelo_do_documento_id, :numero, :documento, :enviar_para_pncp)
	end
end
end
