Sha256: baac5b58ba26d55f742fb0060d5e6d4c3168b7a1454152082878c21ddf61ae8c

Contents?: true

Size: 1.29 KB

Versions: 4

Compression:

Stored size: 1.29 KB

Contents

require 'prawn/table'
class PdfExportService
  include DataExportHelper

  def pdf
    if reportable.respond_to?(:pdf_object)
      @pdf ||= reportable.pdf_object(reportable_name)
    else
      @pdf ||= TablePdf.new
    end
  end

  def remove_file_save
    self.remove_file = true
    self.save
    self.remove_file = nil
  end

  def pdf_data
    if file_id
      file.read
    else
      pdf_string
    end
  end

  def pdf_string
    pdf_result.render
  end

  def pdf_result
    pdf.table_data = table_lists.includes(:table_items).map { |i| i.csv_array }
    pdf.header_data = header_data
    pdf.ending_data = ending_data
    pdf.run
    pdf
  end

  def header_data
    if reportable.respond_to? :header_info
      reportable.header_info
    else
      [
        ['', ''],
        ['', '']
      ]
    end
  end

  def ending_data
    if reportable.respond_to? :ending_data
      reportable.try(:ending_data)
    else
      ''
    end
  end

  def filename(extension = 'pdf')
    if file_filename.present?
      filename = file_filename
    elsif reportable.respond_to?(:filename)
      filename = reportable.filename
    else
      filename = "#{reportable_name.camelize}-#{reportable_id}"
    end

    unless filename.end_with?(extension)
      filename << '.' << extension
    end

    filename
  end

end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
rails_data-1.0.2 app/models/rails_data/export_services/pdf_export_service.rb
rails_data-1.0.1 app/models/rails_data/export_services/pdf_export_service.rb
rails_data-1.0.0 app/models/rails_data/export_services/pdf_export_service.rb
rails_data-0.0.1 app/models/rails_data/export_services/pdf_export_service.rb