Skip to content

Instantly share code, notes, and snippets.

@knewter
Created August 12, 2011 15:35
Show Gist options
  • Save knewter/1142302 to your computer and use it in GitHub Desktop.
Save knewter/1142302 to your computer and use it in GitHub Desktop.
class FiservDataWarehouseImporter
attr_accessor :parser, :rows, :errors, :records
def initialize(file)
@parser = FiservDataWarehouseParser::Parser.new(file)
@suspended_debits_exporter = SuspendedDebits::Exporter.new()
@errors = []
@records = []
end
def import
read_rows
@rows.each do |row|
handle_row(row)
end
# Generates suspended debit file and sends it
@suspended_debits_exporter.export
end
def handle_row(row)
puts row.inspect
begin
credit_account = CreditAccount.find_by_fiserv_application_account_number(row[:account_number])
puts credit_account.inspect
fiserv_record = credit_account.fiserv_record || FiservRecord.create(:credit_account => credit_account)
# If we don't have a credit account in our system associated with
# the account_number, it will not generate a suspended debit
create_suspended_debits_for(row)
row.each_pair do |k, v|
puts k.inspect
existing_value = fiserv_record.attribute_for(k.to_s)
unless existing_value.to_s == v.to_s
fa = fiserv_record.fiserv_attributes.create(:name => k.to_s, :value => v)
end
end
rescue Exception => e
puts e.inspect
puts e.message
@errors << e.message
end
end
def read_rows
parsed = @parser.parse
@rows = parsed[:body]
end
protected
def create_suspended_debits_for(record)
@suspended_debits_exporter.records << record
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment