コード例 #1
0
        private static void ReplaceDataBlockQueryIndicators(DataBlockReplacementPlanViewModel replacementPlan,
                                                            DataBlock dataBlock)
        {
            var indicators = dataBlock.Query.Indicators.ToList();

            replacementPlan.IndicatorGroups
            .SelectMany(group => group.Value.Indicators)
            .ToList()
            .ForEach(plan =>
            {
                indicators.Remove(plan.Id);
                indicators.Add(plan.TargetValue);
            });

            dataBlock.Query.Indicators = indicators;
        }
コード例 #2
0
        private static void ReplaceDataBlockQueryFilters(DataBlockReplacementPlanViewModel replacementPlan,
                                                         DataBlock dataBlock)
        {
            var filterItems = dataBlock.Query.Filters.ToList();

            replacementPlan.Filters
            .SelectMany(filter =>
                        filter.Value.Groups.SelectMany(group => group.Value.Filters))
            .ToList()
            .ForEach(plan =>
            {
                filterItems.Remove(plan.Id);
                filterItems.Add(plan.TargetValue);
            });

            dataBlock.Query.Filters = filterItems;
        }
コード例 #3
0
        private async Task ReplaceLinksForDataBlock(DataBlockReplacementPlanViewModel replacementPlan,
                                                    Guid replacementSubjectId)
        {
            var dataBlock = await _contentDbContext.ContentBlocks
                            .OfType <DataBlock>()
                            .SingleAsync(block => block.Id == replacementPlan.Id);

            _contentDbContext.Update(dataBlock);

            dataBlock.Query.SubjectId = replacementSubjectId;
            ReplaceDataBlockQueryFilters(replacementPlan, dataBlock);
            ReplaceDataBlockQueryIndicators(replacementPlan, dataBlock);

            var filterItemTargets = replacementPlan.Filters
                                    .SelectMany(filter =>
                                                filter.Value.Groups.SelectMany(group => group.Value.Filters))
                                    .ToDictionary(plan => plan.Id, plan => plan.TargetValue);
            var indicatorTargets = replacementPlan.IndicatorGroups
                                   .SelectMany(group => group.Value.Indicators)
                                   .ToDictionary(plan => plan.Id, plan => plan.TargetValue);

            ReplaceDataBlockTableHeaders(filterItemTargets, indicatorTargets, dataBlock);
            ReplaceDataBlockCharts(filterItemTargets, indicatorTargets, dataBlock);
        }