module Contabilidade
class DocumentosDaDiariaController < ApplicationController
	include ControllerConcern
	include DiariasHelper

	before_action :authenticate_usuario!
	before_action :autoriza_usuario!
	before_action :set_diaria, only: [:new, :create, :retorna_modelo]
	before_action :set_documento_da_diaria, only: [:edit, :update, :destroy]
	before_action :disponibiliza_dependencias, except: [:retorna_modelo]

	# GET /contabilidade/documentos_da_diaria/new
	def new
		@documento_da_diaria = @diaria.documentos_da_diaria.new
	end

	# POST /contabilidade/documentos_da_diaria
	def create
		@documento_da_diaria = @diaria.documentos_da_diaria.new(documentos_da_diaria_params)

		if @documento_da_diaria.save
			redirect_to diaria_path(@documento_da_diaria.diaria), notice: 'Documento da Diária foi criado com sucesso.'
		else
			flash.now[:alert] = 'Não foi possível criar o Documento da Diária, verifique as informações.'
			render :new
		end
	end

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

	# PATCH/PUT /contabilidade/documentos_da_diaria/1
	def update
		if @documento_da_diaria.update(documentos_da_diaria_params)
			redirect_to diaria_path(@documento_da_diaria.diaria), notice: 'Documento da Diária foi atualizado com sucesso.'
		else
			flash.now[:alert] = 'Não foi possível atualizar o Documento da Diária, verifique as informações.'
			render :edit
		end
	end

	# DELETE /contabilidade/documentos_da_diaria/1
	def destroy
		mensagem = apaga_e_retorna_mensagem(@documento_da_diaria)
		redirect_to diaria_path(@documento_da_diaria.diaria), mensagem
	end

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

			respond_to do |format|
				format.js
			end
		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_da_diaria
		@documento_da_diaria = Contabilidade::DocumentoDaDiaria.find(params[:id])
	end

	def set_diaria
		@diaria = Contabilidade::Diaria.find(params[:diaria_id])
	end

	def disponibiliza_dependencias
		@tipos_dos_documentos = Contabilidade::DocumentoDaDiaria.tipos_dos_documentos
		tipos_dos_modelos = [Licitacao::ModeloDeDocumento.tipos["diaria"], Licitacao::ModeloDeDocumento.tipos["outros_documentos"]]
		@modelos_de_documentos = Licitacao::ModeloDeDocumento.where(tipo: tipos_dos_modelos)
		@leis = Licitacao::ModeloDeDocumento.leis
	end

	# Permite apenas os parâmetros específicos
	def documentos_da_diaria_params
		params.require(:contabilidade_documento_da_diaria).permit(
			:diaria_id, :tipo_do_documento, :modelo_do_documento_id, :texto,:data_do_documento, :titulo_personalizado
		)
	end
end
end
