public TotalDataVm <PortfolioChartType> GetPortfolioTotals(PortfolioTotalsParamQuery paramQuery) { var result = new TotalDataVm <PortfolioChartType>(); var period = paramQuery.PeriodString.ToPeriod(); var accountId = _tradeAccountRepository.GetBySearchName(paramQuery.AccountName).Id; result[(int)PortfolioChartType.Nav] = _tradeAccountRepository.QueryTradeNav() .Where(nav => nav.TradeAccountId == accountId && nav.ReportDate >= period.FromDate && nav.ReportDate < period.ToDate) .OrderByDescending(nav => nav.ReportDate) .FirstOrDefault()?.Total ?? 0; result[(int)PortfolioChartType.OpenPositions] = _tradeAccountRepository.QueryTradeNav() .Where(nav => nav.TradeAccountId == accountId && nav.ReportDate >= period.FromDate && nav.ReportDate < period.ToDate) .OrderByDescending(nav => nav.ReportDate) .Sum(nav => (decimal?)nav.StockLong + (decimal?)nav.StockShort + (decimal?)nav.OptionsLong + (decimal?)nav.OptionsShort + (decimal?)nav.CommoditiesLong + (decimal?)nav.CommoditiesShort) ?? 0; result[(int)PortfolioChartType.TotalUn] = _tradeAccountRepository.QueryOpenPositions() .Where(nav => nav.TradeAccountId == accountId && nav.ReportDate >= period.FromDate && nav.ReportDate < period.ToDate) .OrderByDescending(nav => nav.ReportDate) .Sum(nav => (decimal?)nav.FifoPnlUnrealized) ?? 0; return(result); }
public IHttpActionResult GetPortfolioTotals(PortfolioTotalsParamQuery paramQuery) { return(Ok(_tradeAccountService.GetPortfolioTotals(paramQuery))); }