private void PopulateAncestors(List <ExtendedHierarchyMember> members) { foreach (ExtendedHierarchyMember member in members.Where(x => x.MemberType == MemberType.Member)) { int cumulativeOperator = 1; HierarchyMemberAncestor hierarchyMemberAncestor = new HierarchyMemberAncestor() { Id = member.Id, AncestorId = member.Id, Level = member.Level, Operator = 1 }; memberAncestors.Add(hierarchyMemberAncestor); List <int> ancestors = metaDataManager.GetAncestors(member.Lineage); int levelCounter = hierarchyMemberAncestor.Level; int previousMemberID = member.Id; foreach (int ancestor in ancestors) { levelCounter -= 1; cumulativeOperator *= memberOperators[previousMemberID]; memberAncestors.Add(new HierarchyMemberAncestor() { Id = member.Id, AncestorId = ancestor, Level = levelCounter, Operator = cumulativeOperator }); previousMemberID = ancestor; } } }
protected override void PopulateDisplayMembers() { List <T> parents = new List <T>(); MetaDataManager metaDataManager = new MetaDataManager(); if (typeof(T).Equals(typeof(ExtendedHierarchyMember))) { foreach (int selectedMember in SelectedMembers.Distinct()) { T member = Members.FirstOrDefault(x => x.Id == selectedMember); if (member != null) { parents.Add(member); List <int> ancestors = metaDataManager.GetAncestors((member as ExtendedHierarchyMember).Lineage); List <ExtendedHierarchyMember> members = (Members as List <ExtendedHierarchyMember>).Where(x => ancestors.Contains(x.Id) && x.MemberType == MemberType.Rollup).ToList(); if (members != null && members.Count > 0) { parents.AddRange(members as List <T>); } } } } //else if (typeof(T).Equals(typeof(TimeHierarchy))) //{ // foreach (int selectedMember in SelectedMembers.Distinct()) // { // T member = Members.FirstOrDefault(x => x.Id == selectedMember); // if (member != null) // { // parents.Add(member); // List<int> ancestors = metaDataManager.GetAncestors((member as TimeHierarchy).Lineage); // List<TimeHierarchy> members = (Members as List<TimeHierarchy>).Where(x => ancestors.Contains(x.Id) && x.Level < 4).ToList(); // if (members != null && members.Count > 0) // { // parents.AddRange(members as List<T>); // } // } // } //} DisplayMembers = parents.Distinct(); }