Class: Invoicing::CombinedPdfGenerator

Inherits:
BaseService
  • Object
show all
Defined in:
app/services/invoicing/combined_pdf_generator.rb

Defined Under Namespace

Classes: Result

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(options = {}) ⇒ CombinedPdfGenerator

Returns a new instance of CombinedPdfGenerator.



8
9
10
11
# File 'app/services/invoicing/combined_pdf_generator.rb', line 8

def initialize(options = {})
  @invoice_generator = options[:invoice_generator] || Invoicing::PdfGenerator.new(options)
  super
end

Instance Attribute Details

#invoice_generatorObject (readonly)

Returns the value of attribute invoice_generator.



6
7
8
# File 'app/services/invoicing/combined_pdf_generator.rb', line 6

def invoice_generator
  @invoice_generator
end

Instance Method Details

#process(invoice, invoice_options = {}) ⇒ Object



13
14
15
16
17
18
19
20
21
22
23
24
25
# File 'app/services/invoicing/combined_pdf_generator.rb', line 13

def process(invoice, invoice_options = {})
  invoice_options = invoice_options.reverse_merge({ output_to_file: true })
  combined_pdf = invoice_generator.process(invoice, {})

  result_hsh = { options: invoice_options, file_name: invoice.file_name }
  if invoice_options[:output_to_file]
    result_hsh[:pdf_file_path] = invoice_options[:output_to_file_path] || File.join(Rails.application.config.x.temp_storage_path.to_s, result_hsh[:file_name])
    combined_pdf.save result_hsh[:pdf_file_path]
  else # Stream
    result_hsh[:pdf_data] = combined_pdf.to_pdf
  end
  Result.new(**result_hsh)
end