class Contabilidade::Relatorios::DecretosController < 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

	def relatorio_do_decreto
		@decreto = Contabilidade::Decreto.find(params[:decreto])
		@orgaos = @decreto.orgaos_do_decreto
		@nomes_dos_orgaos = @orgaos.distinct.map{ |org| org.nome.downcase }
		@valor_de_aplicacoes_do_decreto = @decreto.valor_reajuste_destino_do_decreto
		@numero_do_anexo = 1
		@decreto_para_o_titulo = " DECRETO #{@decreto.numero_data_extenso}"

		render_relatorio_do_decreto
	end

	def render_relatorio_do_decreto
		render_to_string pdf: "documento",
				template: "contabilidade/decretos/relatorio_do_decreto.pdf.slim",
				orientation: 'Portrait',
				disable_smart_shrinking: true,
				
				dpi: '96',
				header: {
					html: {
						template: 'layouts/_cabecalho_pdf_central.html.slim',
						locals: { }
					},
					spacing: 5
				},

				margin: @configuracoes.margens_customizadas
	end
	private
		def documento
			@documento_do_decreto = Contabilidade::DocumentoDoDecreto.find_by(id: params[:documentos_do_decreto_id])

			render_to_string pdf: "documento",
				template: "contabilidade/documentos_do_decreto/documento.pdf.slim",
				orientation: 'Portrait',
				disable_smart_shrinking: true,
				
				dpi: '96',
				header: {
					html: {
						template: 'layouts/_cabecalho_pdf.html.slim',
						locals: { titulo1: @documento_do_decreto.titulo_personalizado, titulo2: " " }
					},
					spacing: 5
				},
				footer: {
					html: {
						template: 'layouts/_rodape_pdf.html.slim'
					}
				},
				margin: @configuracoes.margens_customizadas
	end

	def disponibiliza_dependencias
		@configuracoes = Configuracao.last
	end
end
