private IEnumerable <ITaskChartModel> FilterTaskChartModelsAccordingToGroupings <T>(IEnumerable <ITaskChartModel> models, ITaskRatioCharConfig <T> chartConfig) { IEnumerable <T> involvedTaskTypes = chartConfig.TypesGroupings.SelectMany(grouping => grouping.Value); IEnumerable <ITaskChartModel> result = models.Where(m => involvedTaskTypes.Contains(chartConfig.TaskGroupingSelector(m))); 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); }