From be95e839f40eb3ddf64706b60cba6dfcf4fad5e5 Mon Sep 17 00:00:00 2001
From: JLChen <551775569@qq.com>
Date: 星期五, 03 四月 2020 14:31:44 +0800
Subject: [PATCH] 2020-04-03 1.去掉登录前ping百度域名的网络监测。

---
 Crabtree/SmartHome/UI/SimpleControl/Phone/Register/Databackup.cs |  559 ++++++++++++++++++++++++++++++++++++++++++++-----------
 1 files changed, 440 insertions(+), 119 deletions(-)

diff --git a/Crabtree/SmartHome/UI/SimpleControl/Phone/Register/Databackup.cs b/Crabtree/SmartHome/UI/SimpleControl/Phone/Register/Databackup.cs
index 22d7e54..968c699 100644
--- a/Crabtree/SmartHome/UI/SimpleControl/Phone/Register/Databackup.cs
+++ b/Crabtree/SmartHome/UI/SimpleControl/Phone/Register/Databackup.cs
@@ -32,7 +32,7 @@
                 X = Application.GetRealWidth (90),
                 Width = Application.GetRealWidth (640 - 180),
                 TextAlignment = TextAlignment.Center,
-                Text = UserConfig.Instance.CurrentRegion.RegionName + " " + Language.StringByID (R.MyInternationalizationString.Backup),
+                Text = UserConfig.Instance.CurrentRegion.Name + " " + Language.StringByID (R.MyInternationalizationString.Backup),
                 TextSize = 19,
                 TextColor = SkinStyle.Current.TextColor1,
             };
@@ -78,20 +78,20 @@
                         Gravity = Gravity.CenterVertical,
                         UnSelectedImagePath = "Item/Point.png",
                         SelectedImagePath = "Item/Point.png",
-                        Visible = homeTemp.RegionID != UserConfig.Instance.CurrentRegion.RegionID
+                        Visible = homeTemp.Id != UserConfig.Instance.CurrentRegion.Id
                     };
                     rowView.AddChidren (btnPoint);
 
                     var btnName = new Button () {
                         Width = Application.GetRealWidth (550),
-                        Text = homeTemp.RegionName,
+                        Text = homeTemp.Name,
                         TextAlignment = TextAlignment.CenterLeft,
                         X = Application.GetRealWidth (90),
                         TextColor = SkinStyle.Current.TextColor1,
                     };
                     rowView.AddChidren (btnName);
 
