module Contabilidade
class DocumentosDoDecretoController < ApplicationController
	include ControllerConcern
	before_action :authenticate_usuario!
	before_action :autoriza_usuario!, except: [:retorna_modelo]
	before_action :set_decreto, only: [:new, :create, :retorna_modelo]
	before_action :set_documento_do_decreto, only: [:show, :edit, :update, :destroy]
	before_action :disponibiliza_dependencias, except: [:retorna_modelo]

	# GET /contabilidade/documento_do_decretos/1
	def show
	end

	# GET /contabilidade/documento_do_decretos/new
	def new
		@documento_do_decreto = @decreto.documentos_do_decreto.new
	end

	# GET /contabilidade/documento_do_decretos/1/edit
	def edit
	end

	# POST /contabilidade/documento_do_decretos
	def create
		@documento_do_decreto = DocumentoDoDecreto.new(documento_do_decreto_params)

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

	# PATCH/PUT /contabilidade/documento_do_decretos/1
	def update
		if @documento_do_decreto.update( documento_do_decreto_params )
			redirect_to @documento_do_decreto.decreto, notice: 'Documento do decreto foi atualizado(a) com sucesso.'
		else
			render :edit
		end
	end

	# DELETE /contabilidade/documento_do_decretos/1
	def destroy
		mensagem = apaga_e_retorna_mensagem(@documento_do_decreto)
		redirect_to @documento_do_decreto.decreto, mensagem
	end

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

		respond_to do |format|
			format.js
		end
	end

	def disponibiliza_dependencias
		tipos_dos_modelos = [Licitacao::ModeloDeDocumento.tipos["decreto_de_contigenciamento"]]
		@modelos_de_documentos = Licitacao::ModeloDeDocumento.where(tipo: tipos_dos_modelos)
	end

	private
	def set_documento_do_decreto
		@documento_do_decreto = DocumentoDoDecreto.find( params[:id] )
	end

	def set_decreto
		@decreto = Contabilidade::Decreto.find(params[:decreto_id])
	end

	# Permite apenas os parâmetros específicos
	def documento_do_decreto_params
		params.require(:contabilidade_documento_do_decreto).permit(:decreto_id, :texto, :modelo_do_documento_id, :titulo_personalizado)

	end
end
end
