using System; 
 | 
using System.Collections.Generic; 
 | 
using System.Text; 
 | 
using Newtonsoft.Json; 
 | 
using Shared.Common; 
 | 
using Shared.Phone.UserCenter.Device; 
 | 
using ZigBee.Device; 
 | 
  
 | 
namespace Shared.Phone.UserCenter.DoorLock 
 | 
{ 
 | 
    public class EntryStatusPage : DoorLockCommonLayout 
 | 
    { 
 | 
        /// <summary> 
 | 
        /// 构造函数 
 | 
        /// </summary> 
 | 
        /// <param name="doorLock"></param> 
 | 
        /// <param name="accountObj"></param> 
 | 
        /// <param name="entryType"></param> 
 | 
        public EntryStatusPage(ZigBee.Device.DoorLock doorLock, Shared.Phone.UserCenter.MemberInfoRes accountObj, string entryType) 
 | 
        { 
 | 
            this.doorLock = doorLock; 
 | 
            this.curAccountObj = accountObj; 
 | 
            this.currentType = entryType; 
 | 
            BackgroundColor = Shared.Common.ZigbeeColor.Current.GXCTopViewBackgroundColor; 
 | 
        } 
 | 
  
 | 
        #region 变量申明 
 | 
        /// <summary> 
 | 
        /// 当前门锁 
 | 
        /// </summary> 
 | 
        ZigBee.Device.DoorLock doorLock; 
 | 
        /// <summary> 
 | 
        /// 当前账户 
 | 
        /// </summary> 
 | 
        Shared.Phone.UserCenter.MemberInfoRes curAccountObj; 
 | 
        /// <summary> 
 | 
        /// 当前类型 
 | 
        /// </summary> 
 | 
        string currentType = string.Empty; 
 | 
        /// <summary> 
 | 
        /// 底部布局 
 | 
        /// </summary> 
 | 
        FrameLayout bottomFrameLayout; 
 | 
        #endregion 
 | 
  
 | 
        /// <summary> 
 | 
        /// UI显示  
 | 
        /// </summary> 
 | 
        public void Show() 
 | 
        { 
 | 
            this.TopFrameLayout(this, Language.StringByID(R.MyInternationalizationString.AddNewUnlockMethod)); 
 | 
  
 | 
            EventHandler<MouseEventArgs> eHandlerBack = (sender, e) => 
 | 
            { 
 | 
                RemoveFromParent(); 
 | 
            }; 
 | 
            this.btnBack.MouseUpEventHandler += eHandlerBack; 
 | 
            this.btnBackFrameLayout.MouseUpEventHandler += eHandlerBack; 
 | 
            this.MidFrameLayout(this); 
 | 
  
 | 
            MidFrameLayoutContent(); 
 | 
        } 
 | 
        /// <summary> 
 | 
        /// 中部布局 
 | 
        /// </summary> 
 | 
        public void MidFrameLayoutContent() 
 | 
        { 
 | 
            var entryStatusPic = new Button 
 | 
            { 
 | 
                X = Application.GetRealWidth(297), 
 | 
                Y = Application.GetRealHeight(268), 
 | 
                Height = Application.GetMinRealAverage(363), 
 | 
                Width = Application.GetMinRealAverage(452), 
 | 
                UnSelectedImagePath = "DoorLock/EntrySuccessIcon.png", 
 | 
            }; 
 | 
            this.midFrameLayout.AddChidren(entryStatusPic); 
 | 
  
 | 
            var btnPicTip = new Button 
 | 
            { 
 | 
                X = Application.GetRealWidth(372), 
 | 
                Y = Application.GetRealHeight(634), 
 | 
                Height = Application.GetRealHeight(81), 
 | 
                TextColor = Shared.Common.ZigbeeColor.Current.XMBlack, 
 | 
                Gravity = Gravity.CenterHorizontal, 
 | 
                TextSize = 20, 
 | 
                IsBold = true, 
 | 
            }; 
 | 
            this.midFrameLayout.AddChidren(btnPicTip); 
 | 
  
 | 
            if (currentType == "password") 
 | 
            { 
 | 
                btnPicTip.Text = Language.StringByID(R.MyInternationalizationString.EntryPasswordSuccess); 
 | 
            } 
 | 
            else if (currentType == "fingerprint") 
 | 
            { 
 | 
                btnPicTip.Text = Language.StringByID(R.MyInternationalizationString.EntryFingerprintSuccess); 
 | 
            } 
 | 
            else if (currentType == "faceID") 
 | 
            { 
 | 
                btnPicTip.Text = Language.StringByID(R.MyInternationalizationString.EntryFaceIDSuccess); 
 | 
            } 
 | 
            else if (currentType == "calmFingerprint") 
 | 
            { 
 | 
                btnPicTip.Text = Language.StringByID(R.MyInternationalizationString.EntryCalmFingerprintSuccess); 
 | 
            } 
 | 
            else 
 | 
            { 
 | 
                btnPicTip.Text = Language.StringByID(R.MyInternationalizationString.EntryProximitySuccess); 
 | 
            } 
 | 
  
 | 
            BottomFrameLayoutContent(); 
 | 
        } 
 | 
        /// <summary> 
 | 
        /// 底部布局 
 | 
        /// </summary> 
 | 
        public void BottomFrameLayoutContent() 
 | 
        { 
 | 
            bottomFrameLayout = new FrameLayout() 
 | 
            { 
 | 
                Height = Application.GetRealHeight(737), 
 | 
                Y = Application.GetRealHeight(999), 
 | 
                BackgroundColor = ZigbeeColor.Current.XMWhite, 
 | 
            }; 
 | 
            this.midFrameLayout.AddChidren(bottomFrameLayout); 
 | 
  
 | 
            var passwordRemarkFrameLayout = new FrameLayout() 
 | 
            { 
 | 
                Width = Application.GetRealWidth(965), 
 | 
                Height = Application.GetRealHeight(127), 
 | 
                X = Application.GetRealWidth(58), 
 | 
                Y = Application.GetRealHeight(81), 
 | 
            }; 
 | 
            bottomFrameLayout.AddChidren(passwordRemarkFrameLayout); 
 | 
  
 | 
            var btnPasswordRemark = new Button() 
 | 
            { 
 | 
                Width = Application.GetRealWidth(222), 
 | 
                Height = Application.GetRealHeight(58), 
 | 
                Y = Application.GetRealHeight(35), 
 | 
                TextColor = Shared.Common.ZigbeeColor.Current.XMBlack, 
 | 
                TextAlignment = TextAlignment.CenterLeft, 
 | 
                TextSize = 14, 
 | 
            }; 
 | 
            passwordRemarkFrameLayout.AddChidren(btnPasswordRemark); 
 | 
  
 | 
            var btnPasswordRemarkContent = new EditText() 
 | 
            { 
 | 
                Width = Application.GetRealWidth(965 - 222), 
 | 
                Height = Application.GetRealHeight(58), 
 | 
                X = Application.GetRealWidth(223), 
 | 
                Y = Application.GetRealHeight(35), 
 | 
                TextAlignment = TextAlignment.CenterLeft, 
 | 
                TextSize = 14, 
 | 
                PlaceholderTextColor = ZigbeeColor.Current.XMGray3, 
 | 
                TextColor = ZigbeeColor.Current.XMBlack 
 | 
            }; 
 | 
            passwordRemarkFrameLayout.AddChidren(btnPasswordRemarkContent); 
 | 
  
 | 
            var btnLine = new FrameLayout() 
 | 
            { 
 | 
                Width = Application.GetRealWidth(965), 
 | 
                Height = 1, 
 | 
                X = Application.GetRealWidth(58), 
 | 
                Y = Application.GetRealHeight(81 + 127), 
 | 
                BackgroundColor = Shared.Common.ZigbeeColor.Current.XMRowLine, 
 | 
            }; 
 | 
            bottomFrameLayout.AddChidren(btnLine); 
 | 
  
 | 
            var personRemarkRemarkFrameLayout = new FrameLayout() 
 | 
            { 
 | 
                Width = Application.GetRealWidth(965), 
 | 
                Height = Application.GetRealHeight(127), 
 | 
                X = Application.GetRealWidth(58), 
 | 
                Y = btnLine.Bottom + Application.GetRealHeight(2), 
 | 
            }; 
 | 
            bottomFrameLayout.AddChidren(personRemarkRemarkFrameLayout); 
 | 
  
 | 
            var btnMatchPersonRemark = new Button() 
 | 
            { 
 | 
                Width = Application.GetRealWidth(222), 
 | 
                Height = Application.GetRealHeight(58), 
 | 
                Y = Application.GetRealHeight(35), 
 | 
                Text = Language.StringByID(R.MyInternationalizationString.MatchPerson) + ":", 
 | 
                TextColor = Shared.Common.ZigbeeColor.Current.XMBlack, 
 | 
                TextAlignment = TextAlignment.CenterLeft, 
 | 
                TextSize = 14, 
 | 
            }; 
 | 
            personRemarkRemarkFrameLayout.AddChidren(btnMatchPersonRemark); 
 | 
  
 | 
            var btnMatchPersonContent = new Button() 
 | 
            { 
 | 
                Width = Application.GetRealWidth(965 - 222), 
 | 
                Height = Application.GetRealHeight(58), 
 | 
                X = Application.GetRealWidth(223), 
 | 
                Y = Application.GetRealHeight(35), 
 | 
                TextColor = Shared.Common.ZigbeeColor.Current.XMGray3, 
 | 
                TextAlignment = TextAlignment.CenterLeft, 
 | 
                TextSize = 14, 
 | 
            }; 
 | 
            personRemarkRemarkFrameLayout.AddChidren(btnMatchPersonContent); 
 | 
  
 | 
            var btnLine1 = new FrameLayout() 
 | 
            { 
 | 
                Width = Application.GetRealWidth(965), 
 | 
                Height = 1, 
 | 
                X = Application.GetRealWidth(58), 
 | 
                Y = Application.GetRealHeight(81 + 127 + 12 + 127), 
 | 
                BackgroundColor = Shared.Common.ZigbeeColor.Current.XMRowLine, 
 | 
            }; 
 | 
            bottomFrameLayout.AddChidren(btnLine1); 
 | 
  
 | 
            var completeBtn = new Button 
 | 
            { 
 | 
                X = Application.GetRealWidth(86), 
 | 
                Y = Application.GetRealHeight(472), 
 | 
                Height = Application.GetRealHeight(127), 
 | 
                Width = Application.GetRealWidth(907), 
 | 
                Text = Language.StringByID(R.MyInternationalizationString.DoorLockComplete), 
 | 
                TextColor = Shared.Common.ZigbeeColor.Current.XMWhite, 
 | 
                Gravity = Gravity.CenterHorizontal, 
 | 
                BackgroundColor = Shared.Common.ZigbeeColor.Current.XMBlack, 
 | 
                Radius = (uint)Application.GetRealHeight(127 / 2), 
 | 
                TextSize = 16, 
 | 
                IsBold = true, 
 | 
            }; 
 | 
            bottomFrameLayout.AddChidren(completeBtn); 
 | 
  
 | 
            if (currentType == "password") 
 | 
            { 
 | 
                btnPasswordRemark.Text = Language.StringByID(R.MyInternationalizationString.PasswordRemark); 
 | 
                btnPasswordRemarkContent.PlaceholderText = Language.StringByID(R.MyInternationalizationString.Password) + "ID" + doorLock.doorLockProgrammingEventNotificationCommand.UserID; 
 | 
            } 
 | 
            else if (currentType == "fingerprint") 
 | 
            { 
 | 
                btnPasswordRemark.Text = Language.StringByID(R.MyInternationalizationString.FingerprintRemark); 
 | 
                btnPasswordRemarkContent.PlaceholderText = Language.StringByID(R.MyInternationalizationString.Fingerprint) + "ID" + doorLock.doorLockProgrammingEventNotificationCommand.UserID; 
 | 
            } 
 | 
            else if (currentType == "faceID") 
 | 
            { 
 | 
                btnPasswordRemark.Width = Application.GetRealWidth(222 + 75); 
 | 
                btnPasswordRemarkContent.Width = Application.GetRealWidth(965 - 222 - 75); 
 | 
                btnPasswordRemarkContent.X = Application.GetRealWidth(222 + 75 + 1); 
 | 
                btnPasswordRemark.Text = Language.StringByID(R.MyInternationalizationString.FaceIDRemark); 
 | 
                btnPasswordRemarkContent.PlaceholderText = Language.StringByID(R.MyInternationalizationString.FaceIDMark) + "ID" + doorLock.doorLockProgrammingEventNotificationCommand.UserID; 
 | 
            } 
 | 
            else if (currentType == "calmFingerprint") 
 | 
            { 
 | 
                btnPasswordRemark.Width = Application.GetRealWidth(222 + 25); 
 | 
                btnPasswordRemarkContent.Width = Application.GetRealWidth(965 - 222 - 25); 
 | 
                btnPasswordRemarkContent.X = Application.GetRealWidth(222 + 25 + 1); 
 | 
                btnPasswordRemark.Text = Language.StringByID(R.MyInternationalizationString.CalmFingerprintRemark); 
 | 
                btnPasswordRemarkContent.PlaceholderText = Language.StringByID(R.MyInternationalizationString.CalmFingerprintMark) + "ID" + doorLock.doorLockProgrammingEventNotificationCommand.UserID; 
 | 
            } 
 | 
            else 
 | 
            { 
 | 
                btnPasswordRemark.Text = Language.StringByID(R.MyInternationalizationString.ProximityRemark); 
 | 
                btnPasswordRemarkContent.PlaceholderText = Language.StringByID(R.MyInternationalizationString.IcCard) + "ID" + doorLock.doorLockProgrammingEventNotificationCommand.UserID; 
 | 
            } 
 | 
  
 | 
            if (!string.IsNullOrEmpty(curAccountObj.UserName)) 
 | 
            { 
 | 
                btnMatchPersonContent.Text = curAccountObj.UserName; 
 | 
            } 
 | 
            else 
 | 
            { 
 | 
                btnMatchPersonContent.Text = curAccountObj.Account; 
 | 
            } 
 | 
  
 | 
            completeBtn.MouseDownEventHandler += async (sender, e) => 
 | 
             { 
 | 
                 completeBtn.Enable = false; 
 | 
                 if (doorLock.doorLockProgrammingEventNotificationCommand == null) 
 | 
                 { 
 | 
                     return; 
 | 
                 } 
 | 
                 var addLockInfo = new ZigBee.Device.DoorLock.AddDoorLockData(); 
 | 
                 if (UserCenterResourse.UserInfo.AuthorityNo != 1) 
 | 
                 { 
 | 
                     addLockInfo.LoginAccessToken = UserCenterLogic.GetConnectMainToken(); 
 | 
                     addLockInfo.IsOtherAccountCtrl = true; 
 | 
                 } 
 | 
  
 | 
                 addLockInfo.CloudAccountId = curAccountObj.SubAccountDistributedMark; 
 | 
                 if (doorLock.DeviceAddr != null) 
 | 
                 { 
 | 
                     addLockInfo.DoorLockId = doorLock.DeviceAddr + "_" + doorLock.DeviceEpoint; 
 | 
                 } 
 | 
                 addLockInfo.OpenLockMode = doorLock.doorLockProgrammingEventNotificationCommand.ProgramEventSoure; 
 | 
                 addLockInfo.DoorLockLocalUserId = doorLock.doorLockProgrammingEventNotificationCommand.UserID.ToString(); 
 | 
                 addLockInfo.EntryTime = System.DateTime.Now; 
 | 
                 if (!string.IsNullOrEmpty(btnPasswordRemarkContent.Text)) 
 | 
                 { 
 | 
                     addLockInfo.UserIdRemarks = btnPasswordRemarkContent.Text; 
 | 
                 } 
 | 
                 else 
 | 
                 { 
 | 
                     addLockInfo.UserIdRemarks = btnPasswordRemarkContent.PlaceholderText; 
 | 
                 } 
 | 
                 try 
 | 
                 { 
 | 
                     Application.RunOnMainThread(() => { CommonPage.Loading.Start("Loading..."); }); 
 | 
                     var result = await ZigBee.Device.DoorLock.SendDoorLockToServer("DoorLock/AddDoorLock", addLockInfo); 
 | 
                     if (result != null) 
 | 
                     { 
 | 
                         if (result.StateCode == "Success") 
 | 
                         { 
 | 
                             if (doorLock.localDoorLockUserList.ContainsKey(doorLock.doorLockProgrammingEventNotificationCommand.UserID)) 
 | 
                             { 
 | 
                                 //存门锁信息 
 | 
                                 var resultList = await Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.GetCloudLocalDoorLocklist(doorLock, curAccountObj.SubAccountDistributedMark); 
 | 
                                 if (resultList != null) 
 | 
                                 { 
 | 
                                     if (resultList.ContainsKey(doorLock.doorLockProgrammingEventNotificationCommand.UserID) == true) 
 | 
                                     { 
 | 
                                         var a = resultList[doorLock.doorLockProgrammingEventNotificationCommand.UserID]; 
 | 
                                         if (a?.ConnectedAccount == curAccountObj.SubAccountDistributedMark) 
 | 
                                         { 
 | 
                                             completeBtn.Enable = true; 
 | 
                                             this.RemoveFromParent(); 
 | 
                                             for (int i = UserView.HomePage.Instance.ChildrenCount - 1; i >= 0; i--) 
 | 
                                             { 
 | 
                                                 var form = UserView.HomePage.Instance.GetChildren(i); 
 | 
  
 | 
                                                 if (form is UnLockMethod) 
 | 
                                                 { 
 | 
                                                     doorLock.currentUserDisplayMethod = ""; 
 | 
                                                     ((UnLockMethod)form).RefreshList(); 
 | 
                                                     break; 
 | 
                                                 } 
 | 
                                                 else 
 | 
                                                 { 
 | 
                                                     form.RemoveFromParent(); 
 | 
                                                 } 
 | 
                                             } 
 | 
                                         } 
 | 
                                         else 
 | 
                                         { 
 | 
                                             completeBtn.Enable = true; 
 | 
                                             new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.CloudServerResponseOvertime), Direction = AMPopTipDirection.Up, CloseTime = 1 }.Show(btnPasswordRemarkContent); 
 | 
                                         } 
 | 
                                     } 
 | 
                                 } 
 | 
                                 else 
 | 
                                 { 
 | 
                                     completeBtn.Enable = true; 
 | 
                                     new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.CloudServerResponseOvertime), Direction = AMPopTipDirection.Up, CloseTime = 1 }.Show(btnPasswordRemarkContent); 
 | 
                                 } 
 | 
  
 | 
                             } 
 | 
                         } 
 | 
                         else 
 | 
                         { 
 | 
                             completeBtn.Enable = true; 
 | 
                             new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.AddFailed), Direction = AMPopTipDirection.Up, CloseTime = 1 }.Show(btnPasswordRemarkContent); 
 | 
                         } 
 | 
                     } 
 | 
                     else 
 | 
                     { 
 | 
                         completeBtn.Enable = true; 
 | 
                         new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.CloudServerResponseOvertime), Direction = AMPopTipDirection.Up, CloseTime = 1 }.Show(btnPasswordRemarkContent); 
 | 
                     } 
 | 
                 } 
 | 
                 catch { } 
 | 
                 finally 
 | 
                 { 
 | 
                     CommonPage.Loading.Hide(); 
 | 
                 } 
 | 
             }; 
 | 
        } 
 | 
    } 
 | 
} 
 |