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; }
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; }
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); }