Advertisement
Guest User

Untitled

a guest
Mar 30th, 2017
56
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.39 KB | None | 0 0
  1. require 'yaml'
  2. require 'pp'
  3.  
  4. class BankAccount
  5. attr_accessor :balance
  6. attr_accessor :history
  7. attr_accessor :name
  8.  
  9. @@minimum_balance = 200
  10. @@overdraft_fee = 10
  11.  
  12. def self.filename(name)
  13. "#{name}.yml"
  14. end
  15.  
  16. def initialize(balance, name)
  17. if balance < @@minimum_balance
  18. raise ArgumentError, "You don't have the minimum amount"
  19. end
  20. @balance = balance
  21. @name = name
  22. save_transaction(BankAccount.filename(@name))
  23. end
  24.  
  25. def balance
  26. return @balance
  27. end
  28.  
  29. def save_transaction(name_on_account)
  30. if File.exist?(name_on_account)
  31. open_yaml_file = YAML.load_file(BankAccount.filename(@name))
  32. @history = open_yaml_file
  33. get_balance = open_yaml_file[-1][-1]
  34. @balance = (get_balance[-4..-1]).to_i
  35. else
  36. @history = []
  37. File.open(BankAccount.filename(@name), 'w+') { |file| file.write(@history)}
  38. end
  39. end
  40.  
  41. def save_my_history
  42. File.open(BankAccount.filename(@name), 'w+') { |file| file.write(@history) }
  43. end
  44.  
  45. def transaction(type, value)
  46. array_history = [type, value, "your balance is: #{@balance}"]
  47. @history << array_history
  48. save_my_history
  49.  
  50. # output = YAML.dump @history
  51. # File.open(BankAccount.filename(@name), 'w') { |file| file.write(@history.to_yaml) }
  52. # File.open(BankAccount.filename(@name), 'w') {|file| file.write(output) }
  53. end
  54.  
  55. def deposit(value)
  56. @balance += value
  57. transaction("d", value)
  58. end
  59.  
  60. def withdrawal(value)
  61. if @balance - value < 0
  62. @balance = @balance - (value + @@overdraft_fee)
  63. transaction("o", value)
  64. else
  65. @balance -= value
  66. transaction("w", value)
  67. end
  68. end
  69.  
  70. def transfer(value, object)
  71. self.withdrawal(value)
  72. object.deposit(value)
  73. end
  74.  
  75. def history
  76. return @history
  77. end
  78.  
  79. def self.overdraft_fee(fee)
  80. @@overdraft_fee = fee
  81. end
  82.  
  83. def self.minimum_balance(value)
  84. @@minimum_balance = value
  85. end
  86.  
  87.  
  88. end
  89. # BankAccount.overdraft_fee(50)
  90. # account = BankAccount.new(500, "Sarah")
  91. # account2 = BankAccount.new(500, "Jose")
  92. # account.withdrawal(100)
  93. # account.deposit(200)
  94. # account.withdrawal(700)
  95. # account.deposit(500)
  96. # account.transfer(250, account2)
  97. # expect(file1).to eq("[\"w\", 100, \"your balance is: 400\"][\"d\", 200, \"your balance is: 600\"][\"o\", 700, \"your balance is: -150\"][\"d\", 500, \"your balance is: 350\"][\"w\", 250, \"your balance is: 100\"]")
  98. # expect(file2).to eq("[\"d\", 250, \"your balance is: 750\"]")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement