From e22fdb94322e6cec38e5e4a9aec13d431a133fde Mon Sep 17 00:00:00 2001
From: 黄学彪 <hxb@hdlchina.com.cn>
Date: 星期二, 28 四月 2020 16:32:35 +0800
Subject: [PATCH] 上传合并后的代码

---
 ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlSceneLogic.cs |  157 +++++++++++++++++++++++++++++++++++++++-------------
 1 files changed, 118 insertions(+), 39 deletions(-)

diff --git a/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlSceneLogic.cs b/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlSceneLogic.cs
index ce36714..7f5755c 100755
--- a/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlSceneLogic.cs
+++ b/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlSceneLogic.cs
@@ -109,7 +109,7 @@
             foreach (var sceneui in listDelete)
             {
                 //鎵ц鍒犻櫎
-                this.RemoveScene(sceneui);
+                this.DeleteLocalScene(sceneui);
             }
 
             return true;
@@ -127,25 +127,36 @@
         /// <returns></returns>
         public async Task<SceneUI> AddNewSceneToGateway(string sceneName, List<Scene.DeviceListData> listAdjustTarget)
         {
-            var result1 = await Scene.GetSceneNewIdAsync(sceneName);
-            //鍏遍�氶敊璇娴�
-            string error = HdlCheckLogic.Current.CheckCommonErrorCode(result1);
-            if (error != null)
+            int NewScenesId = -1;
+            //濡傛灉褰撳墠浣忓畢涓嶆槸铏氭嫙浣忓畢
+            if (Common.Config.Instance.Home.IsVirtually == false)
             {
-                this.ShowErrorMsg(error);
-                return null;
+                var result1 = await Scene.GetSceneNewIdAsync(sceneName);
+                //鍏遍�氶敊璇娴�
+                string error = HdlCheckLogic.Current.CheckCommonErrorCode(result1);
+                if (error != null)
+                {
+                    this.ShowErrorMsg(error);
+                    return null;
+                }
+                if (result1 == null || result1.getSceneIdData == null)
+                {
+                    //娣诲姞鍦烘櫙澶辫触
+                    string msg1 = Language.StringByID(R.MyInternationalizationString.AddSceneFail);
+                    //鎷兼帴涓娿�愮綉鍏冲洖澶嶈秴鏃躲�戠殑Msg
+                    msg1 = UserCenterLogic.CombineGatewayTimeOutMsg(msg1, result1);
+                    this.ShowTipMsg(msg1);
+                    return null;
+                }
+                NewScenesId = result1.getSceneIdData.NewScenesId;
             }
-            if (result1 == null || result1.getSceneIdData == null)
+            else
             {
-                //娣诲姞鍦烘櫙澶辫触
-                string msg1 = Language.StringByID(R.MyInternationalizationString.AddSceneFail);
-                //鎷兼帴涓娿�愮綉鍏冲洖澶嶈秴鏃躲�戠殑Msg
-                msg1 = UserCenterLogic.CombineGatewayTimeOutMsg(msg1, result1);
-                this.ShowTipMsg(msg1);
-                return null;
+                //铏氭嫙鍦烘櫙ID
+                NewScenesId = Convert.ToInt32(DateTime.Now.ToString("HHmmss"));
             }
             //娣诲姞鎵ц鐩爣
-            var listSuccess = await this.AddTargetToScene(result1.getSceneIdData.NewScenesId, listAdjustTarget);
+            var listSuccess = await this.AddTargetToScene(NewScenesId, listAdjustTarget);
             if (listSuccess == null)
             {
                 return null;
@@ -154,7 +165,7 @@
             //鍒涘缓鍦烘櫙瀵硅薄
             var newScene = new SceneUI();
             newScene.Name = sceneName;
-            newScene.Id = result1.getSceneIdData.NewScenesId;
+            newScene.Id = NewScenesId;
             newScene.AdjustTargetList.AddRange(listSuccess);
             //娣诲姞缂撳瓨
             newScene.Save();
@@ -172,6 +183,12 @@
         /// <returns></returns>
         private async Task<List<Scene.DeviceListData>> AddTargetToScene(int sceneId, List<Scene.DeviceListData> listAdjustTarget)
         {
+            //濡傛灉褰撳墠浣忓畢鏄櫄鎷熶綇瀹呯殑璇�
+            if (Common.Config.Instance.Home.IsVirtually == true)
+            {
+                //涓嶉渶瑕佹洿鏂扮綉鍏�
+                return listAdjustTarget;
+            }
             var listSuccess = new List<Scene.DeviceListData>();
             for (int i = 0; i < listAdjustTarget.Count; i++)
             {
@@ -286,32 +303,34 @@
         }
 
         /// <summary>
-        /// 鍒犻櫎鍦烘櫙(杩欎釜鍙Щ闄ゅ唴瀛�)
+        /// 娣诲姞铏氭嫙鍦烘櫙
         /// </summary>
-        /// <param name="scene"></param>
-        public void DeleteSceneFromRoom(Room i_room, SceneUI scene)
+        /// <param name="sceneId">鎸囧畾鍦烘櫙id,濡傛灉涓�-1,鍒欎細鍐呴儴鑷姩缂栧彿(鍙兘浼氶噸澶�)</param>
+        /// <param name="sceneName">鍦烘櫙鍚嶅瓧</param>
+        /// <param name="listAdjustTarget">缁戝畾鐩爣</param>
+        /// <returns></returns>
+        public SceneUI AddVirtualScene(int sceneId, string sceneName, List<Scene.DeviceListData> listAdjustTarget)
         {
-            //绉婚櫎缂撳瓨
-            if (i_room.ListSceneId.Contains(scene.Id) == true)
+            if (sceneId == -1)
             {
-                i_room.ListSceneId.Remove(scene.Id);
-                i_room.Save();
+                sceneId = Convert.ToInt32(DateTime.Now.ToString("HHmmss"));
             }
-        }
+            //鍒涘缓鍦烘櫙瀵硅薄
+            var newScene = new SceneUI();
+            newScene.Name = sceneName;
+            newScene.IconPath = "SceneIcon/0.png";
+            //铏氭嫙鍦烘櫙ID
+            newScene.Id = sceneId;
+            if (listAdjustTarget != null)
+            {
+                newScene.AdjustTargetList.AddRange(listAdjustTarget);
+            }
+            //娣诲姞缂撳瓨
+            newScene.Save();
+            //鍔犲叆缂撳瓨
+            this.dicScenes[newScene.Id] = newScene;
 
-        /// <summary>
-        /// 鍒犻櫎鎼滆棌鍦烘櫙
-        /// </summary>
-        /// <param name="scene"></param>
-        public void DeleteLoveScene(SceneUI scene)
-        {
-            var nowRoom = HdlRoomLogic.Current.GetLoveRoom();
-            //绉婚櫎缂撳瓨
-            if (nowRoom.ListSceneId.Contains(scene.Id) == true)
-            {
-                nowRoom.ListSceneId.Remove(scene.Id);
-                nowRoom.Save();
-            }
+            return newScene;
         }
 
         #endregion
@@ -326,6 +345,16 @@
         /// <returns></returns>
         public async Task<bool> EditorSceneFromGateway(SceneUI sceneUI, List<Scene.DeviceListData> listAdjustTarget)
         {
+            //濡傛灉褰撳墠浣忓畢鏄櫄鎷熶綇瀹呯殑璇�
+            if (Common.Config.Instance.Home.IsVirtually == true)
+            {
+                //娓呯┖鍦烘櫙鐨勬墽琛岀洰鏍囧垪琛ㄧ殑缂撳瓨
+                sceneUI.AdjustTargetList.Clear();
+                sceneUI.AdjustTargetList.AddRange(listAdjustTarget);
+                sceneUI.Save();
+                return true;
+            }
+
             //鍏堟竻绌哄叏閮ㄧ殑鎵ц鐩爣
             var deleteData = new Scene.SceneRemoveMemberData();
             var deleteTargetData = new List<Scene.RemoveSceneDeviceListInfo>();
@@ -401,6 +430,12 @@
         /// <returns></returns>
         public async Task<bool> EditorSceneNameFromGateway(SceneUI scene, string newName)
         {
+            //濡傛灉褰撳墠浣忓畢鏄櫄鎷熶綇瀹呯殑璇�
+            if (Common.Config.Instance.Home.IsVirtually == true)
+            {
+                //涓嶉渶瑕佹洿鏂扮綉鍏�
+                return true;
+            }
             var result1 = await Scene.RenameSceneAsync(scene.Id, newName);
             //鍏遍�氶敊璇娴�
             string error = HdlCheckLogic.Current.CheckCommonErrorCode(result1);
@@ -440,10 +475,10 @@
         #region 鈻� 鍒犻櫎鍦烘櫙___________________________
 
         /// <summary>
-        /// 绉婚櫎鍦烘櫙--璇ヤ粎杩涜浜嗗鏈湴鍦烘櫙鏁版嵁鐨勫垹闄�
+        /// 鍒犻櫎鏈湴鍦烘櫙鏁版嵁
         /// </summary>
         /// <param name="sceneUI">Scene user interface.</param>
-        public void RemoveScene(SceneUI sceneUI)
+        public void DeleteLocalScene(SceneUI sceneUI)
         {
             //绉婚櫎缂撳瓨
             this.dicScenes.Remove(sceneUI.Id);
@@ -476,6 +511,35 @@
                     Global.DeleteFilebyHomeId(sceneUI.IconPath);
                     HdlAutoBackupLogic.DeleteFile(sceneUI.IconPath);
                 }
+            }
+        }
+
+        /// <summary>
+        /// 鍒犻櫎鍦烘櫙(杩欎釜鍙Щ闄ゅ唴瀛�)
+        /// </summary>
+        /// <param name="scene"></param>
+        public void DeleteSceneFromRoom(Room i_room, SceneUI scene)
+        {
+            //绉婚櫎缂撳瓨
+            if (i_room.ListSceneId.Contains(scene.Id) == true)
+            {
+                i_room.ListSceneId.Remove(scene.Id);
+                i_room.Save();
+            }
+        }
+
+        /// <summary>
+        /// 鍒犻櫎鎼滆棌鍦烘櫙
+        /// </summary>
+        /// <param name="scene"></param>
+        public void DeleteLoveScene(SceneUI scene)
+        {
+            var nowRoom = HdlRoomLogic.Current.GetLoveRoom();
+            //绉婚櫎缂撳瓨
+            if (nowRoom.ListSceneId.Contains(scene.Id) == true)
+            {
+                nowRoom.ListSceneId.Remove(scene.Id);
+                nowRoom.Save();
             }
         }
 
@@ -639,6 +703,13 @@
                 });
                 return false;
             }
+            //濡傛灉鏄櫄鎷熶綇瀹�
+            if (Common.Config.Instance.Home.IsVirtually == true)
+            {
+                //涓嶈皟鐢ㄧ綉鍏�
+                return true;
+            }
+
             //鎵ц璋冪敤鍦烘櫙
             var result = await Scene.ControlSceneAsync(scene.Id, scene.SceneDelayTime);
             if (result == null || result.sceneOpenData == null)
@@ -681,6 +752,14 @@
         /// <returns></returns>
         public async Task<List<Scene.DeviceListData>> GetAdjustTargetList(SceneUI i_scene)
         {
+            //濡傛灉浣忓畢涓鸿櫄鎷熶綇瀹�
+            if (Common.Config.Instance.Home.IsVirtually == true)
+            {
+                var listAdjustTarget = new List<Scene.DeviceListData>();
+                listAdjustTarget.AddRange(i_scene.AdjustTargetList);
+                return listAdjustTarget;
+            }
+
             var result = await Scene.GetSceneDeviceListAsync(i_scene.Id);
             //鍏遍�氶敊璇娴�
             string error = HdlCheckLogic.Current.CheckCommonErrorCode(result);

--
Gitblit v1.8.0