From ed2f4a97aa48cdb4a013d2a389877f52eb3eccdf Mon Sep 17 00:00:00 2001
From: gxc <guoxuecheng@guoxuechengdeMacBook-Pro.local>
Date: 星期二, 29 十月 2019 13:15:59 +0800
Subject: [PATCH] Merge branch 'DEV_GXC' of http://172.16.1.23:6688/r/~xm/HomeApp into DEV_GXC

---
 ZigbeeApp/Shared/Common/Room.cs |  225 +++++++++++++++++++++++++++++++++++---------------------
 1 files changed, 140 insertions(+), 85 deletions(-)

diff --git a/ZigbeeApp/Shared/Common/Room.cs b/ZigbeeApp/Shared/Common/Room.cs
index 64e0190..23c861c 100644
--- a/ZigbeeApp/Shared/Common/Room.cs
+++ b/ZigbeeApp/Shared/Common/Room.cs
@@ -140,11 +140,28 @@
 
         /// <summary>
         /// 鎵�鏈夋埧闂寸殑鎵�鏈夎澶囩被鍨�
-        /// 鍏堣皟鐢� GetAllRoomDeviceTypeList()
         /// </summary>
         /// <value>All room device type list.</value>
         [Newtonsoft.Json.JsonIgnore]
-        public static List<DeviceType> AllRoomDeviceTypeList = new List<DeviceType> { };
+        public static List<DeviceType> AllRoomDeviceTypeList
+        {
+            get
+            {
+                var typeList = new List<DeviceType> { };
+                foreach (var deviceUI in AllRoomDeviceUIList)
+                {
+                    if (deviceUI == null || deviceUI.CommonDevice == null)
+                    {
+                        continue;
+                    }
+                    if (!typeList.Contains(deviceUI.CommonDevice.Type))
+                    {
+                        typeList.Add(deviceUI.CommonDevice.Type);
+                    }
+                }
+                return typeList;
+            }
+        }
 
         /// <summary>
         /// 鑾峰彇鎵�鏈夋埧闂寸殑鎵�鏈夊満鏅�
@@ -191,11 +208,41 @@
 
         /// <summary>
         /// 鑾峰彇鎵�鏈夋埧闂寸殑鎵�鏈夎澶�
-        /// 璇峰厛璋冪敤 GetAllRoomDeviceUIList()鏂规硶
         /// </summary>
         /// <value>All room device UIL ist.</value>
         [Newtonsoft.Json.JsonIgnore]
-        public static List<DeviceUI> AllRoomDeviceUIList = new List<DeviceUI> { };
+        public static List<DeviceUI> AllRoomDeviceUIList
+        {
+            get
+            {
+                List<DeviceUI> deviceList = new List<DeviceUI>();
+                for (int i = 0; i < Lists.Count; i++)
+                {
+                    var room = Lists[i];
+                    if (room.IsSharedRoom)
+                    {
+                        continue;
+                    }
+                    if (room.DeviceUIList.Count == 0)
+                    {
+                        continue;
+                    }
+                    for (int j = 0; j < room.DeviceUIList.Count; j++)
+                    {
+                        var device = room.DeviceUIList[j];
+                        if (device == null || device.CommonDevice == null)
+                        {
+                            continue;
+                        }
+                        if (deviceList.Find((obj) => obj.FileName == device.FileName) == null)
+                        {
+                            deviceList.Add(device);
+                        }
+                    }
+                }
+                return deviceList;
+            }
+        }
 
         #endregion
 
@@ -349,7 +396,7 @@
         /// 鑾峰彇鍠滅埍鎴块棿
         /// </summary>
         /// <returns></returns>
-        public  Room GetLoveRoom()
+        public Room GetLoveRoom()
         {
             return CurrentRoom.GetRoomById(LoveRoomId);
         }
@@ -459,6 +506,10 @@
         /// <param name="roomId">鎴块棿ID</param>
         public Room GetRoomById(string roomId)
         {
+            if (string.IsNullOrEmpty(roomId))
+            {
+                return null;
+            }
             return Lists.Find((obj) => obj.Id == roomId);
         }
 
