Esempio n. 1
0
        public IChartData <IAddressStatisticInfo> Build(IChartDataQueryingRestrictions restrictions, IAddressVisitsChartConfig config, ITimePeriod period,
                                                        bool showLastCompletedOrCanceledStatus)
        {
            List <IDayAssign>    dayAssignList = dayAssignsTimeSpanSelector.Get(period, restrictions).ToList();
            IEnumerable <string> jobIds        = dayAssignList.Select(d => d.JobId).Distinct();
            IEnumerable <Guid>   dayAssignIds  = dayAssignList.Select(x => x.Id);

            IEnumerable <IJob> jobs         = jobService.GetByIds(jobIds);
            IEnumerable <IJob> filteredJobs = jobs.Where(job => config.TaskTypesToInclude.Contains(job.JobTypeId));

            Dictionary <Guid, IJobStatusLogModel> jobStatusLog = jobStatusLogService.GetStatusLogModelList(dayAssignIds, showLastCompletedOrCanceledStatus)
                                                                 .ToDictionary(log => log.DayAssignId, log => log);

            List <Tuple <string, JobAddress> > addressToJobRelation = filteredJobs
                                                                      .SelectMany(job => job.AddressList?.Select(a => new Tuple <string, JobAddress>(job.Id, a)) ?? Enumerable.Empty <Tuple <string, JobAddress> >())
                                                                      .ToList();

            List <Tuple <Guid, JobAddress> > addressToDayAssignRelationList = GetAddressToDayAssignRelationList(dayAssignList, addressToJobRelation);
            List <AddressStatisticInfo>      addressStatisticInfoList       = GetAddressStatisticInfoList(addressToDayAssignRelationList, jobStatusLog);

            var result = (IChartData <IAddressStatisticInfo>) new ChartData <IAddressStatisticInfo>
            {
                Data = GetAddressStatistic(addressStatisticInfoList)
            };

            return(result);
        }
Esempio n. 2
0
        public IChartData <ITaskChartModel> Build(IChartDataQueryingRestrictions restrictions, ISpentTimeChartConfig config, ITimePeriod period, IDictionary <Guid, int> categorySortPriority)
        {
            IEnumerable <IDayAssign>      dayAssigns      = dayAssignsTimeSpanSelector.Get(period, restrictions);
            IEnumerable <ITaskChartModel> taskChartModels = taskChartModelBuilder.Build(restrictions.AccessibleManagementToHousingDepartmentsRelation, dayAssigns, categorySortPriority,
                                                                                        restrictions.ShowLastCompletedOrCanceledStatus);
            IEnumerable <ITaskChartModel> filteredTaskChartModels = taskChartModels.Where(t => config.TaskTypesToInclude.Contains(t.JobType));

            var result = new ChartData <ITaskChartModel>
            {
                Data = filteredTaskChartModels
            };

            return(result);
        }
        public IRatioChartData <TGroup, ITaskChartModel> Build <TGroup>(IChartDataQueryingRestrictions restrictions, ITaskRatioCharConfig <TGroup> chartConfig, ITimePeriod period,
                                                                        bool showLastCompletedOrCanceledStatus, IDictionary <Guid, int> categorySortPriority)
        {
            IEnumerable <IDayAssign>      dayAssigns      = dayAssignsTimeSpanSelector.Get(period, restrictions);
            IEnumerable <ITaskChartModel> taskChartModels = taskChartModelBuilder.Build(
                restrictions.AccessibleManagementToHousingDepartmentsRelation,
                dayAssigns,
                categorySortPriority,
                showLastCompletedOrCanceledStatus);

            IEnumerable <ITaskChartModel> filteredTaskChartModels = FilterTaskChartModelsAccordingToGroupings(taskChartModels, chartConfig);

            var result = new RatioChartData <TGroup, ITaskChartModel>
            {
                Data   = filteredTaskChartModels,
                Groups = chartConfig.TypesGroupings
            };

            return(result);
        }