class GestaoDeEstoque::Relatorios::RequisicoesDeMateriaisController < ApplicationController
	include ControllerConcern

	before_action -> { verifica_modulo_na_sessao(["licitacao", "administrativo", "gestao_de_estoque"]) }
	before_action :authenticate_usuario!
	before_action :autoriza_usuario! , except: [:imprimir]

	def imprimir
		bloqueia_usuario_com_base_em :read, "gestao_de_estoque/requisicoes_de_materiais"
		relatorio = params[:relatorio]
		@utiliza_assinatura_do_gestor = Configuracao.last.try(:utiliza_assinatura_do_gestor?)
		@requisicao_de_material = Administrativo::RequisicaoDeMaterial.find(params[:requisicao_de_material_id])
		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_requisicao_de_material
		render_to_string pdf: "requisicao_de_material",
			template: "gestao_de_estoque/relatorios/requisicoes_de_materiais/imprimir_requisicao_de_material.pdf.slim",
			orientation: 'Portrait',
			disable_smart_shrinking: true,
			
			dpi: '96',
			header: {
				html: {
					template: 'layouts/_cabecalho_pdf.html.slim',
					locals: {
						titulo1: "#{@requisicao_de_material.unidade_orcamentaria.unidade_gestora.nome}",
						titulo2: "REQUISIÇÃO DE MATERIAL Nº " + @requisicao_de_material.try(:numero_da_requisicao)
					}
				},
				spacing: 5
			},
			footer: {
				html: {
					template: 'layouts/_rodape_pdf.html.slim'
				}
			},
			margin: configuracao.margens_customizadas
	end

	def imprimir_termo_de_saida
		render_to_string pdf: "requisicao_de_material",
			template: "gestao_de_estoque/relatorios/requisicoes_de_materiais/imprimir_termo_de_saida.pdf.slim",
			orientation: 'Portrait',
			disable_smart_shrinking: true,
			
			dpi: '96',
			header: {
				html: {
					template: 'layouts/_cabecalho_pdf.html.slim',
					locals: {
						titulo1: "#{@requisicao_de_material.unidade_orcamentaria.unidade_gestora.nome}",
						titulo2: "TERMO DE SAÍDA Nº " + @requisicao_de_material.try(:numero_da_requisicao)
					}
				},
				spacing: 5
			},
			footer: {
				html: {
					template: 'layouts/_rodape_pdf.html.slim'
				}
			},
			margin: configuracao.margens_customizadas
	end

end
