From 48ba446936b51fffafa7c3600c0dadc6ac0e8c20 Mon Sep 17 00:00:00 2001
From: 陈嘉乐 <cjl@hdlchina.com.cn>
Date: 星期五, 10 七月 2020 10:52:13 +0800
Subject: [PATCH] 2020-07-10-01

---
 ZigbeeApp/Shared/Phone/UserCenter/DoorLock/UserManagement.cs |  174 +++++++++++++++++++++++++++++++++++++---------------------
 1 files changed, 111 insertions(+), 63 deletions(-)

diff --git a/ZigbeeApp/Shared/Phone/UserCenter/DoorLock/UserManagement.cs b/ZigbeeApp/Shared/Phone/UserCenter/DoorLock/UserManagement.cs
index 9b7e97c..25bdf6f 100755
--- a/ZigbeeApp/Shared/Phone/UserCenter/DoorLock/UserManagement.cs
+++ b/ZigbeeApp/Shared/Phone/UserCenter/DoorLock/UserManagement.cs
@@ -9,39 +9,92 @@
     /// <summary>
     /// 闂ㄩ攣绠$悊
     /// </summary>
-    public class UserManagement : DoorLockCommonLayout, ZigBee.Common.IStatus
+    public class UserManagement : DoorLockCommonLayout
     {
-        /// <summary>
-        /// 鎸夐敭妯″紡鎺ユ敹
-        /// </summary>
-        /// <param name="common">Common.</param>
-        public void Changed(CommonDevice common)
-        {
-            //if (common.Type != ZigBee.Device.DeviceType.OnOffSwitch)
-            //{
-            //    return;
-            //}
-
-            Shared.Application.RunOnMainThread(() =>
-            {
-                //var dev = common as Panel;
-            });
-        }
-
-
         /// 鏋勯�犲嚱鏁�
         /// </summary>
         /// <param name="doorLock"></param>
         public UserManagement(ZigBee.Device.DoorLock doorLock)
         {
             this.doorLock = doorLock;
+            localAllAccountListTemp = doorLock.localAllAccountList;
+            localDoorLockUserListTemp = doorLock.localDoorLockUserList;
         }
 
         #region 鈼� 鍙橀噺鐢虫槑__________________________
         ZigBee.Device.DoorLock doorLock;
-        List<Shared.Phone.UserCenter.MemberInfoRes> localAccountList = new List<Shared.Phone.UserCenter.MemberInfoRes> { };
+        VerticalRefreshLayout midVerticalScrolViewLayout;
+        public List<Shared.Phone.UserCenter.MemberInfoRes> localAllAccountListTemp = new List<Shared.Phone.UserCenter.MemberInfoRes> { };
+        public Dictionary<int, DoorLockCommonInfo.LocaDoorLockObj> localDoorLockUserListTemp = new Dictionary<int, DoorLockCommonInfo.LocaDoorLockObj>();
+
+
         #endregion
 
+        /// <summary>
+        /// 鏁版嵁鍒锋柊
+        /// </summary>
+        void ReadAccountDoorLockInfoList()
+        {
+            System.Threading.Tasks.Task.Run(async () =>
+            {
+                try
+                {
+                    var localAccountListTemp = await Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.LocalAccountList();
+                    if (localAccountListTemp != null)
+                    {
+                        doorLock.localAllAccountList.Clear();
+                        doorLock.localAllAccountList = localAccountListTemp;
+                        localAllAccountListTemp = doorLock.localAllAccountList;
+
+                        //鍒濆鍖栨潈闄愪俊鎭�
+                        foreach (var sub in localAccountListTemp)
+                        {
+                            if (doorLock.IsFreezeAccount.ContainsKey(sub.SubAccountDistributedMark) == false)
+                            {
+                                doorLock.IsFreezeAccount.Add(sub.SubAccountDistributedMark, false);
+                            }
+                            if (doorLock.HasRemoteUnlockAccess.ContainsKey(sub.SubAccountDistributedMark) == false)
+                            {
+                                doorLock.HasRemoteUnlockAccess.Add(sub.SubAccountDistributedMark, false);
+                            }
+                            if (doorLock.IsFailedToGetDoorLockInfo.ContainsKey(sub.SubAccountDistributedMark) == false)
+                            {
+                                doorLock.IsFailedToGetDoorLockInfo.Add(sub.SubAccountDistributedMark, false);
+                            }
+                        }
+
+                        //鑾峰彇鏈湴闂ㄩ攣鍒楄〃
+                        if (localDoorLockUserListTemp.Count == 0)
+                        {
+                            var list = await Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.GetDoorLockAllAcountUserlist(doorLock);
+                            localDoorLockUserListTemp = doorLock.localDoorLockUserList;
+                        }
+                        doorLock.ReSave();
+                    }
+                    else
+                    {
+                        Application.RunOnMainThread(() =>
+                        {
+                            new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.CloudServerResponseOvertime), Direction = AMPopTipDirection.Down, CloseTime = 1 }.Show(Common.CommonPage.Instance);
+                        });
+                    }
+                }
+                catch { }
+                finally
+                {
+                    Application.RunOnMainThread(() =>
+                    {
+                        MidFrameLayoutContent();
+                        CommonPage.Loading.Hide();
+                        midVerticalScrolViewLayout.EndHeaderRefreshing();
+                    });
+                }
+            });
+        }
+
+        /// <summary>
+        /// 鏄剧ず鐣岄潰
+        /// </summary>
         public void Show()
         {
             this.TopFrameLayout(this, Language.StringByID(R.MyInternationalizationString.UserManagement));
@@ -56,7 +109,7 @@
 
             var btnAddFrameLayout = new FrameLayout
             {
-                X = Application.GetRealWidth(829),
+                X = Application.GetRealWidth(829 - 116),
                 Height = Application.GetRealHeight(72),
                 Width = Application.GetRealWidth(190),
             };
@@ -73,17 +126,24 @@
             var btnUndistributeText = new Button
             {
                 Height = Application.GetRealHeight(72),
-                Width = Application.GetRealWidth(121),
+                Width = Application.GetRealWidth(150),
                 TextID = R.MyInternationalizationString.Undistributed,
                 TextColor = Shared.Common.ZigbeeColor.Current.XMTopTitleText,
                 X = btnUndistributeIcon.Right,
+                IsBold = true,
+                TextSize = 13,
                 TextAlignment = TextAlignment.CenterLeft,
             };
             btnAddFrameLayout.AddChidren(btnUndistributeText);
-
+            if (UserCenterResourse.UserInfo.AuthorityNo != 1)
+            {
+                btnAddFrameLayout.Width = 0;
+                btnUndistributeIcon.Width = 0;
+                btnUndistributeText.Width = 0;
+            }
             EventHandler<MouseEventArgs> eHandler = (sender, e) =>
             {
-                var undistributeDoorlockUserPage = new Shared.Phone.UserCenter.DoorLock.UndistributeDoorlockUserPage(doorLock, localAccountList);
+                var undistributeDoorlockUserPage = new Shared.Phone.UserCenter.DoorLock.UndistributeDoorlockUserPage(doorLock, doorLock.localAllAccountList);
                 Shared.Phone.UserView.HomePage.Instance.AddChidren(undistributeDoorlockUserPage);
                 Shared.Phone.UserView.HomePage.Instance.PageIndex += 1;
                 undistributeDoorlockUserPage.Show();
@@ -91,48 +151,48 @@
             btnAddFrameLayout.MouseDownEventHandler += eHandler;
             btnUndistributeText.MouseDownEventHandler += eHandler;
             btnUndistributeIcon.MouseDownEventHandler += eHandler;
+            midVerticalScrolViewLayout = new VerticalRefreshLayout() {  };
+            this.midFrameLayout.AddChidren(midVerticalScrolViewLayout);
 
-            MidFrameLayoutContent();
-        }
-
-        async void MidFrameLayoutContent()
-        {
-            List<Shared.Phone.UserCenter.MemberInfoRes> SubAccounList = null;
-            if (UserCenterResourse.UserInfo.AuthorityNo == 1 || UserCenterResourse.UserInfo.AuthorityNo == 2)
+            if (localAllAccountListTemp.Count == 0)
             {
-                SubAccounList = await ZigBee.Device.DoorLock.GetSubAccountByDistributedMark();
+                CommonPage.Loading.Start("Loading...");
+                ReadAccountDoorLockInfoList();
+            }
+            else
+            {
+                MidFrameLayoutContent();
             }
 
-            var masterAccount = new Shared.Phone.UserCenter.MemberInfoRes();
-            masterAccount.Account = Shared.Common.Config.Instance.Account;
-            masterAccount.AccountType = Shared.Common.Config.Instance.AccountType;
-            masterAccount.SubAccountDistributedMark = Shared.Common.Config.Instance.Guid;
-            masterAccount.UserName = UserCenterResourse.UserInfo.UserName;
-            localAccountList.Add(masterAccount);
-            localAccountList.AddRange(SubAccounList);
-
-            var bodyView = new VerticalScrolViewLayout()
+            midVerticalScrolViewLayout.BeginHeaderRefreshingAction += () =>
             {
+                midVerticalScrolViewLayout.BeginHeaderRefreshing();
+                ReadAccountDoorLockInfoList();
             };
-            this.midFrameLayout.AddChidren(bodyView);
+        }
 
-            doorLock.localAllAccountList = localAccountList;
-            for (int i = 0; i < localAccountList.Count; i++)
+        /// <summary>
+        /// 涓儴甯冨眬鏄剧ず
+        /// </summary>
+        async void MidFrameLayoutContent()
+        {
+            midVerticalScrolViewLayout.RemoveAll();
+            for (int i = 0; i < doorLock.localAllAccountList.Count; i++)
             {
-                var currentAccount = localAccountList[i];
+                var currentAccount = doorLock.localAllAccountList[i];
                 var RowView = new FrameLayout()
                 {
-                    Height = Application.GetRealHeight(161),
-                    BackgroundColor = Shared.Common.ZigbeeColor.Current.XMTopFrameLayout,
+                    Height = Application.GetRealHeight(127 + 23),
+                    BackgroundColor = Shared.Common.ZigbeeColor.Current.XMWhite,
                 };
-                bodyView.AddChidren(RowView);
+                midVerticalScrolViewLayout.AddChidren(RowView);
 
                 var btnText = new Button()
                 {
                     X = Application.GetRealWidth(58),
                     Width = Application.GetRealWidth(300),
                     TextAlignment = TextAlignment.CenterLeft,
-                    TextColor = Shared.Common.ZigbeeColor.Current.XMTopTitleText,
+                    TextColor = Shared.Common.ZigbeeColor.Current.XMBlack,
                     Gravity = Gravity.CenterVertical,
                     TextSize = 14,
                 };
@@ -166,12 +226,12 @@
                 };
                 RowView.AddChidren(line2);
                 int currentIndex = i;
-                if (currentIndex == localAccountList.Count - 1)
+                if (currentIndex == doorLock.localAllAccountList.Count - 1)
                 {
                     line2.Visible = false;
                 }
 
-                if (currentAccount.UserName != null)
+                if (!string.IsNullOrEmpty(currentAccount.UserName))
                 {
                     btnText.Text = currentAccount.UserName;
                 }
@@ -201,18 +261,6 @@
                 RowView.MouseUpEventHandler += eHandler;
                 btnText.MouseUpEventHandler += eHandler;
             }
-        }
-
-        public void DeviceInfoChange(CommonDevice common, string typeTag)
-        {
-        }
-
-        public void ChangedILogicStatus(ZigBee.Device.Logic logic)
-        {
-        }
-
-        public void ChangedISceneStatus(Scene scene)
-        {
         }
     }
 }

--
Gitblit v1.8.0