public static void ProcessFilterLevelsToFlat(JobSearchFilterReceiverItem filterItem, List <string> values) { if (filterItem != null) { if (values != null) { values.Add(filterItem.ItemID); } if (filterItem.SubTargets != null && filterItem.SubTargets.Count > 0) { foreach (var subItem in filterItem.SubTargets) { ProcessFilterLevelsToFlat(subItem, values); } } } }
private void AssignNodeRootItem(JobSearchFilterReceiverItem item, string input) { //sample input: B_C_D List <string> itemIDs = input.Split(new string[] { "_" }, StringSplitOptions.RemoveEmptyEntries).ToList(); //create the next level item JobSearchFilterReceiverItem itemLevel1 = null; if (itemIDs.Count() > 0) { JobSearchFilterReceiverItem matchingLevel1 = null; if (item.SubTargets != null) { matchingLevel1 = item.SubTargets.Where(c => c.ItemID.Equals(itemIDs[0])).FirstOrDefault(); } if (matchingLevel1 == null) { itemLevel1 = new JobSearchFilterReceiverItem { ItemID = itemIDs[0] }; if (item.SubTargets != null) { item.SubTargets.Add(itemLevel1); } else { item.SubTargets = new List <JobSearchFilterReceiverItem> { itemLevel1 } }; } else { itemLevel1 = matchingLevel1; } } if (itemIDs.Count() == 1) { return; } JobSearchFilterReceiverItem itemLevel2 = null; if (itemIDs.Count() > 1) { //create the next level - next level item (2 level down) itemLevel2 = new JobSearchFilterReceiverItem { ItemID = itemIDs[1] }; if (itemLevel1.SubTargets != null) { itemLevel1.SubTargets.Add(itemLevel2); } else { itemLevel1.SubTargets = new List <JobSearchFilterReceiverItem> { itemLevel2 } }; } if (itemIDs.Count() > 2 && itemLevel2 != null) { AssignNodeRootItem(itemLevel2, String.Join("_", itemIDs.Skip(2))); } }
private void AssignNodeRoot(JobSearchFilterReceiver root, string input) { //sample input: A_B_C_D List <string> itemIDs = input.Split(new string[] { "_" }, StringSplitOptions.RemoveEmptyEntries).ToList(); if (itemIDs.Count() == 0) { return; } if (itemIDs.Count() == 1) { if (root.values == null) { root.values.Add(new JobSearchFilterReceiverItem { ItemID = itemIDs[0] }); } else { bool hasMatchingItem = root.values.Where(c => c.ItemID.Equals(itemIDs[0])).Any(); if (!hasMatchingItem) { root.values.Add(new JobSearchFilterReceiverItem { ItemID = itemIDs[0] }); } } return; } else { JobSearchFilterReceiverItem nextLevelItem = null; if (root.values == null) { nextLevelItem = new JobSearchFilterReceiverItem { ItemID = itemIDs[0] }; root.values.Add(nextLevelItem); } else { JobSearchFilterReceiverItem matchingItem = root.values.Where(c => c.ItemID.Equals(itemIDs[0])).FirstOrDefault(); if (matchingItem == null) { nextLevelItem = new JobSearchFilterReceiverItem { ItemID = itemIDs[0] }; root.values.Add(nextLevelItem); } else { nextLevelItem = matchingItem; } } if (nextLevelItem != null) { AssignNodeRootItem(nextLevelItem, String.Join("_", itemIDs.Skip(1))); } } }
public static void ProcessFilterLevels(Classification_CategorySearchTarget catTarget, JobSearchFilterReceiverItem filterItem) { if (catTarget != null && filterItem != null) { catTarget.TargetValue = filterItem.ItemID; if (filterItem.SubTargets != null && filterItem.SubTargets.Count > 0) { foreach (var subItem in filterItem.SubTargets) { Classification_CategorySearchTarget catSubTarget = new Classification_CategorySearchTarget() { SubTargets = new List <Classification_CategorySearchTarget>() }; ProcessFilterLevels(catSubTarget, subItem); catTarget.SubTargets.Add(catSubTarget); } } } }