Ejemplo n.º 1
0
        public IResponse MarketSell(User user, Stock stock, int quantity)
        {
            var holdings = _holdingsProvider.GetHolding(user, stock);

            if (holdings < quantity)
            {
                return new SellOrderFailedResponse
                       {
                           Reason = SellOrderFailedResponse.FailureReason.InsufficientHoldings
                       }
            }
            ;

            var fills = GetOrderFills(OrderType.Market, OrderDirection.Sell, stock, quantity);

            if (fills.Any())
            {
                ExecuteSell(user, fills);
            }

            var unfilled = quantity - fills.Sum(x => x.Quantity);

            if (unfilled > 0)
            {
                _ordersProvider.AddSellOrder(user, stock, unfilled);
            }

            return(new BuyOrderResponse
            {
                Filled = fills,
                Unfilled = unfilled
            });
        }
Ejemplo n.º 2
0
        public void GetHoldingsTest()
        {
            _provider.CreateUser(_user);

            var actual = _provider.GetHolding(_user, _stock);

            Assert.AreEqual(0, actual);
        }
Ejemplo n.º 3
0
        public IHttpActionResult GetHolding([FromBody] Stock stock)
        {
            var reply = _accounts.GetUser(Request.Headers);

            if (reply.FailureReason != GetUserResponse.Reason.None)
            {
                return(BadRequest("Invalid User"));
            }

            var stockHeld = _holdingsProvider.GetHolding(reply.User, stock);

            return(Ok(stockHeld));
        }