陈嘉乐
2020-01-08 bbc74a6dae2e90a811b2507c5896fe89aa29ccc0
Crabtree/SmartHome/UI/SimpleControl/Phone/Register/HomeListView.cs
@@ -81,12 +81,20 @@
                    foreach (var home in UserConfig.Instance.HomeLists) {
                        List<GatewayRes> gatewayList = null;
                        var requestObj3 = new GatewayByRegionListObj () { RegionID = home.RegionID };
                        //var requestObj3 = new GatewayByRegionListObj () { RegionID = home.Id };
                        //var requestJson3 = Newtonsoft.Json.JsonConvert.SerializeObject (requestObj3);
                        var requestObj3 = new GetSingleHomeGatewayPaggerObj ();
                        requestObj3.ReqDto.LoginAccessToken = MainPage.LoginUser.LoginTokenString;
                        requestObj3.ReqDto.HomeId = UserConfig.Instance.CurrentRegion.Id;
                        requestObj3.ReqDto.PageSetting.Page = 1;
                        requestObj3.ReqDto.PageSetting.PageSize = 999;
                        //var requestObj3 = new GatewayByRegionListObj () { RegionID = UserConfig.Instance.CurrentRegion.Id };
                        var requestJson3 = Newtonsoft.Json.JsonConvert.SerializeObject (requestObj3);
                        var revertObj3 = MainPage.RequestHttps ("GatewayByRegionList", requestJson3, true, false);
                        if (revertObj3.StateCode == "SUCCESS") {
                            var responseDataObj = Newtonsoft.Json.JsonConvert.DeserializeObject<List<GatewayRes>> (revertObj3.ResponseData.ToString ());
                            gatewayList = responseDataObj;
                        var revertObj3 = MainPage.RequestHttps (API.GetSingleHomeGatewayPagger, requestJson3);
                        if (revertObj3.StateCode.ToUpper() == "SUCCESS") {
                            var infoResult = Newtonsoft.Json.JsonConvert.DeserializeObject<GetGatewayResult> (revertObj3.ResponseData.ToString ());
                            gatewayList = infoResult.PageData;
                            if (gatewayList != null) {
                                Application.RunOnMainThread (() => {
                                    addRow (home, VerticalScrolViewMiddle, gatewayList.Count == 0 ? null : gatewayList [0]);
@@ -126,7 +134,7 @@
        {
            string gatewayMAC = "";
            if (gatewayObj != null) {
                gatewayMAC = gatewayObj.MAC;
                gatewayMAC = gatewayObj.GatewayUniqueId;
            }
            var rowView = new RowLayout () {
                Height = Application.GetRealHeight (110),
@@ -147,13 +155,13 @@
                Gravity = Gravity.CenterVertical,
                UnSelectedImagePath = "Item/Point.png",
                SelectedImagePath = "Item/Point.png",
                Visible = home.RegionID != UserConfig.Instance.CurrentRegion.RegionID
                Visible = home.Id != UserConfig.Instance.CurrentRegion.Id
            };
            rowView.AddChidren (btnPoint);
            var btnName = new Button () {
                Width = Application.GetRealWidth (350),
                Text = home.RegionName,
                Text = home.Name,
                TextAlignment = TextAlignment.CenterLeft,
                X = Application.GetRealWidth (90),
                TextColor = SkinStyle.Current.TextColor1,
@@ -174,7 +182,7 @@
            };
            rowView.AddChidren (rightButton1);
            EventHandler<MouseEventArgs> eHandler = (sender, e) => {
                if (home.RegionID == UserConfig.Instance.CurrentRegion.RegionID) {
                if (home.Id == UserConfig.Instance.CurrentRegion.Id) {
                    //UserConfig.Instance.GatewayMAC = gatewayMAC;
                    goSearchView ();
                } else {
@@ -190,7 +198,7 @@
            rowView.MouseUpEventHandler += eHandler;
            rightButton1.MouseUpEventHandler += eHandler;
            if (home.RegionID == UserConfig.Instance.CurrentRegion.RegionID) {
            if (home.Id == UserConfig.Instance.CurrentRegion.Id) {
                Button btnCheck = new Button () {
                    X = Application.GetRealWidth (20),
                    Y = Application.GetRealHeight (25),
@@ -200,7 +208,7 @@
                };
                rowView.AddChidren (btnCheck);
            }
            if (UserConfig.Instance.CurrentRegion.RegionID != home.RegionID && MainPage.LoginUser.AccountType != 1) {
            if (UserConfig.Instance.CurrentRegion.Id != home.Id && MainPage.LoginUser.AccountType != 1) {
                Button btnDel = new Button () {
                    TextID = R.MyInternationalizationString.Del,
                    BackgroundColor = SkinStyle.Current.DelColor,
@@ -293,16 +301,18 @@
                                });
                                var requestObj = new LoginObj () { Account = MainPage.LoginUser.AccountString, Password = password };
                                var requestJson = Newtonsoft.Json.JsonConvert.SerializeObject (requestObj);
                                var revertObj = MainPage.RequestHttps ("Login", requestJson, false, false);
                                if (revertObj.StateCode == "SUCCESS") {
                                    var requestObj2 = new DeleteHomeObj () { Id = home.RegionID };
                                var revertObj = MainPage.RequestHttps (API.Login, requestJson, false, false);
                                if (revertObj.StateCode.ToUpper() == "SUCCESS") {
                                    var requestObj2 = new DelHomeObj () { HomeId = home.Id };
                                    var requestJson2 = Newtonsoft.Json.JsonConvert.SerializeObject (requestObj2);
                                    var revertObj2 = MainPage.RequestHttps ("DeleteHome", requestJson2);
                                    if (revertObj2.StateCode == "SUCCESS") {
                                    var revertObj2 = MainPage.RequestHttps (API.DelHome, requestJson2);
                                    if (revertObj2.StateCode.ToUpper () == "SUCCESS") {
                                        Application.RunOnMainThread (() => {
                                            //new Alert ("", Language.StringByID (R.MyInternationalizationString.DeleteSuccess), Language.StringByID (R.MyInternationalizationString.Close)).Show ();
                                            ShowHomeList ();
                                        });
                                    } else {
                                        ShowDelHomeErrorInfo (revertObj2.StateCode);
                                    }
                                }
                            } catch {
@@ -318,6 +328,28 @@
                    dialog.Show ();
                };
            }
        }
        void ShowDelHomeErrorInfo (string stateCodeStr)
        {
            string mes = "";
            if (stateCodeStr == "NoLogin") {
                mes = ErrorCode.NoLogin;
            } else if (stateCodeStr == "CurrentHomeExixtsGatewayBind") {
                mes = ErrorCode.HomeIdAndTokenNoConsistent;
            } else if (stateCodeStr == ErrorCode.NetworkError) {
                mes = ErrorCode.NetworkError;
            } else {
                //RequestServerFailed
                //mes = ErrorCode.AddFailed;
                mes = ErrorCode.OperationFailed + ErrorCode.Reason + stateCodeStr;
            }
            if (!string.IsNullOrEmpty (mes)) {
                Application.RunOnMainThread (() => {
                    new Alert ("", mes, Language.StringByID (R.MyInternationalizationString.Close)).Show ();
                });
            }
        }
@@ -344,10 +376,10 @@
                try {
                    var backuplist = IO.FileUtils.ReadFiles ();
                    int index = 0;
                    if (string.IsNullOrEmpty (UserConfig.Instance.CurrentRegion.RegionName)) {
                    if (string.IsNullOrEmpty (UserConfig.Instance.CurrentRegion.Name)) {
                        UserConfig.Instance.CurrentRegion = UserConfig.Instance.HomeLists [0];
                    }
                    string oldRegionRootPath = IO.FileUtils.CreateRegionBackup (UserConfig.Instance.CurrentRegion.RegionName);
                    string oldRegionRootPath = IO.FileUtils.CreateRegionBackup (UserConfig.Instance.CurrentRegion.Name);
                    IO.FileUtils.DeleteRegionFiles (oldRegionRootPath);
                    foreach (var fileName in backuplist) {
                        System.IO.FileInfo fileInfo = new System.IO.FileInfo (IO.FileUtils.RootPath + fileName);
@@ -362,7 +394,7 @@
                        });
                    }
                    IO.FileUtils.DeleteAllFile ();
                    string newRegionRootPath = IO.FileUtils.CreateRegionBackup (home.RegionName);
                    string newRegionRootPath = IO.FileUtils.CreateRegionBackup (home.Name);
                    IO.FileUtils.RestoreRegionFiles (newRegionRootPath);
                    UserConfig.Instance.CurrentRegion = home;
                    //UserConfig.Instance.GatewayMAC = gatewayMAC;
@@ -398,7 +430,7 @@
        {
            string gatewayMAC = "";
            if (gatewayObj != null) {
                gatewayMAC = gatewayObj.MAC;
                gatewayMAC = gatewayObj.GatewayUniqueId;
            }
            // 是否是修改已经存在的住宅
@@ -457,7 +489,7 @@
                        Radius = 5,
                        BorderColor = SkinStyle.Current.BorderColor,
                        BorderWidth = 2,
                        Text = home.RegionName,
                        Text = home.Name,
                    };
                    dialogBodyView.AddChidren (etZoneName);
                    if (MainPage.LoginUser.AccountType == 1) {
@@ -541,7 +573,7 @@
                    Button btnOption = new Button () {
                        X = btnClose.Right + Application.GetRealWidth (2),
                        Width = Application.GetRealWidth (250),
                        TextID = home.RegionID != UserConfig.Instance.CurrentRegion.RegionID ? R.MyInternationalizationString.Change : R.MyInternationalizationString.SAVE,
                        TextID = home.Id != UserConfig.Instance.CurrentRegion.Id ? R.MyInternationalizationString.Change : R.MyInternationalizationString.SAVE,
                        TextColor = SkinStyle.Current.DialogTextColor,
                        BackgroundColor = SkinStyle.Current.DialogTitle,
                    };
@@ -574,24 +606,24 @@
                                        return;
                                    }
                                }
                                home.RegionName = etZoneName.Text.Trim ();
                                AddHome (home.RegionName, macString);
                                home.Name = etZoneName.Text.Trim ();
                                AddHome (home.Id, macString);
                            } else {
                                //修改住宅名称
                                if (home.RegionName != etZoneName.Text.Trim ()) {
                                    home.RegionName = etZoneName.Text.Trim ();
                                    ChangeHomeName (home.RegionID, home.RegionName);
                                if (home.Name != etZoneName.Text.Trim ()) {
                                    home.Name = etZoneName.Text.Trim ();
                                    ChangeHomeName (home.Id, home.Name);
                                }
                                //修改住宅绑定的mac
                                if (macString != gatewayMAC) {
                                    ChangeHomeMACByHomeId (home.RegionID, macString);
                                    ChangeHomeMACByHomeId (home.Id, macString, gatewayMAC);
                                }
                            }
                        }
                        dialog.Close ();
                    };
                    etZoneName.TextChangeEventHandler += (adsf, lkadf) => {
                        if (etZoneName.Text.Trim () != home.RegionName) {
                        if (etZoneName.Text.Trim () != home.Name) {
                            btnOption.TextID = R.MyInternationalizationString.SAVE;
                        } else {
                            btnOption.TextID = R.MyInternationalizationString.Change;
@@ -607,26 +639,92 @@
        /// </summary>
        /// <param name="homeName">Home name.</param>
        /// <param name="macString">Mac string.</param>
        void AddHome (string homeName, string macString)
        void AddHome (string HomeId, string macString)
        {
            var requestObj21 = new AddHomeAndGatewayByONObj () { Region = homeName, MAC = macString };
            var requestJson21 = Newtonsoft.Json.JsonConvert.SerializeObject (requestObj21);
            var revertObj21 = MainPage.RequestHttps ("AddHomeAndGatewayByON", requestJson21);
            if (revertObj21.StateCode == "SUCCESS") {
            var mBindMacObj = new BindGatewayToHomeObj () {
                LoginAccessToken = MainPage.LoginUser.LoginTokenString,
                HomeId = HomeId,
            };
            mBindMacObj.BindGateways.Add (macString);
            var requestJson = Newtonsoft.Json.JsonConvert.SerializeObject (mBindMacObj);
            //var requestObj21 = new AddHomeAndGatewayByONObj () { Region = homeName, MAC = macString };
            //var requestJson21 = Newtonsoft.Json.JsonConvert.SerializeObject (requestObj21);
            var revertObj21 = MainPage.RequestHttps (API.BindGatewayToHome, requestJson);
            if (revertObj21.StateCode.ToUpper () == "SUCCESS") {
                new Alert ("", Language.StringByID (R.MyInternationalizationString.addsuccess), Language.StringByID (R.MyInternationalizationString.Close)).Show ();
                ShowHomeList ();
            } else {
                ShowBindGatewayToHomeErrorInfo (revertObj21.StateCode);
            }
        }
        /// <summary>
        ///
        /// </summary>
        /// <param name="stateCodeStr"></param>
        void ShowBindGatewayToHomeErrorInfo (string stateCodeStr)
        {
            //string mes = "";
            ////2020-01-06 待补充
            //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 ();
            //    });
            //}
            Application.RunOnMainThread (() => {
                new Alert ("", "Bind failed!", Language.StringByID (R.MyInternationalizationString.Close)).Show ();
            });
        }
        void loadHomeLists ()
        {
            var requestJson2 = Newtonsoft.Json.JsonConvert.SerializeObject (new HomeListObj ());
            var revertObj2 = MainPage.RequestHttps ("HomeList", requestJson2);
            if (revertObj2.StateCode == "SUCCESS") {
                var responseDataObj = Newtonsoft.Json.JsonConvert.DeserializeObject<List<RegionInfoRes>> (revertObj2.ResponseData.ToString ());
                UserConfig.Instance.HomeLists = responseDataObj;
                UserConfig.Instance.SaveUserConfig ();
            var requestObj2 = new GetHomePagerObj ();
            requestObj2.ReqDto.LoginAccessToken = MainPage.LoginUser.LoginTokenString;
            var requestJson2 = Newtonsoft.Json.JsonConvert.SerializeObject (requestObj2);
            var revertObj2 = MainPage.RequestHttps (API.GetHomePager, requestJson2);
            if (revertObj2.StateCode.ToUpper() == "SUCCESS") {
                var mResidenceRes = Newtonsoft.Json.JsonConvert.DeserializeObject<ResidenceRes> (revertObj2.ResponseData.ToString ());
                if (mResidenceRes.PageData != null && mResidenceRes.PageData.Count > 0) {
                    UserConfig.Instance.HomeLists = mResidenceRes.PageData;
                    UserConfig.Instance.SaveUserConfig ();
                }
            } else {
                ShowGetHomePagerErrorInfo (revertObj2.StateCode);
            }
        }
        /// <summary>
        ///
        /// </summary>
        /// <param name="stateCodeStr"></param>
        void ShowGetHomePagerErrorInfo (string stateCodeStr)
        {
            string mes = "";
            //2020-01-06 待补充
            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>
@@ -634,46 +732,112 @@
        /// </summary>
        void ChangeHomeName (string homeID, string homeName)
        {
            if (UserConfig.Instance.CurrentRegion.RegionName == homeName)
            if (UserConfig.Instance.CurrentRegion.Name == homeName)
                return;
            var requestObj2 = new EditHomeObj () { Id = homeID, Name = homeName };
            var requestObj2 = new EditHomeObj () { HomeId = homeID, Name = homeName };
            var requestJson2 = Newtonsoft.Json.JsonConvert.SerializeObject (requestObj2);
            var revertObj2 = MainPage.RequestHttps ("EditHome", requestJson2);
            if (revertObj2.StateCode == "SUCCESS") {
            var revertObj2 = MainPage.RequestHttps (API.EditHome, requestJson2);
            if (revertObj2.StateCode.ToUpper () == "SUCCESS") {
                new Alert ("", Language.StringByID (R.MyInternationalizationString.AmendTheSuccess), Language.StringByID (R.MyInternationalizationString.Close)).Show ();
                UserConfig.Instance.SaveUserConfig ();
                this.ShowHomeList ();
                if (homeID == UserConfig.Instance.CurrentRegion.RegionID) {
                    IO.FileUtils.ReNameFoler (UserConfig.Instance.CurrentRegion.RegionName, homeName);
                    UserConfig.Instance.CurrentRegion.RegionName = homeName;
                if (homeID == UserConfig.Instance.CurrentRegion.Id) {
                    IO.FileUtils.ReNameFoler (UserConfig.Instance.CurrentRegion.Name, homeName);
                    UserConfig.Instance.CurrentRegion.Name = homeName;
                }
            } else {
                ShowEditHomeErrorInfo (revertObj2.StateCode);
            }
        }
        void ChangeHomeMACByHomeId (string homeId, string macString)
        void ShowEditHomeErrorInfo (string stateCodeStr)
        {
            var requestJson = Newtonsoft.Json.JsonConvert.SerializeObject (new EditMACByHomeId { RegionID = homeId, MAC = macString, IsReBind = false });
            var respone = MainPage.RequestHttps ("EditMACByHomeId", requestJson);
            if (respone.StateCode == "SUCCESS") {
            string mes = "";
            if (stateCodeStr == "NoLogin") {
                mes = ErrorCode.NoLogin;
            } else if (stateCodeStr == "Exist") {
                mes = ErrorCode.NameExist;
            } else if (stateCodeStr == "HomeIdAndTokenNoConsistent") {
                mes = ErrorCode.HomeIdAndTokenNoConsistent;
            } else if (stateCodeStr == ErrorCode.NetworkError) {
                mes = ErrorCode.NetworkError;
            } else {
                //RequestServerFailed
                //mes = ErrorCode.AddFailed;
                mes = ErrorCode.OperationFailed + ErrorCode.Reason + stateCodeStr;
            }
            if (!string.IsNullOrEmpty (mes)) {
                Application.RunOnMainThread (() => {
                    new Alert ("", mes, Language.StringByID (R.MyInternationalizationString.Close)).Show ();
                });
            }
        }
        void ChangeHomeMACByHomeId (string homeId, string macString, string oldMacString)
        {
            var mUpdateMacObj = new UpdateMacObj () {
                LoginAccessToken = MainPage.LoginUser.LoginTokenString,
                HomeId = homeId,
                NewMac = macString,
                OldMac = oldMacString
            };
            var requestJson = Newtonsoft.Json.JsonConvert.SerializeObject (mUpdateMacObj);
            //var requestJson = Newtonsoft.Json.JsonConvert.SerializeObject (new EditMACByHomeId { RegionID = homeId, MAC = macString, IsReBind = false });
            var respone = MainPage.RequestHttps (API.UpdateMac, requestJson);
            if (respone.StateCode.ToUpper() == "SUCCESS") {
                new Alert ("", Language.StringByID (R.MyInternationalizationString.AmendTheSuccess), Language.StringByID (R.MyInternationalizationString.Close)).Show ();
                UserConfig.Instance.SaveUserConfig ();
                this.ShowHomeList ();
            } else {
                //2020-01-06 错误提示
                ShowUpdateMacErrorInfo (respone.StateCode);
            }
        }
        /// <summary>
        /// 修改住宅mac
        //*    (1)Success 则 [调用此接口操作成功], ResponseData则为null<br/>
        //*    (2)ParameterOrEmpty,则响应字段中 [ErrorInfo] 为错误信息, ResponseData则为null<br/>
        //*    (3)NoLogin,则响应字段中 [ErrorInfo] 为错误信息为 [无效登录Token!]<br/>
        //*    (4)NoRecord,则响应字段中 [ErrorInfo] 为错误信息为 [未到相关记录, 请确认您提交参数是否正确!]<br/>
        //*    (5)NoBind,则响应字段中 [ErrorInfo] 为错误信息为 [当前提交HomeId与当前OldMac尚不存在绑定关系!]<br/>
        /// </summary>
        void ChangeHomeMAC (int macID, string macString)
        /// <param name="stateCodeStr"></param>
        void ShowUpdateMacErrorInfo (string stateCodeStr)
        {
            var requestObj2 = new EditMACByONObj { Id = macID, MAC = macString };
            var requestJson2 = Newtonsoft.Json.JsonConvert.SerializeObject (requestObj2);
            var revertObj2 = MainPage.RequestHttps ("EditMACByON", requestJson2);
            if (revertObj2.StateCode == "SUCCESS") {
                new Alert ("", Language.StringByID (R.MyInternationalizationString.AmendTheSuccess), Language.StringByID (R.MyInternationalizationString.Close)).Show ();
                UserConfig.Instance.SaveUserConfig ();
                this.ShowHomeList ();
            string mes = "";
            //2020-01-06 代补充
            if (stateCodeStr == "NoBind") {
                mes = ErrorCode.NoBind;
            } 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>
        ///// 修改住宅mac
        ///// </summary>
        //void ChangeHomeMAC (int macID, string macString)
        //{
        //    var requestObj2 = new EditMACByONObj { Id = macID, MAC = macString };
        //    var requestJson2 = Newtonsoft.Json.JsonConvert.SerializeObject (requestObj2);
        //    var revertObj2 = MainPage.RequestHttps ("EditMACByON", requestJson2);
        //    if (revertObj2.StateCode.ToUpper() == "SUCCESS") {
        //        new Alert ("", Language.StringByID (R.MyInternationalizationString.AmendTheSuccess), Language.StringByID (R.MyInternationalizationString.Close)).Show ();
        //        UserConfig.Instance.SaveUserConfig ();
        //        this.ShowHomeList ();
        //    }
        //}
    }
}