class Licitacao::Relatorios::OrdensDeCompraController < ApplicationController
	include ControllerConcern
	include LicitacaoControllersConcern

	skip_before_action :verifica_se_sessao_eh_de_licitacao!
	before_action :authenticate_usuario!
	before_action :autoriza_usuario! , except: [:imprimir]
	before_action :disponibiliza_dependencias

	def imprimir
		bloqueia_usuario_com_base_em :read, "licitacao/contratos"
		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: 'Relatório selecionado não existe'
		end
	end

	def imprimir_ordem_de_compra
		@ordem = Licitacao::OrdemDeCompra.find_by(id: params[:ordem_de_compra_id])

		@unidade_orcamentaria = @ordem.unidade_orcamentaria rescue nil

		render_to_string pdf: "convocacao_dos_orgaos",
			template: "licitacao/relatorios/ordens_de_compra/imprimir_ordem_de_compra.pdf.slim",
			orientation: 'Portrait',
			disable_smart_shrinking: true,
			
			dpi: '96',
			header: {
				html: {
					template: 'layouts/_cabecalho_pdf.html.slim',
					locals: { titulo1: "#{@ordem.empenho.unidade_orcamentaria.unidade_gestora.nome.upcase}", titulo2: "#{@ordem.tipo_de_ordem.upcase} Nº: #{@ordem.numero}" }
				},
				spacing: 0
			},
			footer: {
				html: {
					template: 'layouts/_rodape_pdf.html.slim'
				}
			},
			margin: @configuracoes.margens_customizadas
	end

	def disponibiliza_dependencias
		@configuracoes = Configuracao.last
	end
end
