示例#1
0
        private ChartDataVm.DataSet GetPortfolioOpenPositionsChartData(PortfolioChartDataQueryParam queryParams)
        {
            var result = new ChartDataVm.DataSet();

            var accountId = _tradeAccountRepository.Query()
                            .FirstOrDefault(acc => acc.AccountName == queryParams.AccountName)?.Id;

            var query   = _tradeAccountRepository.QueryTradeNav();
            var periods = queryParams.Periods.ToPeriodList().ToList();

            try
            {
                periods.ForEach(period =>
                {
                    var value = query.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.Data.Add(Math.Abs(value));
                });
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
            }

            return(result);
        }
示例#2
0
        private ChartDataVm.DataSet GetPortfolioNavChartData(PortfolioChartDataQueryParam queryParams)
        {
            var result = new ChartDataVm.DataSet();

            var accountId = _tradeAccountRepository.Query()
                            .FirstOrDefault(acc => acc.AccountName == queryParams.AccountName)?.Id;

            var query   = _tradeAccountRepository.QueryTradeNav();
            var periods = queryParams.Periods.ToPeriodList().ToList();

            periods.ForEach(period =>
            {
                var value = query.Where(nav => nav.TradeAccountId == accountId &&
                                        nav.ReportDate >= period.FromDate &&
                                        nav.ReportDate < period.ToDate)
                            .OrderByDescending(nav => nav.ReportDate)
                            .FirstOrDefault()?.Total;

                result.Data.Add(value ?? 0);
            });

            return(result);
        }
示例#3
0
        private ChartDataVm.DataSet GetPortfolioTotalUnChartData(PortfolioChartDataQueryParam queryParams)
        {
            var result = new ChartDataVm.DataSet();

            var accountId = _tradeAccountRepository.Query()
                            .FirstOrDefault(acc => acc.AccountName == queryParams.AccountName)?.Id;

            var query   = _tradeAccountRepository.QueryOpenPositions();
            var periods = queryParams.Periods.ToPeriodList().ToList();

            periods.ForEach(period =>
            {
                var value = query.Where(nav => nav.TradeAccountId == accountId &&
                                        nav.ReportDate >= period.FromDate &&
                                        nav.ReportDate < period.ToDate)
                            .OrderByDescending(nav => nav.ReportDate)
                            .Sum(nav => (decimal?)nav.FifoPnlUnrealized) ?? 0;

                result.Data.Add(value);
            });

            return(result);
        }
示例#4
0
        public ChartDataVm GetChartData(AnalyticsChartDataParams @params)
        {
            var result = new ChartDataVm();

            var impQuery = ImportRepository.ImportedFilesQuery();
            var delQuery = ImportRepository.FileUploadQuery().Include(f => f.ImportedFile);

            if (@params.MasterAccountId != 0)
            {
                impQuery = impQuery.Where(f => f.MasterAccountId == @params.MasterAccountId);
                delQuery = delQuery.Where(f => f.ImportedFile.MasterAccountId == @params.MasterAccountId);
            }

            if (@params.FtpCredentialId != 0)
            {
                impQuery = impQuery.Where(f => f.FtpCredentialId == @params.FtpCredentialId);
                delQuery = delQuery.Where(f => f.ImportedFile.FtpCredentialId == @params.FtpCredentialId);
            }

            var srcFilesData = new ChartDataVm.DataSet {
                Label = "Source files"
            };
            var impFilesData = new ChartDataVm.DataSet {
                Label = "Imported files"
            };
            var delFilesData = new ChartDataVm.DataSet {
                Label = "ZOHO files"
            };
            var sentFilesData = new ChartDataVm.DataSet {
                Label = "Sent ZOHO files"
            };

            var periods = @params.Periods.ToPeriodList().ToList();

            periods.ToList().ForEach(period =>
            {
                var srcFiles = impQuery.Count(f =>
                                              DbFunctions.TruncateTime(f.FileCreateDate) >= DbFunctions.TruncateTime(period.FromDate) &&
                                              DbFunctions.TruncateTime(f.FileCreateDate) <= DbFunctions.TruncateTime(period.ToDate));

                var impFiles = impQuery.Count(f =>
                                              DbFunctions.TruncateTime(f.FileCreateDate) >= DbFunctions.TruncateTime(period.FromDate) &&
                                              DbFunctions.TruncateTime(f.FileCreateDate) <= DbFunctions.TruncateTime(period.ToDate) &&
                                              f.ImportedDate != null);

                var delFiles = delQuery.Count(f =>
                                              DbFunctions.TruncateTime(f.ImportedFile.FileCreateDate) >=
                                              DbFunctions.TruncateTime(period.FromDate) &&
                                              DbFunctions.TruncateTime(f.ImportedFile.FileCreateDate) <= DbFunctions.TruncateTime(period.ToDate));

                var sentFiles = delQuery.Count(f => f.IsSent &&
                                               DbFunctions.TruncateTime(f.ImportedFile.FileCreateDate) >=
                                               DbFunctions.TruncateTime(period.FromDate) &&
                                               DbFunctions.TruncateTime(f.ImportedFile.FileCreateDate) <=
                                               DbFunctions.TruncateTime(period.ToDate));

                srcFilesData.Data.Add(srcFiles);
                impFilesData.Data.Add(impFiles);
                delFilesData.Data.Add(delFiles);
                sentFilesData.Data.Add(sentFiles);
            });

            result.Data   = new[] { srcFilesData, impFilesData, delFilesData, sentFilesData };
            result.Labels = TradeUtils.GetPeriodLabels(periods).ToArray();

            return(result);
        }