class Pca::Relatorios::AcoesController < ApplicationController
  include ControllerConcern

	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
			acao = CombinePDF.new
			acao << CombinePDF.parse(send(relatorio))

			acao.number_pages(location: :bottom_right, margin_from_height: 0, number_format: '%s', font_size: 8)

			send_data acao.to_pdf, filename: "#{relatorio}.pdf", type: "application/pdf", disposition: 'inline'
		else
			redirect_to :back, alert: 'Demonstrativo selecionado não existe'
		end
	end

  def documento
		@documento_da_acao = Pca::DocumentoDaAcao.find(params[:documentos_da_acao_id])
		
		@unidade_orcamentaria = @documento_da_acao.acao.unidade_orcamentaria

		if @configuracoes.customizacao.exibir_nome_orgao?
			titulo1 = @documento_da_acao.acao.unidade_orcamentaria.try(:unidade_gestora).try(:nome)
		else
			titulo1 = ''
		end

		if @configuracoes.customizacao.exibir_numero_pedido?
			titulo2 = "AÇÃO N°: #{@documento_da_acao.acao.try(:numero)}"
		else
			titulo2 = ''
		end

		@exige_brasao = true

		render_to_string pdf: "documento",
			template: "pca/relatorios/acoes/documento.pdf.slim",
			orientation: 'Portrait',
			disable_smart_shrinking: true,

			dpi: '96',
			header: {
				html: {
					template: 'layouts/_cabecalho_pdf.html.slim',
					locals: {
						titulo1: titulo1,
						titulo2: titulo2
					}
				}
			},
			footer: {
				html: {
					template: 'layouts/_rodape_pdf.html.slim'
				}
			},
			margin: @configuracoes.margens_customizadas
	end

  def imprimir_doc
		relatorio = params[:relatorio]
		request.format = "docx"
		respond_to do |format|
			format.docx {
				@documento_da_acao = Pca::DocumentoDaAcao.find(params[:documentos_da_acao_id])
				response.headers['Content-Type'] = 'text/txt'
				response.headers['Content-Disposition'] = "attachment; filename=documento.docx"
				render template: "pca/relatorios/acoes/documento.docx.slim"
			}
		end
	end

	def acao
		@acao = Pca::Acao.find(params[:acao_id])
		@unidade_orcamentaria = @acao.unidade_orcamentaria

		if @configuracoes.customizacao.exibir_nome_orgao?
			titulo1 = @acao.unidade_orcamentaria.try(:unidade_gestora).try(:nome)
		else
			titulo1 = ''
		end

		if @configuracoes.customizacao.exibir_numero_pedido?
			titulo2 = "AÇÃO N°: #{@acao.try(:numero)}"
		else
			titulo2 = ''
		end

		render_to_string pdf: "acao",
			template: "pca/relatorios/acoes/acao.pdf.slim",
			orientation: 'Portrait',
			disable_smart_shrinking: true,

			dpi: '96',
			header: {
				html: {
					template: 'layouts/_cabecalho_pdf.html.slim',
					locals: {
						titulo1: titulo1,
						titulo2: titulo2
					}
				},
				spacing: 5
			},
			footer: {
				html: {
					template: 'layouts/_rodape_pdf.html.slim'
				}
			},
			margin: @configuracoes.margens_customizadas
	end

  def set_acao
		@acao = Pca::Acao.find(params[:acao])
	end

	def disponibiliza_dependencias
		@configuracoes = Configuracao.last
	end
end
