From 7b43f0f5c5dca88576efc0bb51bf95b523de90c9 Mon Sep 17 00:00:00 2001
From: JLChen <551775569@qq.com>
Date: 星期五, 10 七月 2020 11:33:06 +0800
Subject: [PATCH] 2020-07-10 1.修复窗帘定时器发送控制失败问题。

---
 Crabtree/SmartHome/UI/SimpleControl/Phone/Alexa/AlexaDeviceListPage.cs |  140 +++++++++++++++++++++++++++++++++++-----------
 1 files changed, 105 insertions(+), 35 deletions(-)

diff --git a/Crabtree/SmartHome/UI/SimpleControl/Phone/Alexa/AlexaDeviceListPage.cs b/Crabtree/SmartHome/UI/SimpleControl/Phone/Alexa/AlexaDeviceListPage.cs
index e612be7..b84d940 100644
--- a/Crabtree/SmartHome/UI/SimpleControl/Phone/Alexa/AlexaDeviceListPage.cs
+++ b/Crabtree/SmartHome/UI/SimpleControl/Phone/Alexa/AlexaDeviceListPage.cs
@@ -77,7 +77,7 @@
                         });
                     }
                 } catch (Exception ex) {
-                    Console.WriteLine (ex.Message);
+                    Utlis.WriteLine (ex.Message);
                 } finally {
                     Application.RunOnMainThread (() => {
                         MainPage.Loading.Hide ();
@@ -88,7 +88,7 @@
             ItemButton.MouseUpEventHandler += (sender, e) => {
                 Action action = () => {
                     Application.RunOnMainThread (() => {
-                        MainPage.Loading.Start ("please wait...");
+                        MainPage.Loading.Start ("Please wait...");
                     });
                     System.Threading.Tasks.Task.Run (() => {
                         try {
@@ -98,7 +98,7 @@
                                 InitDevcieRow (alexaDeviceLista, bodyView);
                             });
                         } catch (Exception ex) {
-                            Console.WriteLine (ex.Message);
+                            Utlis.WriteLine (ex.Message);
                         } finally {
                             Application.RunOnMainThread (() => {
                                 MainPage.Loading.Hide ();
@@ -111,7 +111,7 @@
                     System.Threading.Tasks.Task.Factory.StartNew (() => {
                         try {
                             Application.RunOnMainThread (() => {
-                                MainPage.Loading.Start ("please wait...");
+                                MainPage.Loading.Start ("Please wait...");
                             });
                             foreach (var newDevicePath in roomDeviceFilePathList) {
                                 var common = Newtonsoft.Json.JsonConvert.DeserializeObject<Common> (CommonPage.MyEncodingUTF8.GetString (IO.FileUtils.ReadFile (newDevicePath)));
@@ -122,7 +122,11 @@
                                 if (common != null) {
                                     var oldDevice = alexaDeviceLista.Find ((obj) => obj.SubnetID == common.SubnetID && obj.DeviceID == common.DeviceID && obj.LoopID == common.LoopID && obj.DeviceType == common.Type.ToString ());
                                     if (oldDevice == null) {
-                                        AddDevice (common);
+                                        var isSuccess = AddDevice (common);
+                                        if (!isSuccess) {
+                                            //璺冲嚭寰幆
+                                            break;
+                                        }
                                     }
                                 }
                             }
@@ -131,7 +135,7 @@
 
                                 if (!roomDeviceFilePathList.Contains (oldDevicePath)) {
                                     DelDevice (oldDevice.Id);
-                                    Console.WriteLine ("delDevice " + oldDevice.DeviceName);
+                                    Utlis.WriteLine ("delDevice " + oldDevice.DeviceName);
                                 }
                             }
 
@@ -141,7 +145,7 @@
                                     var oldScene = alexaSceneList.Find ((obj) => obj.SceneName == tempScene.Name);
                                     if (oldScene == null) {
                                         int sceneDeviceCount = tempScene.DeviceFilePathList.Count;
-                                        var uploadScene = new SceneAndDeviceList () { MAC = UserConfig.Instance.GatewayMAC, RegionID = UserConfig.Instance.CurrentRegion.RegionID, SceneName = tempScene.Name };
+                                        var uploadScene = new SceneAndDeviceList () { MAC = UserConfig.Instance.GatewayMAC, RegionID = UserConfig.Instance.CurrentRegion.Id, SceneName = tempScene.Name };
 
                                         byte [] replyBytes = null;
                                         if (!tempScene.busScene) {
@@ -356,7 +360,11 @@
                                             }
                                         }
 
-                                        AddScene (uploadScene);
+                                        var isSuccess = AddScene (uploadScene);
+                                        if (!isSuccess) {
+                                            //璺冲嚭寰幆
+                                            break;
+                                        }
                                     }
                                 }
 
@@ -372,7 +380,7 @@
                             });
 
                         } catch (Exception ex) {
-                            Console.WriteLine (ex.Message);
+                            Utlis.WriteLine (ex.Message);
                         } finally {
                             Application.RunOnMainThread (() => {
                                 MainPage.Loading.Hide ();
@@ -384,7 +392,7 @@
                 System.Threading.Tasks.Task.Factory.StartNew (() => {
                     try {
                         Application.RunOnMainThread (() => {
-                            MainPage.Loading.Start ("please wait...");
+                            MainPage.Loading.Start ("Please wait...");
                         });
                         var tempRoom = new Room ();
                         foreach (var device in alexaDeviceLista) {//鐗规畩澶勭悊鏈嶅姟鍣ㄤ笌鏈湴璁惧绫诲瀷涓嶄竴鏍风殑璁惧
@@ -415,7 +423,7 @@
                             userDeviceListPage.ShowPage (action, saveAction);
                         });
                     } catch (Exception ex) {
-                        Console.WriteLine (ex.Message);
+                        Utlis.WriteLine (ex.Message);
                     } finally {
                         Application.RunOnMainThread (() => {
                             MainPage.Loading.Hide ();
@@ -432,11 +440,15 @@
         public List<UpdateDeviceObj> ReadDeviceList ()
         {
             var deviceList = new List<UpdateDeviceObj> ();
-            var requestObj = new DeviceByRegionListObj () { RegionID = UserConfig.Instance.CurrentRegion.RegionID };
+            var requestObj = new GetDeviceListObj () { RegionID = UserConfig.Instance.CurrentRegion.Id };
             var requestJson = Newtonsoft.Json.JsonConvert.SerializeObject (requestObj);
-            var revertObj = MainPage.RequestHttps ("DeviceByRegionList", requestJson);
-            if (revertObj.StateCode == "SUCCESS") {
-                deviceList = Newtonsoft.Json.JsonConvert.DeserializeObject<List<UpdateDeviceObj>> (revertObj.ResponseData.ToString());
+            var revertObj = MainPage.RequestHttps (API.GetDeviceList, requestJson);
+            if (revertObj.StateCode.ToUpper () == "SUCCESS") {
+                deviceList = Newtonsoft.Json.JsonConvert.DeserializeObject<List<UpdateDeviceObj>> (revertObj.ResponseData.ToString ());
+            } else {
+                //2020-06-29 寮圭獥鎻愮ず閿欒
+
+
             }
             return deviceList;
         }
@@ -446,8 +458,8 @@
         /// </summary>
         public bool AddDevice (Common device)
         {
-            var uploadDevice = new AlexaDevice () {
-                RegionID = UserConfig.Instance.CurrentRegion.RegionID, MAC = UserConfig.Instance.GatewayMAC.Replace (".", ""),
+            var uploadDevice = new AlexaDeviceObj () {
+                RegionID = UserConfig.Instance.CurrentRegion.Id, MAC = UserConfig.Instance.GatewayMAC.Replace (".", ""),
                 DeviceName = device.Name, DeviceID = device.DeviceID, SubnetID = device.SubnetID, LoopID = device.LoopID, DeviceType = device.Type.ToString ()
             };
             if (device.Type.ToString () == "CurtainModel") {
@@ -457,25 +469,69 @@
             } else if (device.Type.ToString () == "ACInfrared") {
                 uploadDevice.DeviceType = "HVAC";
             }
-            var requestObj = new UploadDevicesObj () { Device = uploadDevice };
-            var requestJson = Newtonsoft.Json.JsonConvert.SerializeObject (requestObj);
-            var revertObj = MainPage.RequestHttps ("UploadDevices", requestJson);
-            if (revertObj.StateCode == "SUCCESS") {
+            //var requestObj = new UploadDevicesObj () { Device = uploadDevice };
+            var requestJson = Newtonsoft.Json.JsonConvert.SerializeObject (uploadDevice);
+            var revertObj = MainPage.RequestHttps (API.UploadDevices, requestJson);
+            if (revertObj.StateCode.ToUpper() == "SUCCESS") {
                 return true;
+            }else if (revertObj.StateCode == "Exist") {
+                Application.RunOnMainThread (() => {
+                    MainPage.AddTip (ErrorCode.AddFailed + " " + ErrorCode.NameExist + " ( " + device.Name + " )");
+                });
+                return true;
+            } else {
+                //2020-06-29 寮瑰嚭鎻愮ず閿欒
+                ShowUploadDevicesInfo (revertObj.StateCode);
             }
             return false;
         }
 
         /// <summary>
+        /// 涓婁紶璁惧 閿欒鎻愮ず
+        /// </summary>
+        /// <param name="stateCodeStr"></param>
+        void ShowUploadDevicesInfo (string stateCodeStr)
+        {
+            string mes = "";
+            if (stateCodeStr == "NoRecord") {
+                //浣忓畢鏈粦瀹氱綉鍏筹紒
+                mes = ErrorCode.HomeNoRecord;
+            } else if (stateCodeStr == "NoExist") {
+                //浣忓畢涓嶅瓨鍦紒
+                mes = ErrorCode.HomeNoExist;
+            } else if (stateCodeStr == "Exist") {
+                //璁惧鍚嶇О宸插瓨鍦�
+                mes = ErrorCode.NameExist;
+            } else if (stateCodeStr == ErrorCode.NetworkError) {
+                mes = ErrorCode.NetworkError;
+            } else {
+                mes = ErrorCode.OperationFailed + ErrorCode.Reason + stateCodeStr;
+
+            }
+            if (!string.IsNullOrEmpty (mes)) {
+                Application.RunOnMainThread (() => {
+                    MainPage.AddTip (ErrorCode.AddFailed + " " + mes);
+
+                    //new Alert ("", ErrorCode.AddFailed + " " + mes, Language.StringByID (R.MyInternationalizationString.Close)).Show ();
+                });
+            }
+
+
+        }
+
+        /// <summary>
         /// 鍒犻櫎璁惧
         /// </summary>
-        public bool DelDevice(int commonId)
+        public bool DelDevice(string commonId)
         {
             var requestObj = new DelDeviceObj () { Id = commonId };
             var requestJson = Newtonsoft.Json.JsonConvert.SerializeObject (requestObj);
-            var revertObj = MainPage.RequestHttps ("DelDevice", requestJson);
-            if (revertObj.StateCode == "SUCCESS") {
+            var revertObj = MainPage.RequestHttps (API.DeleteDevice, requestJson);
+            if (revertObj.StateCode.ToUpper() == "SUCCESS") {
                 return true;
+            } else {
+                //2020-06-29 寮圭獥鎻愮ず閿欒
+
             }
             return false;
         }
@@ -488,11 +544,13 @@
         public List<SceneByRegion> ReadSceneList ()
         {
             var sceneList = new List<SceneByRegion> ();
-            var requestObj = new SceneByRegionListObj () { RegionID = UserConfig.Instance.CurrentRegion.RegionID };
+            var requestObj = new SceneByRegionListObj () { RegionID = UserConfig.Instance.CurrentRegion.Id };
             var requestJson = Newtonsoft.Json.JsonConvert.SerializeObject (requestObj);
-            var revertObj = MainPage.RequestHttps ("SceneByRegionList", requestJson);
-            if (revertObj.StateCode == "SUCCESS") {
+            var revertObj = MainPage.RequestHttps (API.GetSceneList, requestJson);
+            if (revertObj.StateCode.ToUpper() == "SUCCESS") {
                 sceneList = Newtonsoft.Json.JsonConvert.DeserializeObject<List<SceneByRegion>> (revertObj.ResponseData.ToString ());
+            } else {
+                //2020-06-29 寮圭獥鎻愮ず閿欒
             }
             return sceneList;
         }
@@ -503,15 +561,24 @@
         public bool AddScene (SceneAndDeviceList sceneMark)
         {
             var requestJson = Newtonsoft.Json.JsonConvert.SerializeObject (sceneMark);
-            var revertObj = MainPage.RequestHttps ("AddSceneAndDeviceList", requestJson);
-            if (revertObj.StateCode == "SUCCESS") {
+            var revertObj = MainPage.RequestHttps (API.AddSceneAndDeviceList, requestJson);
+            if (revertObj.StateCode.ToUpper() == "SUCCESS") {
                 //var requestAddDeviceObj = new BindDeviceToSceneItemObj () { SceneId = sceneId, Command = command, DeviceID = 0, DataString = dataString };
                 //var requestAddDeviceJson = Newtonsoft.Json.JsonConvert.SerializeObject (requestAddDeviceObj);
                 //var revertAddDeviceObj = MainPage.RequestHttps ("BindDeviceToSceneItem", requestAddDeviceJson);
-                //if (revertAddDeviceObj.StateCode == "SUCCESS") {
+                //if (revertAddDeviceObj.StateCode.ToUpper() == "SUCCESS") {
                     return true;
                 //}
+            } else if (revertObj.StateCode == "Exist") {
+                Application.RunOnMainThread (() => {
+                    MainPage.AddTip (ErrorCode.AddFailed + " " + ErrorCode.NameExist + " ( " + sceneMark.SceneName + " )");
+                });
+                return true;
+            } else {
+                //2020-06-29 寮瑰嚭鎻愮ず閿欒
+                ShowUploadDevicesInfo (revertObj.StateCode);
             }
+
             return false;
         }
 
@@ -523,7 +590,7 @@
         //    var requestAddDeviceObj = new BindDeviceToSceneItemObj () { SceneId = sceneId, Command = command, DeviceID = 0, DataString = dataString };
         //    var requestAddDeviceJson = Newtonsoft.Json.JsonConvert.SerializeObject (requestAddDeviceObj);
         //    var revertAddDeviceObj = MainPage.RequestHttps ("BindDeviceToSceneItem", requestAddDeviceJson);
-        //    if (revertAddDeviceObj.StateCode == "SUCCESS") {
+        //    if (revertAddDeviceObj.StateCode.ToUpper() == "SUCCESS") {
         //        return true;
         //    }
         //    return false;
@@ -532,13 +599,16 @@
         /// <summary>
         /// 鍒犻櫎鍦烘櫙
         /// </summary>
-        public bool DelScene (int sceneId)
+        public bool DelScene (string sceneId)
         {
-            var requestObj = new DeleteScene () { Id = sceneId };
+            var requestObj = new DeleteSceneObj () { Id = sceneId };
             var requestJson = Newtonsoft.Json.JsonConvert.SerializeObject (requestObj);
-            var revertObj = MainPage.RequestHttps ("DeleteScene", requestJson);
-            if (revertObj.StateCode == "SUCCESS") {
+            var revertObj = MainPage.RequestHttps (API.DeleteScene, requestJson);
+            if (revertObj.StateCode.ToUpper() == "SUCCESS") {
                 return true;
+            } else {
+                //2020-06-29 寮圭獥鎻愮ず閿欒
+
             }
             return false;
         }

--
Gitblit v1.8.0