@@ -710,8 +761,9 @@
         public void AddDevice(string deviceUIFilePath)
         {
             if (string.IsNullOrEmpty(deviceUIFilePath))
-            {
-                return;
+
+             {
+                 return;
             }
             var jsonInfo = Encoding.UTF8.GetString(Global.ReadFileByHomeId(deviceUIFilePath));
             var deviceUI = Newtonsoft.Json.JsonConvert.DeserializeObject<DeviceUI>(jsonInfo);
@@ -815,39 +867,6 @@
         #region 鈼� 鑾峰彇璁惧_________________________
 
         /// <summary>
-        /// 鑾峰彇鎵�鏈夋埧闂寸殑鎵�鏈夎澶�
-        /// </summary>
-        public static void GetAllRoomDeviceUIList()
-        {
-            List<string> devicePathList = new List<string>();
-            //鎵�鏈夋埧闂寸殑鎵�鏈夎澶�
-            AllRoomDeviceUIList.Clear();
-            foreach (var room in Shared.Common.Room.Lists)
-            {
-                if(room.IsSharedRoom)
-                {
-                    continue;
-                }
-                if (room.DeviceUIList.Count == 0)
-                {
-                    continue;
-                }
-                foreach (var device in room.DeviceUIList)
-                {
-                    if (device == null || device.CommonDevice == null)
-                    {
-                        continue;
-                    }
-                    if (!devicePathList.Contains(device.FileName))
-                    {
-                        AllRoomDeviceUIList.Add(device);
-                        devicePathList.Add(device.FileName);
-                    }
-                }
-            }
-        }
-
-        /// <summary>
         /// 鏍规嵁璁惧鑾峰彇瀹冪殑UI瀵硅薄锛屽鏋滀笉瀛樺湪鍒欐柊寤�
         /// </summary>
         /// <returns>The device user interface.</returns>
@@ -855,25 +874,6 @@
         public DeviceUI GetDeviceUI(CommonDevice device)
         {
             return Common.LocalDevice.Current.GetDeviceUI(device);
-        }
-
-        /// <summary>
-        /// 閲嶆柊鑾峰彇-鎵�鏈夋埧闂寸殑鎵�鏈夎澶囩被鍨�
-        /// </summary>
-        public static void GetAllRoomDeviceTypeList()
-        {
-            AllRoomDeviceTypeList.Clear();
-            foreach (var deviceUI in AllRoomDeviceUIList)
-            {
-                if (deviceUI == null || deviceUI.CommonDevice == null)
-                {
-                    continue;
-                }
-                if (!AllRoomDeviceTypeList.Contains(deviceUI.CommonDevice.Type))
-                {
-                    AllRoomDeviceTypeList.Add(deviceUI.CommonDevice.Type);
-                }
-            }
         }
 
         /// <summary>
@@ -947,6 +947,36 @@
             return typeList;
         }
 
+        /// <summary>
+        /// 鑾峰彇璇ユゼ灞傜殑鍦烘櫙
+        /// </summary>
+        /// <param name="floorId"></param>
+        /// <returns></returns>
+        public List<SceneUI> GetSceneUIsByFloorId(string floorId)
+        {
+            var rooms = GetRoomsByFloorId(floorId);
+            if (rooms == null)
+            {
+                return null;
+            }
+            var sceneList = new List<SceneUI> { };
+            foreach (var r in rooms)
+            {
+                if (r.SceneUIList.Count == 0)
+                {
+                    continue;
+                }
+                foreach (var sceneUI in r.SceneUIList)
+                {
+                    if (sceneUI == null)
+                    {
+                        continue;
+                    }
+                    sceneList.Add(sceneUI);
+                }
+            }
+            return sceneList;
+        }
 
         #endregion
 
@@ -962,25 +992,21 @@
         /// <param name="iconPathType">I鍦烘櫙鑳屾櫙鍥剧墖鏉ユ簮绫诲瀷 鍥剧墖鏉ユ簮 0--鏈湴鍥惧簱 1--鎷嶇収 2--绯荤粺鍥惧簱 榛樿0</param>
         public async System.Threading.Tasks.Task<int> AddScene(string sceneName, string sceneIconPath, List<ZigBee.Device.Scene.AddSceneMemberData> commons, int iconPathType = 0)
         {
-            if (AllRoomSceneUIList.Find(s => s.Name == sceneName) != null)
+            var scenes = GetSceneUIsByFloorId(FloorId);
+            if(scenes!=null && scenes.Count>0)
             {
-                return -1;
+                if (scenes.Find(s => s.Name == sceneName) != null)
+                {
+                    return -1;
+                }
             }
+
             var getSceneIdAllData = await ZigBee.Device.Scene.GetSceneNewIdAsync(sceneName);
             if (getSceneIdAllData == null || getSceneIdAllData.getSceneIdData == null)
             {
                 return 0;
             }
             var getSceneIdData = getSceneIdAllData.getSceneIdData;
-            //寰幆鐩稿悓鎶ラ敊
-            foreach (var tempSceneUI in AllRoomSceneUIList)
-            {
-                if (tempSceneUI.Id == getSceneIdAllData.getSceneIdData.NewScenesId)
-                {
-                    //鍦烘櫙宸插瓨鍦�
-                    return -1;
-                }
-            }
 
             bool result = true;
             foreach (var common in commons)
@@ -988,12 +1014,13 @@
                 //娣诲姞鏂版垚鍛�
                 var addSceneMemberData = new ZigBee.Device.Scene.AddSceneMemberData
                 {
-                    DeviceAddr = common.DeviceAddr,
                     Type = common.Type,
+                    DeviceAddr = common.DeviceAddr,
                     Epoint = common.Epoint,
                     ScenesId = getSceneIdData.NewScenesId,
                     TaskList = common.TaskList,
                     DelayTime = common.DelayTime,
+                    MemberNumber=common.MemberNumber,
                     ElseScenesId = common.ElseScenesId
                 };
                 //common.ScenesId = getSceneIdData.NewScenesId;
@@ -1043,17 +1070,30 @@
         /// <param name="scene">Scene.</param>
         public void AddScene(SceneUI scene)
         {
-            var sceneUI = new SceneUI
-            {
-                Name = scene.Name,
-                Id = scene.Id,
-                IconPath = scene.IconPath,
-                IconPathType = scene.IconPathType,
-                AddSceneMemberDataList = scene.AddSceneMemberDataList
-            };
-            SceneUIList.Add(sceneUI);
-            SceneUIFilePathList.Add(sceneUI.FileName);
-            sceneUI.Save();
+            //var sceneUI = new SceneUI
+            //{
+            //    Name = scene.Name,
+            //    Id = scene.Id,
+            //    IconPath = scene.IconPath,
+            //    IconPathType = scene.IconPathType,
+            //    AddSceneMemberDataList = scene.AddSceneMemberDataList
+            //};
+            SceneUIList.Add(scene);
+            SceneUIFilePathList.Add(scene.FileName);
+            scene.Save();
+            Save();
+        }
+
+        /// <summary>
+        /// 鍒犻櫎鍦烘櫙
+        /// </summary>
+        /// <param name="scene"></param>
+        public void DeleteScene(SceneUI scene)
+        {
+            //scene.IsCollected = false;
+            scene.Save();
+            SceneUIList.Remove(scene);
+            SceneUIFilePathList.Remove(scene.FileName);
             Save();
         }
 
@@ -1125,7 +1165,8 @@
                     ScenesId = sceneUI.Id,
                     TaskList = addCommon.TaskList,
                     DelayTime = addCommon.DelayTime,
-                    ElseScenesId = addCommon.ElseScenesId
+                    ElseScenesId = addCommon.ElseScenesId,
+                    MemberNumber=addCommon.MemberNumber
                 };
                 //娣诲姞鏂版垚鍛� 杩斿洖缁撴灉
                 var addSceneMemberResponseAllData = await ZigBee.Device.Scene.AddSceneMemberAsync(addSceneMemberData);
@@ -1196,7 +1237,21 @@
             }
             return null;
         }
-
+        /// <summary>
+        /// 鑾峰彇璇ユゼ灞傛墍鏈夊満鏅�
+        /// </summary>
+        /// <param name="floorId"></param>
+        /// <returns></returns>
+        public List<SceneUI> GetSameFloorScenes(string floorId)
+        {
+            List<SceneUI> sceneUIs = new List<SceneUI> { };
+            var rooms= CurrentRoom.GetRoomsByFloorId(floorId);
+            foreach(var r in rooms)
+            {
+                sceneUIs.AddRange(r.SceneUIList);
+            }
+            return sceneUIs;
+        }
         #endregion
 
         #region 鈼� 鍒锋柊鍦烘櫙_________________________
@@ -1431,6 +1486,6 @@
         }
 
         #endregion
-       
+
     }
 }

--
Gitblit v1.8.0