module Pca
class DocumentosDaAcaoController < ApplicationController
	include ControllerConcern
	before_action :authenticate_usuario!
	before_action :autoriza_usuario!
	before_action :set_documento_da_acao, only: [:show, :edit, :update, :destroy]
	before_action :set_acao, only: %i[new create retorna_modelo]
	before_action :disponibiliza_dependencias, only: %i[new create edit update]

	# # GET /pca/documentos_da_acao
	# def index
	# 	@q = DocumentoDaAcao.order(:id).search(params[:q])
	# 	@documentos_da_acao = @q.result(distinct: false).paginate(page: params[:page], per_page: 10)
	# end

	# GET /pca/documentos_da_acao/1
	def show
		
	end

	# GET /pca/documentos_da_acao/new
	def new
		@documento_da_acao = @acao.documentos_da_acao.new
	end

	# GET /pca/documentos_da_acao/1/edit
	def edit
	end

	# POST /pca/documentos_da_acao
	def create
		@documento_da_acao = @acao.documentos_da_acao.new(documento_da_acao_params)
		@documento_da_acao.usuario = current_usuario

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

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

	# DELETE /pca/documentos_da_acao/1
	def destroy
		mensagem = apaga_e_retorna_mensagem(@documento_da_acao)
		redirect_to  @documento_da_acao.acao, mensagem
	end

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

		respond_to do |format|
			format.js
		end
	end

	# GET /pca/documentos_da_acao/:acao_id/modelos/:id
	def modelos
		@modelos = Licitacao::ModeloDeDocumento.where(tipo: [11, 99])

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

	#private
	def set_documento_da_acao
		@documento_da_acao = DocumentoDaAcao.find( params[:id] )
	end

	def set_acao
		@acao = Pca::Acao.find(params[:acao_id])
	end

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

	def documento_da_acao_params
		params.require(:pca_documento_da_acao).permit(
			:data_do_documento, :texto, :usuario_id, :acao_id, :documento,
			:modelo_do_documento_id, :titulo_personalizado, :tipo_de_documento
		)		
	end
end
end
