Beispiel #1
0
        public void GetUserInvestmentDetails_ValidateTotalGain()
        {
            //arrange
            var userInvestment   = _repository.GetInvestmentDetailsById(1, 1);
            var correctTotalGain = (userInvestment.Stock.CurrentPrice - userInvestment.CostBasis) * userInvestment.ShareCount;

            // act
            var response = _controller.GetUserInvestmentDetails(1, 1).Result as OkObjectResult;
            var content  = response.Value as UserInvestmentsResponse;

            // assert
            Assert.AreEqual(content.TotalGain, correctTotalGain);
        }
Beispiel #2
0
        public ActionResult <UserInvestmentsResponse> GetUserInvestmentDetails(int userId, int investmentId)
        {
            _logger.LogInformation("Getting user investment details.");

            try
            {
                var result = _repository.GetInvestmentDetailsById(userId, investmentId);

                if (result != null)
                {
                    return(Ok(
                               new UserInvestmentsResponse()
                    {
                        ShareCount = result.ShareCount,
                        CostBasis = result.CostBasis,
                        CurrentPrice = result.Stock.CurrentPrice,
                        Term = result.PurchaseDate.AddYears(1) > DateTime.Now ? "Short Term" : "Long Term",
                        TotalGain = (result.Stock.CurrentPrice - result.CostBasis) * result.ShareCount
                    }
                               ));
                }
                else
                {
                    return(Ok(new UserInvestmentsResponse()));
                }
            }
            catch (Exception ex)
            {
                _logger.LogError(string.Format("An exception occurred while retrieving user investment details. Exception: {0}", ex));
                return(StatusCode(StatusCodes.Status500InternalServerError));
            }
        }