class Contabilidade::Relatorios::CancelamentosDeRestosAPagarController < ApplicationController
  include ControllerConcern

	skip_before_action :verifica_se_tem_orcamento_na_sessao!, only: [:imprimir], raise: false
	before_action :authenticate_usuario!
	before_action :autoriza_usuario! , except: [:imprimir]
	before_action :disponibiliza_dependencias

  def imprimir
		relatorio = params[:relatorio]
		if respond_to? relatorio.to_s, :private
			loa = CombinePDF.new
			loa << CombinePDF.parse(send(relatorio))
			send_data loa.to_pdf, filename: "#{relatorio}.pdf", type: "application/pdf", disposition: 'inline'
		else
			redirect_to :back, alert: 'Demonstrativo selecionado não existe'
		end
	end

	private
		def cancelamento_de_resto_a_pagar
			@cancelamento_de_resto_a_pagar = Contabilidade::CancelamentoDeRestoAPagar.find_by(id: params[:cancelamento])
			@unidade_orcamentaria = @cancelamento_de_resto_a_pagar.unidade_orcamentaria
			@orcamento = @cancelamento_de_resto_a_pagar.orcamento.exercicio - 1

			render_to_string pdf: "cancelamento_resto_a_pagar",
				template: "contabilidade/relatorios/cancelamentos_de_restos_a_pagar/cancelamento_resto_a_pagar.pdf.slim",
				orientation: 'Portrait',
				disable_smart_shrinking: true,
        
				dpi: '96',
				header: {
					html: {
						template: 'layouts/_cabecalho_pdf.html.slim',
						locals: { titulo1: @unidade_orcamentaria.nome, titulo2: " " }
					},
					spacing: 5
				},
				footer: {
					html: {
						template: 'layouts/_rodape_pdf.html.slim'
					}
				},
				margin: @configuracoes.margens_customizadas
	end

	def disponibiliza_dependencias
		@configuracoes = Configuracao.last
	end
end
