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); }
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, }); } }