class CoinPortfolio::Liquidation
Constants
- Details
Attributes
inventory_items[R]
Public Class Methods
new(inventory_items)
click to toggle source
# File lib/coin_portfolio/liquidation.rb, line 4 def initialize(inventory_items) @inventory_items = inventory_items end
Public Instance Methods
details(price)
click to toggle source
# File lib/coin_portfolio/liquidation.rb, line 8 def details(price) current_portfolio_value = current_portfolio_value(price) gains_percentage = (current_portfolio_value - portfolio_cost).to_f / portfolio_cost currency = price.currency attributes = { portfolio_cost: Money.new(amount: portfolio_cost, currency: currency), current_portfolio_value: Money.new(amount: current_portfolio_value, currency: currency), gains_percentage: gains_percentage } Details.new(attributes) end
Private Instance Methods
current_portfolio_value(price)
click to toggle source
# File lib/coin_portfolio/liquidation.rb, line 29 def current_portfolio_value(price) total_item_quantity * price.amount end
portfolio_cost()
click to toggle source
# File lib/coin_portfolio/liquidation.rb, line 23 def portfolio_cost inventory_items.reduce(0) do |sum, item| sum + (item.quantity * item.cost.amount) end end
total_item_quantity()
click to toggle source
# File lib/coin_portfolio/liquidation.rb, line 33 def total_item_quantity inventory_items.reduce(0) do |sum, item| sum + item.quantity end end