Пример #1
0
        public ConcurrentAnalysisModel GetConcurrentAnalysis(int projectId, IList <int> concurrentIds, DateRange dateRange)
        {
            IDictionary <int, IList <long> > usersIntersection;
            DashboardMetrics         initialMetrics           = this.metricsService.GetDashboardMetrics(projectId, dateRange);
            RankedModel              initialRankedModel       = RankedModel.Create(initialMetrics);
            IList <DashboardMetrics> concurrentsMetrics       = new List <DashboardMetrics>();
            IList <RankedModel>      concurrentsRankedMetrics = new List <RankedModel>();

            foreach (var concurrentId in concurrentIds)
            {
                var concurrentMetrics = this.metricsService.GetDashboardMetrics(concurrentId, dateRange);
                var rankedModel       = RankedModel.Create(concurrentMetrics);
                concurrentsMetrics.Add(concurrentMetrics);
                concurrentsRankedMetrics.Add(rankedModel);
            }

            using (this.unitOfWorkProvider.CreateUnitOfWork())
            {
                usersIntersection = this.usersCalculator.FindUsersIntersection(initialMetrics.AllUserIds, concurrentsMetrics.ToDictionary(c => c.Project.Id, v => v.AllUserIds));
            }

            this.AssignUsersIntersection(concurrentsRankedMetrics, usersIntersection);
            this.RankModels(initialRankedModel, concurrentsRankedMetrics);

            var result = new ConcurrentAnalysisModel(initialRankedModel, concurrentsRankedMetrics);

            return(result);
        }
        public IList <UiTableColumn> CreateCompareGroupsModel(ConcurrentAnalysisModel analysis)
        {
            IList <UiTableColumn> result = new List <UiTableColumn>();

            var valueColumn = GetLabelsColumn();

            result.Add(valueColumn);

            var targetColumn = this.GetColumn(analysis.BaseMetrics);

            result.Add(targetColumn);

            foreach (var comparativeModel in analysis.Comparisons)
            {
                var groupColumn = this.GetColumn(comparativeModel);
                result.Add(groupColumn);
            }

            return(result);
        }