From f14dcfd967404e197e7ec995ca8d6f2b090d3b7d Mon Sep 17 00:00:00 2001
From: xm <1271024303@qq.com>
Date: 星期五, 11 九月 2020 09:16:59 +0800
Subject: [PATCH] 优化多功能面板:绑定温湿度传感器目标,和设备列表回路显示。优化数据矫正功能温湿度度不设置的情况。优化门锁时间设置最后一天和最后最后一个月的时间显示等 细节

---
 ZigbeeApp/Shared/Phone/UserCenter/Residence/ResidenceListForm.cs |  812 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 812 insertions(+), 0 deletions(-)

diff --git a/ZigbeeApp/Shared/Phone/UserCenter/Residence/ResidenceListForm.cs b/ZigbeeApp/Shared/Phone/UserCenter/Residence/ResidenceListForm.cs
new file mode 100755
index 0000000..50c2d74
--- /dev/null
+++ b/ZigbeeApp/Shared/Phone/UserCenter/Residence/ResidenceListForm.cs
@@ -0,0 +1,812 @@
+锘縰sing Shared.Common;
+using System;
+using System.Collections.Generic;
+
+namespace Shared.Phone.UserCenter.Residence
+{
+    /// <summary>
+    /// 浣忓畢绠$悊鐨勭敾闈⑩槄
+    /// </summary>
+    public class ResidenceListForm : EditorCommonForm
+    {
+        #region 鈻� 鍙橀噺澹版槑___________________________
+
+        /// <summary>
+        /// 鍒楄〃鎺т欢
+        /// </summary>
+        private VerticalListControl listView = null;
+        /// <summary>
+        /// 浣忓畢鏁版嵁(鏈夌綉鏃朵娇鐢�)
+        /// </summary>
+        private Dictionary<string, Common.ResponseEntity.ResidenceObj> dicResidenceData = null;
+        /// <summary>
+        /// 浣忓畢鏁版嵁(鏃犵綉鏃朵娇鐢�)
+        /// </summary>
+        private List<House> listLocalHouse = null;
+
+        #endregion
+
+        #region 鈻� 鍒濆鍖朹____________________________
+
+        /// <summary>
+        /// 鐢婚潰鏄剧ず(搴曞眰浼氬浐瀹氳皟鐢ㄦ鏂规硶锛屽�熶互瀹屾垚鐢婚潰鍒涘缓)
+        /// </summary>
+        public void ShowForm()
+        {
+            //璁剧疆鏍囬淇℃伅
+            base.SetTitleText(Language.StringByID(R.MyInternationalizationString.ResidenceManagement));
+
+            //铏氭嫙浣忓畢鏃犳硶鏂板缓浣忓畢
+            if (Common.Config.Instance.Home.IsVirtually == false)
+            {
+                //鍙充笂娣诲姞鎸夐挳
+                var btnTopIcon = new MostRightIconControl(69, 69);
+                btnTopIcon.UnSelectedImagePath = "Item/Add.png";
+                topFrameLayout.AddChidren(btnTopIcon);
+                btnTopIcon.InitControl();
+                btnTopIcon.ButtonClickEvent += (sender, e) =>
+                {
+                    //鏄剧ず娣诲姞浣忓畢鍚嶇О鐨勭敾闈�
+                    this.ShowAddNameForm();
+                };
+            }
+
+            //鍒濆鍖栦腑閮ㄦ帶浠�
+            this.InitMiddleFrame();
+        }
+
+        /// <summary>
+        /// 鍒濆鍖栦腑閮ㄦ帶浠�
+        /// </summary>
+        private void InitMiddleFrame()
+        {
+            //娓呯┖bodyFrame
+            this.ClearBodyFrame();
+
+            listView = new VerticalListControl(29);
+            listView.Height = bodyFrameLayout.Height + Application.GetRealHeight(6);
+            listView.BackgroundColor = UserCenterColor.Current.White;
+            bodyFrameLayout.AddChidren(listView);
+
+            //璁剧疆浣忓畢淇℃伅
+            this.SetResidenceInfo(1);
+        }
+
+        /// <summary>
+        /// 璁剧疆浣忓畢淇℃伅(1:鍏堣鍙栦簯绔�,鏃犳硶鑱旂綉,鍐嶈鍙栨湰鍦�  2:鍙浜戠  3:鍙鏈湴)
+        /// </summary>
+        /// <param name="div">1:鍏堣鍙栦簯绔�,鏃犳硶鑱旂綉,鍐嶈鍙栨湰鍦�  2:鍙浜戠  3:鍙鏈湴</param>
+        private void SetResidenceInfo(int div)
+        {
+            HdlThreadLogic.Current.RunThread(() =>
+            {
+                //铏氭嫙浣忓畢鐨勮瘽,鍙鏈湴
+                if (div == 3 || Config.Instance.Home.IsVirtually == true)
+                {
+                    //鍙鏈湴
+                    this.SetResidenceInfoByOffline();
+                }
+                else
+                {
+                    //寮�鍚繘搴︽潯
+                    this.ShowProgressBar();
+                    //璁剧疆浣忓畢淇℃伅(鏈夌綉鎯呭喌)
+                    var result = this.SetResidenceInfoByOnline();
+                    if (result == true)
+                    {
+                        //浜戠璇诲彇鎴愬姛
+                        this.CloseProgressBar();
+                        return;
+                    }
+                    if (div == 2)
+                    {
+                        //濡傛灉鍙浜戠 鍏抽棴杩涘害鏉�
+                        this.CloseProgressBar(ShowReLoadMode.YES);
+                        return;
+                    }
+                    //濡傛灉鍦ㄦ病缃戠殑鎯呭喌涓�,浠庢枃浠跺す璺緞涓幏鍙栧叏閮ㄤ綇瀹�,鐒跺悗鏄剧ず
+                    this.SetResidenceInfoByOffline();
+
+                    //鍏抽棴杩涘害鏉�
+                    this.CloseProgressBar();
+                }
+            });
+        }
+
+        #endregion
+
+        #region 鈻� 璁剧疆浣忓畢淇℃伅(鏈夌綉鎯呭喌)_____________
+
+        /// <summary>
+        /// 璁剧疆浣忓畢淇℃伅(鏈夌綉鎯呭喌)
+        /// </summary>
+        private bool SetResidenceInfoByOnline()
+        {
+            //鑾峰彇浣忓畢淇℃伅
+            var Pra = new GetResidenceInfoPra();
+            string resultData = UserCenterLogic.GetResponseDataByRequestHttps("App/GetHomePager", false, Pra, new List<string> { "NotCheck" }, false);
+            if (string.IsNullOrEmpty(resultData) == true)
+            {
+                return false;
+            }
+            var pageData = Newtonsoft.Json.JsonConvert.DeserializeObject<Common.ResponseEntity.ResidenceRes>(resultData);
+            //鎺掑簭浣忓畢
+            var listHouse = HdlResidenceLogic.Current.SortHouse(pageData.PageData);
+
+            HdlThreadLogic.Current.RunMain(() =>
+            {
+                if (this.Parent == null)
+                {
+                    return;
+                }
+                listView.Height = bodyFrameLayout.Height;
+
+                this.dicResidenceData = new Dictionary<string, Common.ResponseEntity.ResidenceObj>();
+                for (int i = 0; i < listHouse.Count; i++)
+                {
+                    var info = listHouse[i];
+
+                    //鏀堕泦璇ヨ处鍙蜂綇瀹呯殑鏁版嵁
+                    this.dicResidenceData[info.Id] = info;
+                    //娣诲姞浣忓畢鐨勮(鏈夌綉鎯呭喌)
+                    this.AddRowLayoutByOnline(info, i != listHouse.Count - 1);
+                }
+                //璋冩暣鍒楄〃鎺т欢鐨勯珮搴�
+                this.listView.AdjustRealHeight(Application.GetRealHeight(23));
+            });
+            return true;
+        }
+
+        /// <summary>
+        /// 娣诲姞浣忓畢鐨勮(鏈夌綉鎯呭喌)
+        /// </summary>
+        /// <param name="info"></param>
+        private void AddRowLayoutByOnline(Common.ResponseEntity.ResidenceObj info, bool addLine)
+        {
+            var rowLayout = new RowLayoutControl(listView.rowSpace / 2);
+            this.listView.AddChidren(rowLayout);
+
+            //鍥炬爣
+            var btnIcon = rowLayout.frameTable.AddLeftIcon(81);
+            btnIcon.UnSelectedImagePath = "Item/ResidenceIcon.png";
+            //褰撳墠浣忓畢
+            NormalViewControl btnHome = null;
+            if (info.Id == Config.Instance.Home.Id)
+            {
+                //浣忓畢鍚嶇О
+                btnHome = rowLayout.frameTable.AddLeftCaption(info.Name, 800, 60, true);
+                btnHome.TextSize = 15;
+                btnHome.Y = Application.GetRealHeight(12) + rowLayout.chidrenYaxis;
+                rowLayout.frameTable.AddChidren(btnHome, ChidrenBindMode.BindEvent);
+
+                //褰撳墠浣忓畢
+                var btnNowView = rowLayout.frameTable.AddLeftCaption(Language.StringByID(R.MyInternationalizationString.uNowResidence), 800, 49, true);
+                btnNowView.Y = Application.GetRealHeight(72) + rowLayout.chidrenYaxis;
+                btnNowView.TextSize = 12;
+                btnNowView.TextColor = UserCenterColor.Current.TextGrayColor1;
+                rowLayout.frameTable.AddChidren(btnNowView, ChidrenBindMode.BindEvent);
+            }
+            else
+            {
+                //浣忓畢鍚嶇О
+                btnHome = rowLayout.frameTable.AddLeftCaption(info.Name, 800, true);
+                btnHome.TextSize = 15;
+            }
+            //鍙崇澶�
+            rowLayout.frameTable.AddRightArrow();
+            if (addLine == true)
+            {
+                //搴曠嚎
+                rowLayout.frameTable.AddBottomLine();
+            }
+
+            rowLayout.frameTable.ButtonClickEvent += (sender, e) =>
+            {
+                if (info.Id != Config.Instance.Home.Id)
+                {
+                    //纭鍒囨崲褰撳墠浣忓畢鍒般�屻��?
+                    string msg = Language.StringByID(R.MyInternationalizationString.uSwitchResidenceMsg);
+                    if (msg.Contains("{0}") == true)
+                    {
+                        msg = string.Format(msg, info.Name);
+                    }
+                    this.ShowMassage(ShowMsgType.Confirm, msg, () =>
+                    {
+                        HdlThreadLogic.Current.RunThread(() =>
+                        {
+                            //寮�鍚繘搴︽潯
+                            this.ShowProgressBar();
+
+                            //妫�娴嬫湰鍦版湁娌℃湁杩欎釜浣忓畢
+                            this.CheckIsExsitResidence(info);
+
+                            var result = HdlResidenceLogic.Current.SwitchResidence(info.Id);
+
+                            HdlThreadLogic.Current.RunMain(() =>
+                            {
+                                if (result == true)
+                                {
+                                    //閲嶆柊鍒锋柊鍒楄〃
+                                    this.listView.RemoveAll();
+                                    this.SetResidenceInfo(2);
+                                }
+                                //鍏抽棴杩涘害鏉�
+                                this.CloseProgressBar();
+                            });
+                        });
+                    });
+                }
+                else
+                {
+                    //妫�娴嬭兘鍚﹀垹闄や綇瀹�
+                    bool flage = this.CheckIsCanDeleteResidence(info);
+                    var form = new ResidenceManagementForm();
+                    form.AddForm(flage);
+                }
+            };
+
+            if (info.IsOthreShare == true)
+            {
+                //鍒嗕韩鐨�,涓嶈兘鏇存敼
+                return;
+            }
+            //杩囨埛
+            var btnTransfer = rowLayout.AddDeleteControl();
+            btnTransfer.TextID = R.MyInternationalizationString.uTransfer;
+            btnTransfer.ButtonClickEvent += (sender, e) =>
+            {
+                var form = new TransferResidenceMainForm();
+                form.AddForm();
+            };
+            //鏇存敼
+            var btnChanged = rowLayout.AddEditorControl();
+            btnChanged.TextID = R.MyInternationalizationString.uChanged1;
+            btnChanged.ButtonClickEvent += (sender, e) =>
+            {
+                //鏄剧ず缂栬緫鍚嶇О鐣岄潰
+                this.ShowEditorNameForm(info, null, btnHome);
+            };
+        }
+
+        #endregion
+
+        #region 鈻� 璁剧疆浣忓畢淇℃伅(鏃犵綉鎯呭喌)_____________
+
+        /// <summary>
+        /// 璁剧疆浣忓畢淇℃伅(鏃犵綉鎯呭喌)
+        /// </summary>
+        private void SetResidenceInfoByOffline()
+        {
+            //浠庢枃浠跺す涓幏鍙栧叏閮ㄧ殑浣忓畢瀵硅薄
+            this.listLocalHouse = HdlResidenceLogic.Current.GetAllLocalResidenceListByDirectory();
+            if (listLocalHouse.Count == 0)
+            {
+                return;
+            }
+
+            HdlThreadLogic.Current.RunMain(() =>
+            {
+                listView.Height = bodyFrameLayout.Height;
+
+                for (int i = 0; i < listLocalHouse.Count; i++)
+                {
+                    //娣诲姞浣忓畢鐨勮(鏃犵綉鎯呭喌)
+                    this.AddRowLayoutByOffline(listLocalHouse[i], i != listLocalHouse.Count - 1);
+                }
+                //璋冩暣鍒楄〃鎺т欢鐨勯珮搴�
+                this.listView.AdjustRealHeight(Application.GetRealHeight(23));
+            });
+        }
+
+        /// <summary>
+        /// 娣诲姞浣忓畢鐨勮(鏃犵綉鎯呭喌)
+        /// </summary>
+        /// <param name="i_home"></param>
+        private void AddRowLayoutByOffline(House i_home, bool addLine)
+        {
+            var rowLayout = new RowLayoutControl(listView.rowSpace / 2);
+            this.listView.AddChidren(rowLayout);
+
+            //鍥炬爣
+            var btnIcon = rowLayout.frameTable.AddLeftIcon(81);
+            btnIcon.UnSelectedImagePath = "Item/ResidenceIcon.png";
+            //褰撳墠浣忓畢
+            NormalViewControl btnHome = null;
+            if (i_home.Id == Config.Instance.Home.Id)
+            {
+                //浣忓畢鍚嶇О
+                btnHome = rowLayout.frameTable.AddLeftCaption(i_home.Name, 800, 60, true);
+                btnHome.TextSize = 15;
+                btnHome.Y = Application.GetRealHeight(12) + rowLayout.chidrenYaxis;
+                rowLayout.frameTable.AddChidren(btnHome, ChidrenBindMode.BindEvent);
+
+                //褰撳墠浣忓畢
+                var btnNowView = rowLayout.frameTable.AddLeftCaption(Language.StringByID(R.MyInternationalizationString.uNowResidence), 800, 49, true);
+                btnNowView.Y = Application.GetRealHeight(72) + rowLayout.chidrenYaxis;
+                btnNowView.TextSize = 12;
+                btnNowView.TextColor = UserCenterColor.Current.TextGrayColor1;
+                rowLayout.frameTable.AddChidren(btnNowView, ChidrenBindMode.BindEvent);
+            }
+            else
+            {
+                //浣忓畢鍚嶇О
+                btnHome = rowLayout.frameTable.AddLeftCaption(i_home.Name, 800, true);
+                btnHome.TextSize = 15;
+            }
+            //鍙崇澶�
+            rowLayout.frameTable.AddRightArrow();
+            if (addLine == true)
+            {
+                //搴曠嚎
+                rowLayout.frameTable.AddBottomLine();
+            }
+
+            rowLayout.frameTable.ButtonClickEvent += (sender, e) =>
+            {
+                if (i_home.Id != Config.Instance.Home.Id)
+                {
+                    //纭鍒囨崲褰撳墠浣忓畢鍒般�屻��?
+                    string msg = Language.StringByID(R.MyInternationalizationString.uSwitchResidenceMsg);
+                    if (msg.Contains("{0}") == true)
+                    {
+                        msg = string.Format(msg, i_home.Name);
+                    }
+                    this.ShowMassage(ShowMsgType.Confirm, msg, () =>
+                    {
+                        HdlThreadLogic.Current.RunThread(() =>
+                        {
+                            var result = HdlResidenceLogic.Current.SwitchResidence(i_home.Id);
+
+                            HdlThreadLogic.Current.RunMain(() =>
+                            {
+                                if (result == true)
+                                {
+                                    //閲嶆柊鍒锋柊鍒楄〃
+                                    this.listView.RemoveAll();
+                                    this.SetResidenceInfo(3);
+                                }
+                                //鍏抽棴杩涘害鏉�
+                                this.CloseProgressBar();
+                            });
+                        });
+                    });
+                }
+                else
+                {
+                    //妫�娴嬭兘鍚﹀垹闄や綇瀹�
+                    bool flage = this.CheckIsCanDeleteResidence(i_home);
+                    var form = new ResidenceManagementForm();
+                    form.AddForm(flage);
+                }
+            };
+            ////鏇存敼
+            //var btnChanged = rowLayout.AddEditorControl();
+            //btnChanged.TextID = R.MyInternationalizationString.uChanged1;
+            //btnChanged.ButtonClickEvent += (sender, e) =>
+            //{
+            //    //鏄剧ず缂栬緫鍚嶇О鐣岄潰
+            //    this.ShowEditorNameForm(null, i_home, btnHome);
+            //};
+        }
+
+        #endregion
+
+        #region 鈻� 缂栬緫浣忓畢鍚嶇О_______________________
+
+        /// <summary>
+        /// 鏄剧ず缂栬緫浣忓畢鍚嶇О鐣岄潰
+        /// </summary>
+        /// <param name="info">鏈夌綉鏃朵娇鐢�</param>
+        /// <param name="i_house">鏃犵綉鏃堕�傜敤</param>
+        private void ShowEditorNameForm(Common.ResponseEntity.ResidenceObj info, House i_house, NormalViewControl btnHome)
+        {
+            string oldName = info != null ? info.Name : i_house.Name;
+            //鐢熸垚涓�涓脊绐楃敾闈�
+            var dialogForm = new DialogInputControl();
+            //缂栬緫浣忓畢
+            dialogForm.SetTitleText(Language.StringByID(R.MyInternationalizationString.uChangedName));
+            //璇疯緭鍏ヤ綇瀹呭悕绉�
+            dialogForm.SetTipText(Language.StringByID(R.MyInternationalizationString.uPleaseInputResidenceName));
+            dialogForm.Text = oldName;
+
+            //鎸変笅纭鎸夐挳
+            dialogForm.ComfirmClickEvent += ((textValue) =>
+            {
+                if (textValue == string.Empty)
+                {
+                    //璇疯緭鍏ヤ綇瀹呭悕绉�
+                    string msg = Language.StringByID(R.MyInternationalizationString.uPleaseInputResidenceName);
+                    this.ShowMassage(ShowMsgType.Error, msg);
+                    return;
+                }
+                //鐢婚潰鍏抽棴
+                dialogForm.CloseDialog();
+                if (oldName != textValue)
+                {
+                    if (info != null)
+                    {
+                        //缂栬緫浜戠鐨勪綇瀹呭悕绉�
+                        HdlThreadLogic.Current.RunThread(() =>
+                        {
+                            this.EditorResidenceName(textValue, info, btnHome);
+                        });
+                    }
+                    else
+                    {
+                        //鐩存帴缂栬緫浣忓畢缂撳瓨
+                        if (this.CheckIsCanSaveResidence(i_house.Id, textValue, true) == false)
+                        {
+                            return;
+                        }
+                        //鍒锋柊鍐呭瓨鐨勪綇瀹呭悕
+                        HdlResidenceLogic.Current.EditorHouseByHouseId(i_house.Id, textValue);
+                        //鏇存敼鏄剧ず鐨勫悕瀛�
+                        btnHome.Text = textValue;
+                    }
+                }
+            });
+        }
+
+        /// <summary>
+        /// 缂栬緫浜戠鐨勪綇瀹呭悕绉�
+        /// </summary>
+        /// <param name="ResidenceName"></param>
+        /// <param name="info"></param>
+        /// <returns></returns>
+        private void EditorResidenceName(string ResidenceName, Common.ResponseEntity.ResidenceObj info, NormalViewControl btnHome)
+        {
+            //妫�娴嬭兘鍚︿繚瀛樹綇瀹�
+            if (this.CheckIsCanSaveResidence(info.Id, ResidenceName, true) == false)
+            {
+                return;
+            }
+            //寮�鍚繘搴︽潯
+            this.ShowProgressBar();
+
+            var result = HdlResidenceLogic.Current.EditorResidenceName(info.Id, ResidenceName);
+
+            //鍏抽棴杩涘害鏉�
+            this.CloseProgressBar();
+
+            if (result == true)
+            {
+                HdlThreadLogic.Current.RunMain(() =>
+                {
+                    //鍒锋柊鍐呭瓨鐨勪綇瀹呭悕
+                    HdlResidenceLogic.Current.EditorHouseByHouseId(info.Id, ResidenceName);
+                    //鏇存敼鏄剧ず鐨勫悕瀛�
+                    btnHome.Text = ResidenceName;
+                    info.Name = ResidenceName;
+                });
+            }
+        }
+
+        #endregion
+
+        #region 鈻� 娣诲姞浣忓畢鍚嶇О_______________________
+
+        /// <summary>
+        /// 鏄剧ず娣诲姞浣忓畢鍚嶇О鐨勭敾闈�
+        /// </summary>
+        private void ShowAddNameForm()
+        {
+            //鐢熸垚涓�涓脊绐楃敾闈�
+            var dialogForm = new DialogInputControl();
+            //鍒涘缓浣忓畢
+            dialogForm.SetTitleText(Language.StringByID(R.MyInternationalizationString.uCreatResidence));
+            //璇疯緭鍏ヤ綇瀹呭悕绉�
+            dialogForm.SetTipText(Language.StringByID(R.MyInternationalizationString.uPleaseInputResidenceName));
+            //鎸変笅纭鎸夐挳
+            dialogForm.ComfirmClickEvent += ((textValue) =>
+            {
+                if (textValue == string.Empty)
+                {
+                    //璇疯緭鍏ヤ綇瀹呭悕绉�
+                    string msg = Language.StringByID(R.MyInternationalizationString.uPleaseInputResidenceName);
+                    this.ShowMassage(ShowMsgType.Error, msg);
+                    return;
+                }
+                //鐢婚潰鍏抽棴
+                dialogForm.CloseDialog();
+
+                //淇濆瓨浣忓畢
+                HdlThreadLogic.Current.RunThread(() =>
+                {
+                    this.AddNewResidence(textValue);
+                });
+            });
+        }
+
+        /// <summary>
+        /// 鍚戜簯绔坊鍔犳柊鐨勪綇瀹�
+        /// </summary>
+        /// <param name="ResidenceName"></param>
+        /// <returns></returns>
+        private void AddNewResidence(string ResidenceName)
+        {
+            //妫�娴嬭兘鍚︿繚瀛樹綇瀹�
+            if (this.CheckIsCanSaveResidence(string.Empty, ResidenceName, false) == false)
+            {
+                return;
+            }
+            //寮�鍚繘搴︽潯
+            this.ShowProgressBar();
+
+            var Pra = new AddResidencePra();
+            Pra.Name = ResidenceName;
+            //娣诲姞浣忓畢
+            string resultData = UserCenterLogic.GetResponseDataByRequestHttps("App/AddHome", false, Pra);
+            if (string.IsNullOrEmpty(resultData) == true)
+            {
+                //鍏抽棴杩涘害鏉�
+                this.CloseProgressBar();
+                return;
+            }
+
+            var newInfo = Newtonsoft.Json.JsonConvert.DeserializeObject<List<NewResidenceInfo>>(resultData);
+
+            HdlResidenceLogic.Current.AddHouseToMemmory(newInfo[0].Id, ResidenceName);
+
+            HdlThreadLogic.Current.RunMain(() =>
+            {
+                //閲嶆柊鍒锋柊鍒楄〃
+                this.listView.RemoveAll();
+                this.SetResidenceInfo(2);
+            });
+
+        }
+
+        #endregion
+
+        #region 鈻� 涓�鑸柟娉昣__________________________
+
+        /// <summary>
+        /// 妫�娴嬫湰鍦版湁娌℃湁杩欎釜浣忓畢
+        /// </summary>
+        /// <param name="info"></param>
+        private void CheckIsExsitResidence(Common.ResponseEntity.ResidenceObj info)
+        {
+            var path = System.IO.Path.Combine(Shared.IO.FileUtils.RootPath, Config.Instance.Guid, info.Id);
+            bool isExsit = System.IO.Directory.Exists(path);
+            if (isExsit == true) { return; }
+            //鍒涘缓鏂囦欢澶�
+            Global.CreateHomeDirectory(info.Id);
+            //鍒涘缓鏂扮殑浣忓畢
+            var house = new House();
+            house.Id = info.Id;
+            house.Name = info.Name;
+            house.IsOthreShare = info.IsOthreShare;
+            house.AccountType = info.AccountType;
+            house.MainUserDistributedMark = info.MainUserDistributedMark;
+            house.Longitude = info.Longitude;
+            house.Latitude = info.Latitude;
+            house.Save(false);
+
+            string fileName = house.FileName;
+            if (Config.Instance.HomeFilePathList.Contains(fileName) == false)
+            {
+                //娣诲姞鍒楄〃
+                Config.Instance.HomeFilePathList.Add(fileName);
+            }
+        }
+
+        /// <summary>
+        /// 妫�娴嬭兘鍚﹀垹闄や綇瀹�(鏈夌綉浣跨敤)
+        /// </summary>
+        /// <param name="info"></param>
+        /// <returns></returns>
+        private bool CheckIsCanDeleteResidence(Common.ResponseEntity.ResidenceObj info)
+        {
+            if (info.IsOthreShare == false)
+            {
+                int myCount = 0;
+                foreach (var data in this.dicResidenceData.Values)
+                {
+                    if (data.IsOthreShare == false)
+                    {
+                        myCount++;
+                    }
+                }
+                //濡傛灉姝よ处鍙蜂笅鍙墿涓嬪敮涓�涓�涓嚜宸辩殑浣忓畢锛屽垯涓嶈兘鍐嶅垹闄�
+                if (myCount == 1)
+                {
+                    return false;
+                }
+            }
+            return true;
+        }
+
+        /// <summary>
+        /// 妫�娴嬭兘鍚﹀垹闄や綇瀹�(鏃犵綉浣跨敤)
+        /// </summary>
+        /// <param name="info"></param>
+        /// <returns></returns>
+        private bool CheckIsCanDeleteResidence(House i_house)
+        {
+            if (i_house.IsVirtually == false)
+            {
+                //闈炶櫄鎷熶綇瀹呴兘涓嶅厑璁稿垹闄�,鍙湁鍦ㄨ兘鑱旂綉鐨勬椂鍊�,鎵嶈兘鍒犻櫎
+                return false;
+            }
+
+            int myCount = 0;
+            foreach (var data in this.listLocalHouse)
+            {
+                if (data.IsVirtually == true)
+                {
+                    myCount++;
+                }
+            }
+            //濡傛灉姝よ处鍙蜂笅鍙墿涓嬪敮涓�涓�涓櫄鎷熺殑浣忓畢锛屽垯涓嶈兘鍐嶅垹闄�
+            if (myCount == 1)
+            {
+                return false;
+            }
+
+            return true;
+        }
+
+        /// <summary>
+        /// 妫�娴嬭兘鍚︿繚瀛樹綇瀹�
+        /// </summary>
+        /// <param name="residenceId">浣忓畢ID</param>
+        /// <param name="residenceName">浣忓畢鍚�</param>
+        /// <param name="isEditor">isEditor</param>
+        /// <returns></returns>
+        private bool CheckIsCanSaveResidence(string residenceId, string residenceName, bool isEditor)
+        {
+            if (this.dicResidenceData != null)
+            {
+                //浣忓畢鍚嶅瓧閲嶅妫�娴�
+                foreach (string strId in this.dicResidenceData.Keys)
+                {
+                    if (this.dicResidenceData[strId].IsOthreShare == true)
+                    {
+                        //鍒嗕韩鐨勪綇瀹呬笉鑰冭檻
+                        continue;
+                    }
+                    if (residenceId != strId && residenceName == this.dicResidenceData[strId].Name)
+                    {
+                        //浣忓畢鍚嶅瓧宸茬粡瀛樺湪
+                        int msgId = isEditor == true ? R.MyInternationalizationString.EditZigbeeHome_Exist : R.MyInternationalizationString.AddZigbeeHome_Exist;
+                        string msg = Language.StringByID(msgId);
+                        this.ShowMassage(ShowMsgType.Error, msg);
+                        return false;
+                    }
+                }
+            }
+            else
+            {
+                foreach (var myHouse in this.listLocalHouse)
+                {
+                    if (myHouse.IsOthreShare == true)
+                    {
+                        //鍒嗕韩鐨勪綇瀹呬笉鑰冭檻
+                        continue;
+                    }
+                    if (residenceId != myHouse.Id && residenceName == myHouse.Name)
+                    {
+                        //浣忓畢鍚嶅瓧宸茬粡瀛樺湪
+                        int msgId = isEditor == true ? R.MyInternationalizationString.EditZigbeeHome_Exist : R.MyInternationalizationString.AddZigbeeHome_Exist;
+                        string msg = Language.StringByID(msgId);
+                        this.ShowMassage(ShowMsgType.Error, msg);
+                        return false;
+                    }
+                }
+            }
+            return true;
+        }
+
+        #endregion
+
+        #region 鈻� 鐣岄潰閲嶆柊婵�娲讳簨浠禵__________________
+
+        /// <summary>
+        /// 鑷韩鐨勪笂灞傜晫闈㈠叧闂悗,瀹冭嚜韬浜庢渶涓婂眰鏃�,瑙﹀彂鐨勪簨浠�
+        /// </summary>
+        public override int FormActionAgainEvent()
+        {
+            if (dicResidenceData != null)
+            {
+                foreach (string keys in dicResidenceData.Keys)
+                {
+                    if (Config.Instance.HomeFilePathList.Contains($"House_{keys}.json") == false)
+                    {
+                        this.listView.RemoveAll();
+                        //鏁版嵁宸茬粡鍙樻洿 閲嶆柊璁剧疆浣忓畢淇℃伅
+                        this.SetResidenceInfo(2);
+                        break;
+                    }
+                }
+            }
+            else
+            {
+                //妫�娴嬭繕鏈夎繖涓綇瀹呮枃浠跺悧
+                var strPath = System.IO.Path.Combine(Shared.IO.FileUtils.RootPath, Common.Config.Instance.Guid);
+                foreach (var myHouse in this.listLocalHouse)
+                {
+                    string fullName = System.IO.Path.Combine(strPath, myHouse.FileName);
+                    //濡傛灉涓嶅瓨鍦ㄤ簡鐨勮瘽
+                    if (System.IO.File.Exists(fullName) == false)
+                    {
+                        //鏁版嵁宸茬粡鍙樻洿 閲嶆柊璁剧疆浣忓畢淇℃伅
+                        this.listView.RemoveAll();
+                        this.SetResidenceInfo(3);
+                        return 1;
+                    }
+                }
+            }
+            return 1;
+        }
+
+        #endregion
+
+        #region 鈻� 缁撴瀯浣揰____________________________
+
+        /// <summary>
+        /// 璁块棶浣忓畢淇℃伅鎺ュ彛鐨勫惎鍔ㄥ弬鏁�(鏌ヨ涓撶敤)
+        /// </summary>
+        public class GetResidenceInfoPra : IfacePraCommon
+        {
+            /// <summary>
+            /// RequestVersion
+            /// </summary>
+            public string RequestVersion = Common.CommonPage.RequestVersion;
+            /// <summary>
+            /// ReqDto
+            /// </summary>
+            public TokenInfo ReqDto = new TokenInfo();
+        }
+
+        /// <summary>
+        /// 璁块棶浣忓畢淇℃伅鎺ュ彛鐨勫惎鍔ㄥ弬鏁�(鏌ヨ涓撶敤)
+        /// </summary>
+        public class TokenInfo
+        {
+            /// <summary>
+            /// LoginAccessToken
+            /// </summary>
+            public string LoginAccessToken = Common.Config.Instance.Token;
+            /// <summary>
+            /// PageSetting
+            /// </summary>
+            public PageSettingInfo PageSetting = new PageSettingInfo()
+            {
+                Page = 1,
+                PageSize = 5000
+            };
+        }
+
+        /// <summary>
+        ///  娣诲姞浣忓畢鐨勫惎鍔ㄥ弬鏁�
+        /// </summary>
+        public class AddResidencePra : IfacePraCommon
+        {
+            /// <summary>
+            /// RequestVersion
+            /// </summary>
+            public string RequestVersion = Common.CommonPage.RequestVersion;
+            /// <summary>
+            /// LoginAccessToken
+            /// </summary>
+            public string LoginAccessToken = Common.Config.Instance.Token;
+            /// <summary>
+            /// Name
+            /// </summary>
+            public string Name = string.Empty;
+        }
+
+        /// <summary>
+        /// 鏂颁綇瀹呯殑淇℃伅
+        /// </summary>
+        public class NewResidenceInfo
+        {
+            /// <summary>
+            /// ZigbeeHomeGuid
+            /// </summary>
+            public string Id = string.Empty;
+        }
+
+        #endregion
+    }
+}

--
Gitblit v1.8.0