class Contabilidade::Relatorios::ControleDePagamentosController < 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 resumo_liquidacoes
			if params[:unidade_orcamentaria].present? && params[:fonte_de_recurso].present?
				@unidade_orcamentaria = Loa::UnidadeOrcamentaria.find(params[:unidade_orcamentaria])
				@fonte_de_recursos = Base::FonteDeRecursos.find(params[:fonte_de_recurso])
				titulo1 = @unidade_orcamentaria.codigo_e_nome
				@liquidacoes = @unidade_orcamentaria.liquidacoes.joins(empenho: :orcamento_da_despesa).where('loa_orcamentos_da_despesa.fonte_de_recursos_id = ?', @fonte_de_recursos.id).where.not(data_de_emissao_da_folha: nil)
			elsif params[:unidade_orcamentaria].present?
				@unidade_orcamentaria = Loa::UnidadeOrcamentaria.find(params[:unidade_orcamentaria])
				titulo1 = @unidade_orcamentaria.codigo_e_nome
				@liquidacoes =  @unidade_orcamentaria.liquidacoes.where.not(data_de_emissao_da_folha: nil)
			elsif params[:fonte_de_recurso].present?
				@fonte_de_recursos = Base::FonteDeRecursos.find(params[:fonte_de_recurso])
				titulo1 = "Todas as Unidades"
				@liquidacoes =  contexto_atual.liquidacoes.joins(empenho: :orcamento_da_despesa).where('loa_orcamentos_da_despesa.fonte_de_recursos_id = ?', @fonte_de_recursos.id).where.not(data_de_emissao_da_folha: nil)
			else
				titulo1 = "Todas as Unidades"
				@liquidacoes =  contexto_atual.liquidacoes.where.not(data_de_emissao_da_folha: nil)
			end

			render_to_string pdf: "documento",
				template: "contabilidade/controle_de_pagamentos/relatorio_controle.pdf.slim",
				orientation: 'Portrait',
				disable_smart_shrinking: true,
				
				dpi: '96',
				header: {
					html: {
						template: 'layouts/_cabecalho_pdf.html.slim',
						locals: { titulo1: titulo1, titulo2: 'Liquidações por Fonte de Recurso' }
					},
					spacing: 5
				},
				footer: {
					html: {
						template: 'layouts/_rodape_pdf.html.slim'
					}
				},
				margin: @configuracoes.margens_customizadas
	end

	def resumo_liquidacoes_sem_folha
		if params[:unidade_orcamentaria].present? && params[:fonte_de_recurso].present?
			@unidade_orcamentaria = Loa::UnidadeOrcamentaria.find(params[:unidade_orcamentaria])
			@fonte_de_recursos = Base::FonteDeRecursos.find(params[:fonte_de_recurso])
			titulo2 = @unidade_orcamentaria.codigo_e_nome
			@liquidacoes = @unidade_orcamentaria.liquidacoes.joins(empenho: :orcamento_da_despesa).where('loa_orcamentos_da_despesa.fonte_de_recursos_id = ?', @fonte_de_recursos.id).where(data_de_emissao_da_folha: nil)
		elsif params[:unidade_orcamentaria].present?
			@unidade_orcamentaria = Loa::UnidadeOrcamentaria.find(params[:unidade_orcamentaria])
			titulo2 = @unidade_orcamentaria.codigo_e_nome
			@liquidacoes = @unidade_orcamentaria.liquidacoes.recebidos_pelo_financeiro.where(data_de_emissao_da_folha: nil)
		elsif params[:fonte_de_recurso].present?
			@fonte_de_recursos = Base::FonteDeRecursos.find(params[:fonte_de_recurso])
			titulo2 = "Todas as Unidades"
			@liquidacoes =  contexto_atual.liquidacoes.recebidos_pelo_financeiro.joins(empenho: :orcamento_da_despesa).where('loa_orcamentos_da_despesa.fonte_de_recursos_id = ?', @fonte_de_recursos.id).where(data_de_emissao_da_folha: nil)
		else
			titulo2 = "Todas as Unidades"
			@liquidacoes = contexto_atual.liquidacoes.recebidos_pelo_financeiro.where(data_de_emissao_da_folha: nil)
		end
		render_to_string pdf: "documento",
			template: "contabilidade/controle_de_pagamentos/relatorio_controle.pdf.slim",
			orientation: 'Portrait',
			disable_smart_shrinking: true,
			
			dpi: '96',
			header: {
				html: {
					template: 'layouts/_cabecalho_pdf.html.slim',
					locals: { titulo1: 'Liquidações por Fonte de Recurso - Sem Folha de Pagamento', titulo2: titulo2 }
				},
				spacing: 5
			},
			footer: {
				html: {
					template: 'layouts/_rodape_pdf.html.slim'
				}
			},
			margin: @configuracoes.margens_customizadas
	end

	def disponibiliza_dependencias
		@configuracoes = Configuracao.last
	end
end
