Пример #1
0
        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;
        }
Пример #2
0
 public async Task <IHttpActionResult> GetFacilities()
 {
     return(Ok(svc.GetFacilities()));
 }