public async Task <double> CalculateNetworth(PortfolioDetails portfolioDetails) { HttpClient httpClient = _httpClientFactory.CreateClient(); httpClient.BaseAddress = new Uri("http://localhost:44357"); double totalFundNav = 0; foreach (var fundDetails in portfolioDetails.MutualFundList) { //http://52.152.90.186/ //HttpResponseMessage mutualFundResponse = httpClient.GetAsync("https://localhost:44325/api/mutualFund/" + fundDetails.MutualFundName).Result; HttpResponseMessage mutualFundResponse = httpClient.GetAsync("http://52.152.90.186/api/mutualFund/" + fundDetails.MutualFundName).Result; double fundNav = await mutualFundResponse.Content.ReadAsAsync <double>(); totalFundNav += fundNav * fundDetails.MutualFundUnits; } double totalStock = 0; foreach (var stockDetails in portfolioDetails.StockList) { //http://13.85.189.110/ //HttpResponseMessage stockResponse = httpClient.GetAsync("https://localhost:44377/api/DailySharePrice/" + stockDetails.StockName).Result; HttpResponseMessage stockResponse = httpClient.GetAsync("http://13.85.189.110/api/DailySharePrice/" + stockDetails.StockName).Result; double currentStockPrice = await stockResponse.Content.ReadAsAsync <double>(); totalStock += currentStockPrice * stockDetails.StockCount; } return(totalFundNav + totalStock); }
public ActionResult <AssetSaleResponse> SellAssets([FromBody] PortfolioDetails portfolioDetails) { if (portfolioDetails == null) { return(this.BadRequest("Empty Input")); } AssetSaleResponse assetSaleResponse = new AssetSaleResponse { Networth = _PortfolioService.CalculateNetworth(portfolioDetails).Result, SaleStatus = true }; return(assetSaleResponse); }
public ActionResult <double> CalculateNetworth(int portfolioId) { if (portfolioId < 0) { return(this.BadRequest("Incorect ID")); } PortfolioDetails portfolioDetails = _PortfolioService.GetPortfolio(portfolioId); if (portfolioDetails == null) { return(this.BadRequest("Empty Portfolio")); } double result = _PortfolioService.CalculateNetworth(portfolioDetails).Result; return(result); }
private void fillPortDetails <T>(int iPortID, bool isBacktPort) where T : Entities.dbo.PortfolioBase { // Loads portfolio data from DB try { double dSecValue = 0; double dCash = 0; List <Entities.Sp.SecurityData> securities = new List <Entities.Sp.SecurityData>(); repository.Execute(session => { var portfolio = session.Get <T>(iPortID); m_objPortDetails = AutoMapper.Mapper.Map <PortfolioDetails>(portfolio); if (portfolio.dInitRisk.HasValue) { m_objPortDetails.PreferedRisk = riskGrid.getPortRiskItem((double)portfolio.dInitRisk); } if (portfolio.dCurrRisk.HasValue) { m_objPortDetails.CurrentStDev = Convert.ToDouble(portfolio.dCurrRisk); } else { m_objPortDetails.CurrentStDev = m_objPortDetails.PreferedRisk.UpperBound; } m_objPortDetails.CalcCurrency = portfolio.CalcCurrency; GetPortfolioSectorDist(); Dictionary <string, Tuple <object, NHibernate.Type.IType> > param = new Dictionary <string, Tuple <object, NHibernate.Type.IType> >(); param.Add("Id", new Tuple <object, NHibernate.Type.IType>(m_objPortDetails.ID, NHibernate.NHibernateUtil.Int32)); if (isBacktPort) { securities = repository.ExecuteSp <Entities.Sp.SecurityData>("dataGetBacktestingPortfolioSecurities", param).ToList(); } else { securities = repository.ExecuteSp <Entities.Sp.SecurityData>("dataGetPortfolioSecurities", param).ToList(); } DateTime calcDate = DateTime.Today.AddDays(-1); //LR: If using below calculations for BTesting, it should be another date here var m_AdjCoeff = (portfolio.CalcCurrency == "9999") ? 100.0 : 1; m_objPortfolioClasses.PriceHandler = new cPricesHandler(this, Resolver.Resolve <IRepository>()); m_objPortDetails.SecurityData = AutoMapper.Mapper.Map <List <SecurityData> >(securities); //m_objPortDetails.DateCreated if (!isBacktPort) { foreach (var sec in m_objPortDetails.SecurityData) { if (sec.idSecurityType != 106) { // TODO: replace this function with something else - //var price = m_objPortfolioClasses.PriceHandler.GetPrice(sec.idSecurity, portfolio.CalcCurrency, calcDate); //var dPrice = (price != null && price.RateVal.HasValue ? price.RateVal.Value : 0); double dCreateDateValue = sec.portSecWeight * m_objPortDetails.Equity; double dCurrentDateValue = sec.portSecWeight * m_objPortDetails.CurrEquity; sec.SecValue = dCurrentDateValue; // Calculates value based on weight sec.flQuantity = (sec.SecValue * m_AdjCoeff) / sec.flYesterdayPrice; // Updates quantity dSecValue = Math.Floor(sec.flQuantity) * sec.flYesterdayPrice / m_AdjCoeff; dCash += (sec.flQuantity - Math.Floor(sec.flQuantity)) * sec.flYesterdayPrice / m_AdjCoeff; dCash += dSecValue - Math.Floor(dSecValue); //cents/agorot sec.SecValue = Math.Floor(dSecValue); //sec.Profit = dCurrentDateValue / dCreateDateValue - 1; sec.Profit = sec.flYesterdayPrice / sec.flCreationPrice - 1; // flCreationPrice is price on (dtCreated - 1) } } m_objPortDetails.Cash = dCash; } }); m_colOpenedSecurities = securities; // Looks like it is only used for Backtesting } catch (Exception ex) { m_objErrorHandler.LogInfo(ex); } }//loadNewPortfolio