Example #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);
        }
        public IEnumerable <IDayAssign> Get(ITimePeriod period, IChartDataQueryingRestrictions restrictions)
        {
            switch (restrictions.QueryingAlgorithm)
            {
            case QueryingAlgorithmType.ByCompletitionDateCriteria:
                return(GetByCompletionDateCriteria(period, restrictions));

            case QueryingAlgorithmType.ByDateCriteria:
                return(GetByDateCriteria(period, restrictions));

            default:
                throw new ArgumentOutOfRangeException($"No such querying algorithm {restrictions.QueryingAlgorithm}");
            }
        }
Example #3
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);
        }
        private IEnumerable <IDayAssign> GetByDateCriteria(ITimePeriod period, IChartDataQueryingRestrictions restrictions)
        {
            var result = Enumerable.Empty <IDayAssign>();

            if (restrictions.CurrentMemberRole == RoleType.Coordinator)
            {
                var allowedHousingDepartments = restrictions.AccessibleManagementToHousingDepartmentsRelation.SelectMany(pair => pair.Value);
                result = dayAssignService.GetForStatisticTimeSpan(period.StartDate, period.EndDate, restrictions.AllowedStatuses, allowedHousingDepartments);
            }
            else
            {
                result = dayAssignService.GetForStatisticTimeSpan(period.StartDate, period.EndDate, restrictions.AllowedStatuses);
            }

            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);
        }
        private IEnumerable <IDayAssign> GetByCompletionDateCriteria(ITimePeriod period, IChartDataQueryingRestrictions restrictions)
        {
            var dayAssigns = Enumerable.Empty <IDayAssign>();

            List <Guid> dayAssignIdList = jobStatusLogService.GetDayAssignIds(period.StartDate, period.EndDate, restrictions.AllowedStatuses).ToList();

            if (restrictions.CurrentMemberRole == RoleType.Coordinator)
            {
                IEnumerable <Guid> allowedHousingDepartments = restrictions.AccessibleManagementToHousingDepartmentsRelation.SelectMany(pair => pair.Value);
                dayAssigns = dayAssignService.GetForStatisticByIdsWithRestrictions(dayAssignIdList, allowedHousingDepartments);
            }
            else
            {
                dayAssigns = dayAssignService.GetForStatisticByIdsWithRestrictions(dayAssignIdList);
            }

            return(dayAssigns);
        }