private void LoadFacilitiesInternal() { var facilities = _facilitiesService.GetFacilities(); var buildings = _applicationContext.Buildings.ToList(); var sites = buildings.Where(x => x.Property != null).Select(x => x.Property).Distinct().OrderBy(x => x).ToList(); var facilitySystems = _applicationContext.InvFacilitySystems; var systemGroups = facilitySystems.Select(x => x.SystemGroup).Distinct().OrderBy(x => x).ToList(); var items = new BindableCollection <TreeNode <object> >(); foreach (var site in sites) { var siteNode = new TreeNode <object> { HiearchyLevel = 0, Value = site, TreeNodeType = TreeNodeType.Site, Parent = null, IsOpen = true, Children = new BindableCollection <ITreeNode <object> >(), }; foreach (var building in buildings.Where(x => x.Property == site).Select(x => x.Building).Distinct().OrderBy(x => x)) { var buildingNode = new TreeNode <object> { HiearchyLevel = 1, Value = building, TreeNodeType = TreeNodeType.Building, Parent = siteNode, IsOpen = true, Children = new BindableCollection <ITreeNode <object> >(), }; siteNode.Children.Add(buildingNode); foreach (var systemGroup in systemGroups) { var systemGroupNode = new TreeNode <object> { HiearchyLevel = 2, Value = systemGroup, TreeNodeType = TreeNodeType.SystemGroup, Parent = buildingNode, IsOpen = true, Children = new BindableCollection <ITreeNode <object> >(), }; buildingNode.Children.Add(systemGroupNode); foreach ( var systemGroupType in facilitySystems.Where(x => x.SystemGroup == systemGroup) .Select(x => x.SystemTitle) .Distinct() .OrderBy(x => x)) { var systemGroupTypeNode = new TreeNode <object> { HiearchyLevel = 3, Value = systemGroupType, TreeNodeType = TreeNodeType.SystemGroupType, Parent = systemGroupNode, IsOpen = true, Children = new BindableCollection <ITreeNode <object> >(), }; systemGroupNode.Children.Add(systemGroupTypeNode); foreach (var facility in facilities.Where(x => x.Property == site && x.Building == building && x.FacilityGroup == systemGroup && x.FacilitySystem == systemGroupType).OrderBy(x => x.Facility_)) { var facilityNode = new TreeNode <object> { HiearchyLevel = 4, Value = facility, TreeNodeType = TreeNodeType.System, Parent = systemGroupTypeNode, IsOpen = true, Children = new BindableCollection <ITreeNode <object> >(), }; systemGroupTypeNode.Children.Add(facilityNode); foreach (var component in facility.InvEquipments.OrderBy(x => x.EquipmentName)) { var equipmentNode = new TreeNode <object> { HiearchyLevel = 5, Value = component, TreeNodeType = TreeNodeType.Component, Parent = facilityNode, IsOpen = false, }; facilityNode.Children.Add(equipmentNode); } } } } } items.Add(siteNode); } Facilities = items; }
public async Task <IHttpActionResult> GetFacilities() { return(Ok(svc.GetFacilities())); }