Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
 public IHttpActionResult GetPortfolioTotals(PortfolioTotalsParamQuery paramQuery)
 {
     return(Ok(_tradeAccountService.GetPortfolioTotals(paramQuery)));
 }