module Licitacao
	class DocumentosDaAtaController < ApplicationController
		include ControllerConcern
		include DocumentosDaAtaHelper

		protect_from_forgery except: :retorna_modelo

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

		# GET /licitacao/documentos_do_ata_de_registro_de_precos/1
		def show
		end

		# GET /licitacao/documentos_do_ata_de_registro_de_precos/new
		def new
			@documento_da_ata = @ata_de_registro_de_precos.documentos_da_ata.new
			disponibiliza_dependencias
		end

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

		# POST /licitacao/documentos_do_ata_de_registro_de_precos
		def create
			@documento_da_ata = @ata_de_registro_de_precos.documentos_da_ata.new(documento_da_ata_params)
			@documento_da_ata.usuario = current_usuario

			if @documento_da_ata.save
				redirect_to @documento_da_ata.ata_de_registro_de_precos, notice: 'Documento da ata foi criado(a) com sucesso.'
			else
				disponibiliza_dependencias
				render :new
			end
		end

		# PATCH/PUT /licitacao/documentos_do_ata_de_registro_de_precos/1
		def update
			if @documento_da_ata.update( documento_da_ata_params )
				redirect_to @documento_da_ata.ata_de_registro_de_precos, notice: 'Documento da ata foi atualizado(a) com sucesso.'
			else
				disponibiliza_dependencias
				render :edit
			end
		end

		# DELETE /licitacao/documentos_do_ata_de_registro_de_precos/1
		def destroy
			mensagem = apaga_e_retorna_mensagem(@documento_da_ata)
			redirect_to licitacao_ata_de_registro_de_precos_path(@documento_da_ata.ata_de_registro_de_precos), mensagem
		end

		def retorna_modelo
			return if bloqueia_usuario_com_base_em 'create'
			@modelo = Licitacao::ModeloDeDocumento.find(params[:modelo_id])
			@configuracao = Configuracao.last
			@processo = @ata_de_registro_de_precos.processo
			@pedido = @processo.pedido
			respond_to do |format|
				format.js
			end
		end

		# GET /licitacao/documentos_do_ata_de_registro_de_precos/:ata_de_registro_de_precos_id/modelos/:id
		def modelos
			if params[:lei].present?
				@modelos = Licitacao::ModeloDeDocumento.where(tipo: [1, 99]).where(lei: params[:lei])
			else
				@modelos = Licitacao::ModeloDeDocumento.where(tipo: [1, 99])
			end
	
			respond_to do |format|
				format.json {render json: @modelos}
			end
		end

		private
		def set_documento_da_ata
			@documento_da_ata = Licitacao::DocumentoDaAta.find( params[:id] )
		end

		def set_ata_de_registro_de_precos
			@ata_de_registro_de_precos = Licitacao::AtaDeRegistroDePrecos.find(params[:ata_de_registro_de_precos_id])
		end

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

			@leis = Licitacao::ModeloDeDocumento.leis
		end

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