static public TradeViewModel Construct(ApplicationUser loggedInUser, ApplicationUser tradeUser, string market, string side, string amount, string price, ExchangeSettings settings) { var via = new ViaJsonRpc(settings.AccessHttpUrl); var balances = Utils.GetUsedBalances(settings, via, tradeUser.Exchange); var ordersPending = via.OrdersPendingQuery(tradeUser.Exchange.Id, market, 0, 10); var now = DateTimeOffset.Now.ToUnixTimeSeconds(); var bidOrdersCompleted = via.OrdersCompletedQuery(tradeUser.Exchange.Id, market, 1, now, 0, 10, OrderSide.Bid); var askOrdersCompleted = via.OrdersCompletedQuery(tradeUser.Exchange.Id, market, 1, now, 0, 10, OrderSide.Ask); var orderDepth = via.OrderDepthQuery(market, settings.OrderBookLimit, settings.Markets[market].PriceInterval); var ob = new OrderbookPartialViewModel { AssetSettings = settings.Assets, AmountUnit = settings.Markets[market].AmountUnit, PriceUnit = settings.Markets[market].PriceUnit, OrderDepth = orderDepth }; var model = new TradeViewModel { User = loggedInUser, Market = market, MarketNice = string.Format("{0}/{1}", settings.Markets[market].AmountUnit, settings.Markets[market].PriceUnit), AssetSettings = settings.Assets, Settings = settings.Markets[market], OrderBook = ob, Balances = new BalancesPartialViewModel { Balances = balances }, OrdersPending = new OrdersPendingPartialViewModel { OrdersPending = ordersPending }, BidOrdersCompleted = bidOrdersCompleted, AskOrdersCompleted = askOrdersCompleted, Order = new ApiOrderCreateLimit { Market = market, Side = side, Amount = amount, Price = price } }; return(model); }
public IActionResult Orderbook(string market) { Debug.Assert(market != null); //TODO: move this to a ViaRpcProvider in /Services (like IWalletProvider) var via = new ViaJsonRpc(_settings.AccessHttpUrl); var orderDepth = via.OrderDepthQuery(market, _settings.OrderBookLimit, _settings.Markets[market].PriceInterval); var ob = new OrderbookPartialViewModel { AssetSettings = _settings.Assets, AmountUnit = _settings.Markets[market].AmountUnit, PriceUnit = _settings.Markets[market].PriceUnit, OrderDepth = orderDepth }; var model = new OrderbookViewModel { User = GetUser().Result, Market = market, MarketNice = string.Format("{0}/{1}", _settings.Markets[market].AmountUnit, _settings.Markets[market].PriceUnit), OrderBook = ob }; return(View(model)); }