/// <summary> /// Sell coins from a CoinBuy Collection /// </summary> /// <param name="buyList">Collection of CoinBuy</param> /// <param name="transaction">NewTransaction object</param> /// <returns>Collection of CoinBuy</returns> private List <CoinBuy> SellCoins(List <CoinBuy> coinBuyList, NewTransaction transaction) { var sellQty = transaction.quantity; foreach (var coinBuy in coinBuyList) { var available = coinBuy.available; CoinSell coinSell = null; if (sellQty >= available) { coinBuy.available = 0; sellQty = sellQty - available; coinSell = CreateCoinSell(transaction, available); } else if (available > sellQty) { coinBuy.available = (available - sellQty); coinSell = CreateCoinSell(transaction, sellQty); sellQty = 0; } coinBuy.coinSellList.Add(coinSell); } return(coinBuyList); }
/// <summary> /// Create a CoinSell from a transaction /// </summary> /// <param name="transaction">NewTransaction object</param> /// <param name="sellQuantity">double of quantity to sell</param> /// <returns>CoinSell object</returns> private CoinSell CreateCoinSell(NewTransaction transaction, double sellQuantity) { var coinSell = new CoinSell { fee = transaction.fee, feeSymbol = transaction.feeSymbol, pair = transaction.pair, price = transaction.price, quantity = sellQuantity, transactionType = transaction.transactionType, saleDate = transaction.date, processed = true, qtySold = sellQuantity }; return(coinSell); }