public async Task <TradeSharesResultModel> ManagePositionsAsync(TradeSharesInputViewModel input)
 {
     if (int.Parse(input.PositionId) > 0)
     {
         return(await this.positionsService.UpdatePosition(int.Parse(input.AccountId), int.Parse(input.PositionId), int.Parse(input.Quantity), decimal.Parse(input.CurrentPrice), input.IsBuy));
     }
     else if (int.Parse(input.PositionId) == 0)
     {
         return(await this.positionsService.OpenPosition(int.Parse(input.AccountId), int.Parse(input.Quantity), decimal.Parse(input.CurrentPrice), input.IsBuy));
     }
     else
     {
         return(null);
     }
 }
        public async Task ManagePositionsAsyncWithPositionIdNegativeReturnNull()
        {
            var testInput = new TradeSharesInputViewModel
            {
                AccountId    = "1",
                PositionId   = "-1",
                Balance      = "2000",
                CurrentPrice = "100.00",
                Quantity     = "10",
                IsBuy        = false,
            };

            var result = await this.accountService.ManagePositionsAsync(testInput);

            Assert.Null(result);
        }
        public async Task ManagePositionsAsyncWithPositionId0InvokesCorrectMethod()
        {
            var testInput = new TradeSharesInputViewModel
            {
                AccountId    = "1",
                PositionId   = "0",
                Balance      = "2000",
                CurrentPrice = "100.00",
                Quantity     = "10",
                IsBuy        = false,
            };

            await this.accountService.ManagePositionsAsync(testInput);

            this.positionService.Verify(x => x.OpenPosition(1, 10, 100M, false), Times.Once);
            this.positionService.Verify(x => x.UpdatePosition(1, 0, 10, 100M, false), Times.Never);
        }
Exemplo n.º 4
0
        public async Task <ActionResult <TradeSharesResultModel> > Post(TradeSharesInputViewModel input)
        {
            if (decimal.Parse(input.Balance) - GlobalConstants.MinAccountBalance <= decimal.Parse(input.CurrentPrice) * int.Parse(input.Quantity))
            {
                return(new TradeSharesResultModel()
                {
                    PositionId = -1,
                });
            }

            var result = await this.accountService.ManagePositionsAsync(input);

            if (result != null)
            {
                return(result);
            }
            else
            {
                return(new TradeSharesResultModel()
                {
                    PositionId = -1,
                });
            }
        }