public static void MergeGroups(DashboardItemGroupCollection fromGroups, DashboardMerger dashboardMerger) { DashboardItemGroupCollection toGroups = dashboardMerger.OriginalDashboard.Groups; IList <DashboardItem> newItems = dashboardMerger.NewItems; foreach (DashboardItemGroup group in fromGroups) { AddGroupCopy(group, dashboardMerger, (groupCopy) => { toGroups.Add(groupCopy); newItems.Add(groupCopy); }); } }
static void AddGroupCopy(DashboardItemGroup originalGroup, DashboardMerger dashboardMerger, Action <DashboardItemGroup> addGroupDelegate) { DashboardItemGroupCollection toGroups = dashboardMerger.OriginalDashboard.Groups; DashboardItemGroup groupCopy = CreateGroupCopy(originalGroup); if (toGroups.Any(g => g.ComponentName == originalGroup.ComponentName)) { if (ResolveGroupNamesConflict(groupCopy, originalGroup.ComponentName, toGroups, dashboardMerger.GroupNamesMap)) { addGroupDelegate(groupCopy); } } else { addGroupDelegate(groupCopy); } }