-                    if (homeTemp.RegionID == UserConfig.Instance.CurrentRegion.RegionID) {
+                    if (homeTemp.Id == UserConfig.Instance.CurrentRegion.Id) {
                         Button btnCheck = new Button () {
                             X = Application.GetRealWidth (20),
                             Y = Application.GetRealHeight (25),
@@ -112,13 +112,13 @@
                             try {
                                 var backuplist = IO.FileUtils.ReadFiles ();
                                 int index = 0;
-                                string oldRegionRootPath = IO.FileUtils.CreateRegionBackup (UserConfig.Instance.CurrentRegion.RegionName);
+                                string oldRegionRootPath = IO.FileUtils.CreateRegionBackup (UserConfig.Instance.CurrentRegion.Id);
                                 IO.FileUtils.DeleteRegionFiles (oldRegionRootPath);
                                 foreach (var fileName in backuplist) {
                                     System.IO.FileInfo fileInfo = new System.IO.FileInfo (IO.FileUtils.RootPath + fileName);
                                     if (fileInfo.Exists) {
                                         fileInfo.MoveTo (oldRegionRootPath + fileName);
-                                        Console.WriteLine ("move file : " + fileName);
+                                        Utlis.WriteLine ("move file : " + fileName);
                                     }
                                     index++;
                                     Application.RunOnMainThread (() => {
@@ -127,7 +127,7 @@
                                     });
                                 }
                                 IO.FileUtils.DeleteAllFile ();
-                                string newRegionRootPath = IO.FileUtils.CreateRegionBackup (homeTemp.RegionName);
+                                string newRegionRootPath = IO.FileUtils.CreateRegionBackup (homeTemp.Id);
                                 IO.FileUtils.RestoreRegionFiles (newRegionRootPath);
                                 UserConfig.Instance.RefreshUserConfig ();
                                 UserConfig.Instance.CurrentRegion = homeTemp;
@@ -140,14 +140,14 @@
                                     new Alert ("", Language.StringByID (R.MyInternationalizationString.SwitchRegionSuccessfully),
                                               Language.StringByID (R.MyInternationalizationString.Close)).Show ();
                                     this.DatabackupShow ();
-                                    EquipmentPublicClass.CheckLinkRemote (2);
+                                    EquipmentPublicClass.CheckLinkRemote (UserConfig.Instance.internetStatus);
                                 });
                             } catch (Exception ex) {
                                 Application.RunOnMainThread (() => {
                                     new Alert ("", Language.StringByID (R.MyInternationalizationString.CheckInternet),
                                                Language.StringByID (R.MyInternationalizationString.Close)).Show ();
                                 });
-                                Console.WriteLine (ex.Message);
+                                Utlis.WriteLine (ex.Message);
                             } finally {
                                 Application.RunOnMainThread (() => {
                                     MainPage.Loading.Hide ();
@@ -298,17 +298,51 @@
                     Application.RunOnMainThread (() => {
                         MainPage.Loading.Start ("Please wait...");
                     });
-                    GetUserFolderObj requestObj = new GetUserFolderObj () { LevelID = UserConfig.Instance.CurrentRegion.RegionID };
+                    var requestObj = new GetHomeDataBackupPaggerObj () {
+                        HomeId = UserConfig.Instance.CurrentRegion.Id,
+                        LoginAccessToken = MainPage.LoginUser.LoginTokenString
+                    };
+                    string urlHead = MainPage.RequestHttpsHost;
+                    if (requestObj.IsOtherAccountCtrl) {
+                        urlHead = UserConfig.Instance.MasterAccountRequestBaseUrl;
+                        requestObj.LoginAccessToken = UserConfig.Instance.MasterAccountToken;
+                    }
+
+                    //GetUserFolderObj requestObj = new GetUserFolderObj () { LevelID = UserConfig.Instance.CurrentRegion.Id };
                     var requestJson = Newtonsoft.Json.JsonConvert.SerializeObject (requestObj);
-                    var revertObj = MainPage.RequestHttps ("GetUserFolder", requestJson,true,false);
-                    if (revertObj.StateCode == "SUCCESS") {
-                        var responseDataObj = Newtonsoft.Json.JsonConvert.DeserializeObject<List<FolderRes>> (revertObj.ResponseData.ToString ());
+                    var revertObj = MainPage.RequestHttps (API.GetHomeDataBackupPagger, requestJson, urlHead);
+                    if (revertObj.StateCode.ToUpper () == "SUCCESS") {
+                        var data = Newtonsoft.Json.JsonConvert.DeserializeObject<GetBackupListResult> (revertObj.ResponseData.ToString ());
+                        //var list = new List<BackupListNameInfo> ();
+                        //foreach (var data2 in data.PageData) {
+                        //    if (ZigbeeUniqueId != null && data2.GatewayUniqueId != ZigbeeUniqueId) {
+                        //        continue;
+                        //    }
+                        //    if (getLogBackup == false && data2.BackupName == LogBackupName) {
+                        //        //涓嶈幏鍙朙og澶囦唤
+                        //        continue;
+                        //    }
+                        //    list.Add (data2);
+                        //}
+
+
+                        //var responseDataObj = Newtonsoft.Json.JsonConvert.DeserializeObject<List<FolderRes>> (revertObj.ResponseData.ToString ());
+                        if (data == null) return;
+
                         Application.RunOnMainThread (() => {
-                            foreach(var folder in responseDataObj)
-                            {
-                                addRow (folder.FolderName,folder.FolderID);
+                            foreach (var folder in data.PageData) {
+                                addRow (folder.BackupName, folder.Id);
                             }
                         });
+                    } else {
+                        //2020-01-11 鍒锋柊涓�娆asterToken
+                        if (requestObj.IsOtherAccountCtrl) {
+                            //if (revertObj.StateCode == "ParameterOrEmpty" || revertObj.StateCode == "NoLogin" || revertObj.StateCode == "HomeIdAndTokenNoConsistent") {
+                            if (revertObj.StateCode != ErrorCode.NetworkError) {
+                                UserConfig.Instance.CheckIfNeedGetMasterAccountToken ();
+                            }
+                        }
+                        MainPage.ShowAlertOnMainThread ("Failed to get backup data list!");
                     }
                     //var groupNames = service_backup.GetUserGroup (MainPage.LoginUser.MasterID, 0);
                     //Application.RunOnMainThread (() => {
@@ -328,7 +362,7 @@
             });
         }
 
-        void addRow (string groupName,int folderID)
+        void addRow (string groupName, string folderID)
         {
             var rowView = new RowLayout () {
                 Height = Application.GetRealHeight (110),
@@ -350,23 +384,7 @@
                 Alert alert = new Alert ("", Language.StringByID (R.MyInternationalizationString.AreYouSureToDeleteFile), Language.StringByID (R.MyInternationalizationString.Cancel), Language.StringByID (R.MyInternationalizationString.Confrim));
                 alert.ResultEventHandler += ( sender2,  e2) => {
                     if (e2) {
-                        MainPage.Loading.Start ("Please wait...");
-                        System.Threading.Tasks.Task.Run (() => {
-                            try {
-                                DeleteFolderDataObj requestObj = new DeleteFolderDataObj () { Id = folderID };
-                                var requestJson = Newtonsoft.Json.JsonConvert.SerializeObject (requestObj);
-                                var revertObj = MainPage.RequestHttps ("DeleteFolderData", requestJson);
-                                if (revertObj.StateCode == "SUCCESS") {
-                                    Application.RunOnMainThread (() => {
-                                        DatabackupShow ();
-                                    });
-                                }
-                            } catch { } finally {
-                                Application.RunOnMainThread (() => {
-                                    MainPage.Loading.Hide ();
-                                });
-                            }
-                        });
+                        DeleteFolderData (folderID);
                     }
                 };
                 alert.Show ();
@@ -400,23 +418,7 @@
                 Alert alert = new Alert ("", Language.StringByID (R.MyInternationalizationString.AreYouSureToDeleteFile), Language.StringByID (R.MyInternationalizationString.Cancel), Language.StringByID (R.MyInternationalizationString.Confrim));
                 alert.ResultEventHandler += ( sender2,  e2) => {
                     if (e2) {
-                        MainPage.Loading.Start ("Please wait...");
-                        System.Threading.Tasks.Task.Run (() => {
-                            try {
-                                DeleteFolderDataObj requestObj = new DeleteFolderDataObj () { Id = folderID };
-                                var requestJson = Newtonsoft.Json.JsonConvert.SerializeObject (requestObj);
-                                var revertObj = MainPage.RequestHttps ("DeleteFolderData", requestJson);
-                                if (revertObj.StateCode == "SUCCESS") {
-                                    Application.RunOnMainThread (() => {
-                                        DatabackupShow ();
-                                    });
-                                }
-                            } catch { } finally {
-                                Application.RunOnMainThread (() => {
-                                    MainPage.Loading.Hide ();
-                                });
-                            }
-                        });
+                        DeleteFolderData (folderID);
                     }
                 };
                 alert.Show ();
@@ -450,6 +452,122 @@
         }
 
         /// <summary>
+        /// 鍒犻櫎鏌愪釜澶囦唤
+        /// </summary>
+        /// <param name="folderID"></param>
+        void DeleteFolderData (string folderID)
+        {
+            MainPage.Loading.Start ("Please wait...");
+            System.Threading.Tasks.Task.Run (() => {
+                try {
+                    var requestObj = new DelHomeAppGatewayNameObj () {
+                        BackupClassId = folderID,
+                        HomeId = UserConfig.Instance.CurrentRegion.Id,
+                        LoginAccessToken = MainPage.LoginUser.LoginTokenString
+                    };
+                    string urlHead = MainPage.RequestHttpsHost;
+                    if (requestObj.IsOtherAccountCtrl) {
+                        urlHead = UserConfig.Instance.MasterAccountRequestBaseUrl;
+                        requestObj.LoginAccessToken = UserConfig.Instance.MasterAccountToken;
+                    }
+
+                    //DeleteFolderDataObj requestObj = new DeleteFolderDataObj () { Id = folderID };
+                    var requestJson = Newtonsoft.Json.JsonConvert.SerializeObject (requestObj);
+                    var revertObj = MainPage.RequestHttps (API.DelHomeAppGatewayName, requestJson, urlHead);
+                    if (revertObj.StateCode.ToUpper () == "SUCCESS") {
+                        Application.RunOnMainThread (() => {
+                            DatabackupShow ();
+                        });
+                    } else {
+                        ShowDelErrorInfo (revertObj.StateCode);
+                    }
+                } catch { } finally {
+                    Application.RunOnMainThread (() => {
+                        MainPage.Loading.Hide ();
+                    });
+                }
+            });
+
+        }
+
+        //2020-01-11
+        /// <summary>
+        /// 鍒犻櫎鏌愪釜澶囦唤
+        /// </summary>
+        /// <param name="folderID"></param>
+        void DeleteFolderDataAfterUploadFailed (string folderID)
+        {
+            Application.RunOnMainThread (() => {
+                MainPage.Loading.Start ("Please wait...");
+            });
+        
+
+            try {
+                var requestObj = new DelHomeAppGatewayNameObj () {
+                    BackupClassId = folderID,
+                    HomeId = UserConfig.Instance.CurrentRegion.Id,
+                    LoginAccessToken = MainPage.LoginUser.LoginTokenString
+                };
+                string urlHead = MainPage.RequestHttpsHost;
+                if (requestObj.IsOtherAccountCtrl) {
+                    urlHead = UserConfig.Instance.MasterAccountRequestBaseUrl;
+                    requestObj.LoginAccessToken = UserConfig.Instance.MasterAccountToken;
+                }
+
+                //DeleteFolderDataObj requestObj = new DeleteFolderDataObj () { Id = folderID };
+                var requestJson = Newtonsoft.Json.JsonConvert.SerializeObject (requestObj);
+                var revertObj = MainPage.RequestHttps (API.DelHomeAppGatewayName, requestJson, urlHead);
+                if (revertObj.StateCode.ToUpper () == "SUCCESS") {
+                    //鍒犻櫎鎴愬姛
+                } else {
+                    //鍒犻櫎澶辫触
+                }
+            } catch { } finally {
+                Application.RunOnMainThread (() => {
+                    MainPage.Loading.Hide ();
+                });
+            }
+
+
+        }
+
+        /// <summary>
+        /// (2)ParameterOrEmpty,鍒欏搷搴斿瓧娈典腑[ErrorInfo]涓洪敊璇俊鎭�,ResponseData鍒欎负null
+        //3)NoLogin,鍒欏搷搴斿瓧娈典腑 [ErrorInfo] 涓洪敊璇俊鎭负 [鏃犳晥鐧诲綍Token!]
+        //(5)NoRecord,鍒欏搷搴斿瓧娈典腑 [ErrorInfo] 涓洪敊璇俊鎭负 [纭繚鎮ㄦ墍鎻愪氦 [椤圭洰 (浣忓畢)Id涓嶅瓨鍦�!]
+        //(6)BackupClassIdNoIsYou, 鍒欏搷搴斿瓧娈典腑 [ErrorInfo]涓洪敊璇俊鎭负 [鎮ㄦ墍澶囨敞鍚嶄富閿� = XXXX骞朵笉灞炰簬鎮ㄥ綋鍓嶄綇瀹�:XXXX]
+        //(7)NoPermission, 鍒欏搷搴斿瓧娈典腑 [ErrorInfo]涓洪敊璇俊鎭负 [鎮ㄥ苟涓嶅叿鏈夋鍒嗕韩鑰呮浣忓畢鐨勬潈闄�!]
+        //(8)InsufficientAuthority, 鍒欏搷搴斿瓧娈典腑 [ErrorInfo]涓洪敊璇俊鎭负 [鎮ㄥ苟涓嶅叿鏈夋鍒嗕韩鑰呮浣忓畢鐨勫畬鍏ㄦ帶鍒舵潈闄�!]
+        //(9)HomeIdAndTokenNoConsistent, 鍒欏搷搴斿瓧娈典腑 [ErrorInfo]涓洪敊璇俊鎭负 [鎮ㄥ綋鍓峊oken涓庝綘褰撳墠鎺у埗鐨凥omeId涓嶄竴鑷�!]
+        //(10)DeliveryBackNoUpdateDel, 鍒欏搷搴斿瓧娈典腑 [ErrorInfo]涓洪敊璇俊鎭负 [姝ゅ墠鎻愪氦鏂囦欢澶笽d鏄睘浜庝氦浠樺浠�, 涓嶈兘杩涜鏇存柊鍒犻櫎!]
+        /// </summary>
+        /// <param name="stateCodeStr"></param>
+        void ShowDelErrorInfo (string stateCodeStr)
+        {
+            string mes = "";
+            if (stateCodeStr == "HomeIdAndTokenNoConsistent") {
+                //Token 楠岃瘉澶辫触
+                mes = ErrorCode.HomeIdAndTokenNoConsistent;
+            } else if (stateCodeStr == "DeliveryBackNoUpdateDel") {
+                //浜や粯澶囦唤, 涓嶈兘鍒犻櫎!
+                mes = ErrorCode.DeliveryBackNoUpdateDel;
+            } else if (stateCodeStr == ErrorCode.NetworkError) {
+                mes = ErrorCode.NetworkError;
+            } else {
+                mes = ErrorCode.OperationFailed + ErrorCode.Reason + stateCodeStr;
+
+            }
+            if (!string.IsNullOrEmpty (mes)) {
+                Application.RunOnMainThread (() => {
+                    new Alert ("", mes, Language.StringByID (R.MyInternationalizationString.Close)).Show ();
+                });
+            }
+
+
+        }
+
+
+        /// <summary>
         /// 鐢ㄦ埛澶囦唤鏂囦欢
         /// </summary>
         void userBakeupFile (string groupName)
@@ -458,60 +576,177 @@
             //Alert alert = new Alert ("", Language.StringByID (R.MyInternationalizationString.SureToBackupYourthisFile), Language.StringByID (R.MyInternationalizationString.Cancel), Language.StringByID (R.MyInternationalizationString.Confrim));
 
             //alert.ResultEventHandler += (object sender2, bool e2) => {
-                //if (e2) {
-                    MainPage.Loading.Start ("Upload...");
+            //if (e2) {
+            MainPage.Loading.Start ("Upload...");
 
-                    System.Threading.Tasks.Task.Run (() => {
-                        try {
-                            AddFolderObj requestObj = new AddFolderObj () { LevelID = UserConfig.Instance.CurrentRegion.RegionID ,Name = groupName };
-                            var requestJson = Newtonsoft.Json.JsonConvert.SerializeObject (requestObj);
-                            var revertObj = MainPage.RequestHttps ("AddFolder", requestJson);
-                            if (revertObj.StateCode == "SUCCESS") {
-                                var addFolderID = Convert.ToInt32 (revertObj.ResponseData);
-                                var backuplist = IO.FileUtils.ReadFiles ();
-                                int index = 0;
-                                foreach (var fileName in backuplist) {
-                                    index++;
-                                    /// <summary>
-                                    /// 濡傛灉鏄壒娈婄殑娉ㄥ唽鐧婚檰鏂囦欢锛屽垯涓嶉渶瑕佸浠藉埌鏈嶅姟鍣�
-                                    /// </summary>
-                                    if (fileName == UserInfo.GlobalRegisterFile) {
-                                        continue;
-                                    }
-                                    AddUserBackupObj requestObj2 = new AddUserBackupObj () { LevelID = Convert.ToInt32(revertObj.ResponseData), Name = fileName, DetailByte = IO.FileUtils.ReadFile (fileName) };
-                                    var requestJson2 = Newtonsoft.Json.JsonConvert.SerializeObject (requestObj2);
-                                    var revertObj2 = MainPage.RequestHttps ("AddUserBackup", requestJson2);
-                                    if (revertObj2.StateCode == "SUCCESS") {
-                                        Application.RunOnMainThread (() => {
-                                            int pro = (int)(index * 1.0 / backuplist.Count * 100);
-                                            MainPage.Loading.Text = pro.ToString () + "%";
-                                        });
-                                    }
-                                }
-                            }
+            System.Threading.Tasks.Task.Run (() => {
+                try {
 
-                        } catch (Exception ex) {
-                            Shared.Application.RunOnMainThread (() => {
-                                new Alert ("", Language.StringByID (R.MyInternationalizationString.CheckInternet),
-                                           Language.StringByID (R.MyInternationalizationString.Close)).Show ();
-                            Console.WriteLine (ex.Message);
-                            });
-                        } finally {
-                            Shared.Application.RunOnMainThread (() => {
-                                MainPage.Loading.Hide ();
-                                DatabackupShow ();
-                            });
-                        }
+                    //if (string.IsNullOrEmpty (UserConfig.Instance.GatewayMAC)) return;
+                    //2020-01-11 娌$粦瀹歁AC涓嶅厑璁镐笂浼犲浠�
+                    if (!UserConfig.Instance.CheckHomeGateways () || string.IsNullOrEmpty (UserConfig.Instance.CurrentRegion.HomeGateways [0].GatewayUniqueId)) {
+                        MainPage.ShowAlertOnMainThread (ErrorCode.BindGatewayFirst);
+                        return;
+                    }
+
+                    var requestObj = new AddHomeAppGatewayNameObj () {
+                        HomeId = UserConfig.Instance.CurrentRegion.Id,
+                        BackupName = groupName,
+                        LoginAccessToken = MainPage.LoginUser.LoginTokenString,
+                        GatewayUniqueId = UserConfig.Instance.GatewayMAC
+                    };
+                    string urlHead = MainPage.RequestHttpsHost;
+                    if (requestObj.IsOtherAccountCtrl) {
+                        urlHead = UserConfig.Instance.MasterAccountRequestBaseUrl;
+                        requestObj.LoginAccessToken = UserConfig.Instance.MasterAccountToken;
+                    } 
+
+                    //AddFolderObj requestObj = new AddFolderObj () { LevelID = UserConfig.Instance.CurrentRegion.Id ,Name = groupName };
+                    var requestJson = Newtonsoft.Json.JsonConvert.SerializeObject (requestObj);
+                    var revertObj = MainPage.RequestHttps (API.AddHomeAppGatewayName, requestJson, urlHead);
+                    if (revertObj.StateCode.ToUpper () == "SUCCESS") {
+                        var DATA = Newtonsoft.Json.JsonConvert.DeserializeObject<AddBackupNameResult> (revertObj.ResponseData.ToString());
+                        var addFolderID = DATA.BackupClassId;
+                        UpLoadBackupFileToDB (addFolderID);
+
+
+                    } else {
+                        ShowAddHomeAppGatewayNameErrorInfo (revertObj.StateCode);
+
+                    }
+
+                } catch (Exception ex) {
+                    Shared.Application.RunOnMainThread (() => {
+                        new Alert ("", Language.StringByID (R.MyInternationalizationString.CheckInternet),
+                                   Language.StringByID (R.MyInternationalizationString.Close)).Show ();
+                        Utlis.WriteLine (ex.Message);
                     });
+                } finally {
+                    Shared.Application.RunOnMainThread (() => {
+                        MainPage.Loading.Hide ();
+                        DatabackupShow ();
+                    });
+                }
+            });
             //    }
             //};
             //alert.Show ();
         }
 
         /// <summary>
+        ///(1)Success 鍒橻璋冪敤姝ゆ帴鍙f搷浣滄垚鍔焆,ResponseData鍒欎负null
+        //(2)ParameterOrEmpty,鍒欏搷搴斿瓧娈典腑 [ErrorInfo] 涓洪敊璇俊鎭�, ResponseData鍒欎负null
+        //(3)NoLogin,鍒欏搷搴斿瓧娈典腑 [ErrorInfo] 涓洪敊璇俊鎭负 [鏃犳晥鐧诲綍Token!]
+        //(4)NoRecord,鍒欏搷搴斿瓧娈典腑 [ErrorInfo] 涓洪敊璇俊鎭负 [纭繚鎮ㄦ墍鎻愪氦 [椤圭洰 (浣忓畢)Id涓嶅瓨鍦�!]
+        //(5)Exist, 鍒欏搷搴斿瓧娈典腑 [ErrorInfo]涓洪敊璇俊鎭负 [鎮ㄥ湪浣忓畢: XXX, 褰撳墠澶囦唤鍚�: XXXX宸插瓨鍦�, 璇锋崲涓浠藉啀鎻愪氦!]
+        //(6)NoBind, 鍒欏搷搴斿瓧娈典腑 [ErrorInfo]涓洪敊璇俊鎭负 [缃戝叧鐨勫敮涓�Id = XXX锛屼笌浣忓畢: XXXX骞朵笉瀛樺湪缁戝畾鍏崇郴!]
+        //(7)NoPermission, 鍒欏搷搴斿瓧娈典腑 [ErrorInfo]涓洪敊璇俊鎭负 [鎮ㄥ苟涓嶅叿鏈夋鍒嗕韩鑰呮浣忓畢鐨勬潈闄�!]
+
+        //(8)InsufficientAuthority, 鍒欏搷搴斿瓧娈典腑 [ErrorInfo]涓洪敊璇俊鎭负 [鎮ㄥ苟涓嶅叿鏈夋鍒嗕韩鑰呮浣忓畢鐨勫畬鍏ㄦ帶鍒舵潈闄�!]
+        //(9)HomeIdAndTokenNoConsistent, 鍒欏搷搴斿瓧娈典腑 [ErrorInfo]涓洪敊璇俊鎭负 [鎮ㄥ綋鍓峊oken涓庝綘褰撳墠鎺у埗鐨凥omeId涓嶄竴鑷�!]
+        /// </summary>
+        /// <param name="stateCodeStr"></param>
+        void ShowAddHomeAppGatewayNameErrorInfo (string stateCodeStr)
+        {
+            string mes = "";
+            if (stateCodeStr == "Exist") {
+                //澶囦唤鍚嶅凡瀛樺湪
+                mes = ErrorCode.NameExist;
+            } else if (stateCodeStr == "HomeIdAndTokenNoConsistent") {
+                //Token 楠岃瘉澶辫触
+                mes = ErrorCode.HomeIdAndTokenNoConsistent;
+            } else if (stateCodeStr == ErrorCode.NetworkError) {
+                mes = ErrorCode.NetworkError;
+            } else {
+                mes = ErrorCode.OperationFailed + ErrorCode.Reason + stateCodeStr;
+
+            }
+            if (!string.IsNullOrEmpty (mes)) {
+                Application.RunOnMainThread (() => {
+                    new Alert ("", mes, Language.StringByID (R.MyInternationalizationString.Close)).Show ();
+                });
+            }
+
+
+        }
+
+        /// <summary>
+        /// 涓婁紶澶囦唤鏂囦欢
+        /// </summary>
+        /// <param name="mBackupClassId"></param>
+        void UpLoadBackupFileToDB (string mBackupClassId)
+        {
+
+            var backuplist = IO.FileUtils.ReadFiles ();
+            int index = 0;
+            foreach (var fileName in backuplist) {
+                index++;
+                /// <summary>
+                /// 濡傛灉鏄壒娈婄殑娉ㄥ唽鐧婚檰鏂囦欢锛屽垯涓嶉渶瑕佸浠藉埌鏈嶅姟鍣�
+                /// </summary>
+                if (fileName == UserInfo.GlobalRegisterFile) {
+                    continue;
+                }
+                //鏁寸悊鏁版嵁
+                var datainfo = new FileInfoData ();
+                datainfo.BackupFileName = fileName;
+                datainfo.BackupFileContent = Shared.IO.FileUtils.ReadFile (fileName);
+
+                var list = new List<FileInfoData> ();
+                list.Add (datainfo);
+
+                var upData = new UploadHomeAppGatewaySubFilesObj ();
+                upData.HomeId = UserConfig.Instance.CurrentRegion.Id;
+                upData.BackupClassId = mBackupClassId;
+                upData.UploadSubFileLists = list;
+                //鑾峰彇鎺у埗涓讳汉璐﹀彿鐨凾oken
+                upData.LoginAccessToken = MainPage.LoginUser.LoginTokenString;
+                string urlHead = MainPage.RequestHttpsHost;
+                if (upData.IsOtherAccountCtrl) {
+                    urlHead = UserConfig.Instance.MasterAccountRequestBaseUrl;
+                    upData.LoginAccessToken = UserConfig.Instance.MasterAccountToken;
+                }
+
+                //AddUserBackupObj requestObj2 = new AddUserBackupObj () { LevelID = Convert.ToInt32 (revertObj.ResponseData), Name = fileName, DetailByte = IO.FileUtils.ReadFile (fileName) };
+                var requestJson2 = Newtonsoft.Json.JsonConvert.SerializeObject (upData);
+                var revertObj2 = MainPage.RequestHttps (API.UploadHomeAppGatewaySubFiles, requestJson2, urlHead);
+                if (revertObj2.StateCode.ToUpper () == "SUCCESS") {
+                    //index++;
+                    Application.RunOnMainThread (() => {
+                        int pro = (int)(index * 1.0 / backuplist.Count * 100);
+                        MainPage.Loading.Text = pro.ToString () + "%";
+                    });
+                } else {
+                    //鎻愮ず閿欒
+                    break;
+                }
+            }
+            if (index != backuplist.Count) {
+                //2020-01-11
+                DeleteFolderDataAfterUploadFailed (mBackupClassId);
+                Shared.Application.RunOnMainThread (() => {
+                    new Alert ("", "Upload failed!", Language.StringByID (R.MyInternationalizationString.Close)).Show ();
+                    MainPage.Loading.Hide ();
+                });
+
+            }
+
+            //Shared.Application.RunOnMainThread (() => {
+            //    if (index == 0) {
+            //        new Alert ("", "Upload failed!", Language.StringByID (R.MyInternationalizationString.Close)).Show ();
+            //    }
+
+            //    MainPage.Loading.Hide ();
+            //});
+        }
+
+
+
+
+        /// <summary>
         /// 鐢ㄦ埛鎭㈠鏂囦欢
         /// </summary>
-        public void UserBakeupFileDetailedInformation (int folderID)
+        public void UserBakeupFileDetailedInformation (string BackupClassId)
         {
             //鏄惁纭畾鎭㈠璇ユ枃浠舵暟鎹俊鎭�
             Alert alert = new Alert ("", Language.StringByID (R.MyInternationalizationString.SureToRestoreFileInformation), Language.StringByID (R.MyInternationalizationString.Cancel), Language.StringByID (R.MyInternationalizationString.Confrim));
@@ -527,48 +762,134 @@
                                 }
                                 IO.FileUtils.DeleteFile (fileName);
                             }
+
+                            var requestObj2 = new GetHomeDataBackupUploadListPaggerObj ();
+                            requestObj2.HomeId = UserConfig.Instance.CurrentRegion.Id;
+                            requestObj2.BackupClassId = BackupClassId;
+                            requestObj2.PageSetting.PageSize = 999999;
+                            requestObj2.PageSetting.Page = 1;
+                            //鑾峰彇鎺у埗涓讳汉璐﹀彿鐨凾oken
+                            requestObj2.LoginAccessToken = MainPage.LoginUser.LoginTokenString;
+                            string urlHead = MainPage.RequestHttpsHost;
+                            if (requestObj2.IsOtherAccountCtrl) {
+                                urlHead = UserConfig.Instance.MasterAccountRequestBaseUrl;
+                                requestObj2.LoginAccessToken = UserConfig.Instance.MasterAccountToken;
+                            }
+
                             //鑾峰彇鎵�鏈夋枃浠剁粍鍚�
-                            var requestObj2 = new UserBackupListObj () { LevelID = folderID };
+                            //var requestObj2 = new UserBackupListObj () { LevelID = folderID };
                             var requestJson2 = Newtonsoft.Json.JsonConvert.SerializeObject (requestObj2);
-                            var revertObj2 = MainPage.RequestHttps ("UserBackupList", requestJson2);
-                            if (revertObj2.StateCode == "SUCCESS") {
-                                var responseDataObj = Newtonsoft.Json.JsonConvert.DeserializeObject<List<BackupInfoRes>> (revertObj2.ResponseData.ToString ());
+                            var revertObj2 = MainPage.RequestHttps (API.GetHomeDataBackupUploadListPagger, requestJson2, urlHead);
+                            if (revertObj2.StateCode.ToUpper() == "SUCCESS") {
+                                var fileListData = Newtonsoft.Json.JsonConvert.DeserializeObject<LoadBackInfoResult> (revertObj2.ResponseData.ToString ());
+                                var responseDataObj = fileListData.PageData;
+                                ////鑾峰彇鏂囦欢鍚嶅瓧
+                                //List<string> listFileName = new List<string> ();
+                                //foreach (LoadBackupFileNameInfo file in fileListData.PageData) {
+                                //    listFileName.Add (file.BackupFileName);
+                                //}
+                                //var responseDataObj = Newtonsoft.Json.JsonConvert.DeserializeObject<List<BackupInfoRes>> (revertObj2.ResponseData.ToString ());
+
+                                var mDownLoad = new DownloadSomeDataBackupObj ();
+                                mDownLoad.HomeId = UserConfig.Instance.CurrentRegion.Id;
+                                mDownLoad.BackupClassId = BackupClassId;
+                                //鑾峰彇鎺у埗涓讳汉璐﹀彿鐨凾oken
+                                mDownLoad.LoginAccessToken = MainPage.LoginUser.LoginTokenString;
+                                string mUrlHead = MainPage.RequestHttpsHost;
+                                if (mDownLoad.IsOtherAccountCtrl) {
+                                    urlHead = UserConfig.Instance.MasterAccountRequestBaseUrl;
+                                    mDownLoad.LoginAccessToken = UserConfig.Instance.MasterAccountToken;
+                                }
+
                                 int index = 0;
+                                //foreach (var file in responseDataObj) {
+                                //    if (file.BackupFileName == "null" || "UserConfig" == file.BackupFileName) {
+                                //        continue;
+                                //    }
+                                //    mDownLoad.BackupFileName = file.BackupFileName;
+                                //    //var requestObj3 = new BackupDetailObj () { Id = file.Id };
+                                //    var requestJson3 = Newtonsoft.Json.JsonConvert.SerializeObject (mDownLoad);
+                                //    var revertObj3 = MainPage.RequestHttpsReturnByte (API.DownloadSomeDataBackup, requestJson3, false, mUrlHead);
+                                //    if (revertObj3 != null) {
+                                //        index++;
+                                //        IO.FileUtils.WriteFileByBytes (file.BackupFileName, revertObj3);
+                                //        Application.RunOnMainThread (() => {
+                                //            int pro = (int)(index * 1.0 / responseDataObj.Count * 100);
+                                //            MainPage.Loading.Text = pro.ToString () + "%";
+                                //        });
+                                //    } else {
+
+
+                                //    }
+
+                                //    //if (revertObj3.StateCode.ToUpper() == "SUCCESS") {
+                                //    //    var jsonBytes = Newtonsoft.Json.JsonConvert.SerializeObject (revertObj3.ResponseData);
+                                //    //    var byresss = Newtonsoft.Json.JsonConvert.DeserializeObject<byte[]> (jsonBytes);
+                                //    //    index++;
+                                //    //    //鏂板鍔犱簡浣忓畢鍖哄煙锛屾棫鐨勫浠芥暟鎹病鏈夊尯鍩熷睘鎬э紝褰撹幏鍙栧埌杩欎釜鏂囦欢鏃讹紝鎶婂綋鍓嶅埌浣忓畢淇℃伅鏇村埌褰撳墠澶囦唤鍒版暟鎹噷闈�
+                                //    //    if ("UserConfig" == file.BackupFileName){
+                                //    //        //var regionTemp = UserConfig.Instance.CurrentRegion;
+                                //    //        //UserConfig.Instance.RefreshUserConfig ();
+                                //    //        //UserConfig.Instance.CurrentRegion = regionTemp;
+                                //    //        //UserConfig.Instance.SaveUserConfig ();
+                                //    //        ////UserConfig.Instance.GatewayList
+                                //    //        continue;
+                                //    //    }
+                                //    //    IO.FileUtils.WriteFileByBytes (file.BackupFileName, byresss);
+                                //    //    Application.RunOnMainThread (() => {
+                                //    //        int pro = (int)(index * 1.0 / responseDataObj.Count * 100);
+                                //    //        MainPage.Loading.Text = pro.ToString () + "%";
+                                //    //    });
+                                //    //} else {
+                                //    //    //閿欒鎻愮ず
+
+                                //    //}
+                                //}
                                 foreach (var file in responseDataObj) {
-                                    if (file.FileName == "null" || "UserConfig" == file.FileName) {
+                                    index++;
+                                    if (file.BackupFileName == "null" || "UserConfig" == file.BackupFileName) {
                                         continue;
                                     }
-
-                                    var requestObj3 = new BackupDetailObj () { Id = file.Id };
-                                    var requestJson3 = Newtonsoft.Json.JsonConvert.SerializeObject (requestObj3);
-                                    var revertObj3 = MainPage.RequestHttps ("BackupDetail", requestJson3);
-                                    if (revertObj3.StateCode == "SUCCESS") {
-                                        var jsonBytes = Newtonsoft.Json.JsonConvert.SerializeObject (revertObj3.ResponseData);
-                                        var byresss = Newtonsoft.Json.JsonConvert.DeserializeObject<byte[]> (jsonBytes);
-                                        index++;
-                                        //鏂板鍔犱簡浣忓畢鍖哄煙锛屾棫鐨勫浠芥暟鎹病鏈夊尯鍩熷睘鎬э紝褰撹幏鍙栧埌杩欎釜鏂囦欢鏃讹紝鎶婂綋鍓嶅埌浣忓畢淇℃伅鏇村埌褰撳墠澶囦唤鍒版暟鎹噷闈�
-                                        if ("UserConfig" == file.FileName){
-                                            //var regionTemp = UserConfig.Instance.CurrentRegion;
-                                            //UserConfig.Instance.RefreshUserConfig ();
-                                            //UserConfig.Instance.CurrentRegion = regionTemp;
-                                            //UserConfig.Instance.SaveUserConfig ();
-                                            ////UserConfig.Instance.GatewayList
-                                            continue;
-                                        }
-                                        IO.FileUtils.WriteFileByBytes (file.FileName, byresss);
+                                    mDownLoad.BackupFileName = file.BackupFileName;
+                                    //var requestObj3 = new BackupDetailObj () { Id = file.Id };
+                                    var requestJson3 = Newtonsoft.Json.JsonConvert.SerializeObject (mDownLoad);
+                                    var revertObj3 = MainPage.RequestHttpsReturnByte (API.DownloadSomeDataBackup, requestJson3, false, mUrlHead);
+                                    if (revertObj3 != null) {
+                                     
+                                        IO.FileUtils.WriteFileByBytes (file.BackupFileName, revertObj3);
                                         Application.RunOnMainThread (() => {
                                             int pro = (int)(index * 1.0 / responseDataObj.Count * 100);
                                             MainPage.Loading.Text = pro.ToString () + "%";
                                         });
+                                    } else {
+                                        break;
                                     }
+
                                 }
+
+
+                                if (index != responseDataObj.Count) {
+                                    //鍒犻櫎宸茬粡涓嬭浇鐨勬枃浠朵釜鏁伴敊璇�
+                                    var fileNames2 = IO.FileUtils.ReadFiles ();
+                                    foreach (var fileName in fileNames2) {
+                                        if (fileName == UserInfo.GlobalRegisterFile) {
+                                            continue;
+                                        }
+                                        IO.FileUtils.DeleteFile (fileName);
+                                    }
+
+                                    MainPage.ShowAlertOnMainThread ("Download failed!");
+
+                                    return;
+                                }
+
                                 MainPage.LoginUser.SaveUserInfo ();
                                 Room.InitAllRoom ();
                                 Application.RunOnMainThread (() => {
                                     this.RemoveFromParent ();
                                     CommonPage.IsRemote = false;
                                     UserMiddle.Init ();
-                                    EquipmentPublicClass.CheckLinkRemote (2);
+                                    EquipmentPublicClass.CheckLinkRemote (UserConfig.Instance.internetStatus);
                                     new Alert ("", Language.StringByID (R.MyInternationalizationString.RestoreFileIsSuccessfull),
                                    Language.StringByID (R.MyInternationalizationString.Close)).Show ();
                                 });
@@ -583,7 +904,7 @@
                                 new Alert ("", Language.StringByID (R.MyInternationalizationString.CheckInternet),
                                            Language.StringByID (R.MyInternationalizationString.Close)).Show ();
                             });
-                            Console.WriteLine (ex.ToString());
+                            Utlis.WriteLine (ex.ToString());
                         } finally {
                             Shared.Application.RunOnMainThread (() => {
                                 MainPage.Loading.Hide ();

--
Gitblit v1.8.0