class AmazonPurchasesLedger::MergeService

Public Class Methods

new(csv_path_1, csv_path_2) click to toggle source
# File lib/amazon_purchases_ledger/merge_service.rb, line 6
def initialize(csv_path_1, csv_path_2)
  @csv_path_1 = csv_path_1
  @csv_path_2 = csv_path_2
  @csvs = [CSV.table(@csv_path_1, headers: true), CSV.table(@csv_path_2, headers: true)]
end

Public Instance Methods

items_csv() click to toggle source
# File lib/amazon_purchases_ledger/merge_service.rb, line 32
def items_csv
  csvs_with_header(:title)
end
orders() click to toggle source
# File lib/amazon_purchases_ledger/merge_service.rb, line 22
def orders
  AmazonPurchasesLedger::Order::Factory.new(orders_csv: orders_csv,
                                            items_csv: items_csv)
    .orders
end
orders_csv() click to toggle source
# File lib/amazon_purchases_ledger/merge_service.rb, line 28
def orders_csv
  csvs_with_header(:total_charged)
end
output_header_row() click to toggle source
# File lib/amazon_purchases_ledger/merge_service.rb, line 36
def output_header_row
  AmazonPurchasesLedger::Order::OUTPUT_HEADER_ROW
end
perform() click to toggle source

TODO: Fix filepath (strings are not paths). Also, make this cross platform.

# File lib/amazon_purchases_ledger/merge_service.rb, line 13
def perform
  CSV.open("#{Dir.home}/Desktop/amazon_transactions_#{timestamp}.csv", "wb") do |csv|
    csv << output_header_row
    orders.each do |order|
      csv << order.output_row
    end
  end
end

Private Instance Methods

csvs_with_header(header) click to toggle source
# File lib/amazon_purchases_ledger/merge_service.rb, line 48
def csvs_with_header(header)
  csvs = @csvs.select { |csv| csv.headers.include?(header) }
  raise InvalidInputCsvs unless csvs.count == 1
  csvs.first
end
timestamp() click to toggle source
# File lib/amazon_purchases_ledger/merge_service.rb, line 41
def timestamp
  Time.now.strftime('%Y-%m-%d_%H-%M-%S')
end