From f71e74b5f0d2716fbf05da016cdaa18d64e09f80 Mon Sep 17 00:00:00 2001
From: xm <1271024303@qq.com>
Date: 星期四, 31 十二月 2020 17:01:18 +0800
Subject: [PATCH] 又换完成最新门锁。空气质量传感器完成数据和基本配置功能。开发图表和自动化的同事可下载此代码

---
 ZigbeeApp/Shared/Phone/UserCenter/DoorLock/TemporaryPassword.cs | 1039 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 1,039 insertions(+), 0 deletions(-)

diff --git a/ZigbeeApp/Shared/Phone/UserCenter/DoorLock/TemporaryPassword.cs b/ZigbeeApp/Shared/Phone/UserCenter/DoorLock/TemporaryPassword.cs
new file mode 100644
index 0000000..578ace9
--- /dev/null
+++ b/ZigbeeApp/Shared/Phone/UserCenter/DoorLock/TemporaryPassword.cs
@@ -0,0 +1,1039 @@
+锘縰sing System;
+using System.Linq.Expressions;
+using Newtonsoft.Json.Linq;
+using Shared.Common;
+using ZigBee.Device;
+
+namespace Shared.Phone.UserCenter.DoorLock
+{
+  public class TemporaryPassword : DoorLockCommonLayout
+  {
+    /// <summary>
+    /// 鏋勯�犲嚱鏁�
+    /// </summary>
+    /// <param name="doorLock"></param>
+    public TemporaryPassword(ZigBee.Device.DoorLock doorLock)
+    {
+      this.doorLock = doorLock;
+      BackgroundColor = Shared.Common.ZigbeeColor.Current.GXCTopViewBackgroundColor;
+    }
+
+    #region  鍙橀噺鐢虫槑
+    /// <summary>
+    /// 褰撳墠闂ㄩ攣
+    /// </summary>
+    ZigBee.Device.DoorLock doorLock;
+    /// <summary>
+    /// 涓存椂瀵嗙爜涓殑6浣嶆暟瀛�
+    /// </summary>
+    public System.Collections.Generic.List<Button> pawButtonList = new System.Collections.Generic.List<Button> { };
+    /// <summary>
+    /// 涓存椂瀵嗙爜
+    /// </summary>
+    Button passwordText;
+    /// <summary>
+    /// 涓儴甯冪殑椤堕儴甯冨眬
+    /// </summary>
+    FrameLayout MidTopFrameLayout;
+    /// <summary>
+    /// 鎺ユ敹閫氱煡
+    /// </summary>
+    Action<string, string> action;
+    /// <summary>
+    /// 淇濆瓨瀹屾垚鎸夐挳
+    /// </summary>
+    Button btnFinifh;
+    /// <summary>
+    /// 褰撳墠鏈夋晥鏃ユ湡鏃堕棿
+    /// </summary>
+    DateTime cunVDateTime;
+    /// <summary>
+    /// 褰撳墠澶辨晥鏃ユ湡鏃堕棿
+    /// </summary>
+    DateTime cunIVDateTime;
+    #endregion
+
+    /// <summary>
+    /// UI鏄剧ず
+    /// </summary>
+    public void Show()
+    {
+      ReadTempPasswordData();
+      this.TopFrameLayout(this, Language.StringByID(R.MyInternationalizationString.TemporaryPassword));
+
+      EventHandler<MouseEventArgs> eHandlerBack = (sender, e) =>
+      {
+        if (doorLock.Gateway != null || doorLock.Gateway.GwResDataAction != null)
+        {
+          doorLock.Gateway.GwResDataAction -= action;
+        }
+        RemoveFromParent();
+      };
+      this.btnBack.MouseUpEventHandler += eHandlerBack;
+      this.btnBackFrameLayout.MouseUpEventHandler += eHandlerBack;
+      this.MidFrameLayout(this);
+      #region btnDelFrameLayout
+      var btnDelFrameLayout = new FrameLayout
+      {
+        X = Application.GetRealWidth(953 - 116),
+        Height = Application.GetRealHeight(69),
+        Width = Application.GetRealWidth(1080 - 953),
+      };
+      this.titleFrameLayout.AddChidren(btnDelFrameLayout);
+
+      var btnDelIcon = new Button
+      {
+        Height = Application.GetRealHeight(69),
+        Width = Application.GetRealWidth(69),
+        UnSelectedImagePath = "DoorLock/DelIcon.png",
+      };
+      btnDelFrameLayout.AddChidren(btnDelIcon);
+
+      EventHandler<MouseEventArgs> eHandler = (sender, e) =>
+      {
+        ClearDialog();
+      };
+      btnDelFrameLayout.MouseDownEventHandler += eHandler;
+      btnDelIcon.MouseDownEventHandler += eHandler;
+      #endregion
+      MidTopFrameLayout = new FrameLayout()
+      {
+        X = Application.GetRealWidth(181),
+        Y = Application.GetRealHeight(92),
+        Width = Application.GetRealWidth(717),
+        Height = Application.GetRealHeight(570),
+        BackgroundImagePath = "DoorLock/TempPasswordBackground.png",
+      };
+      this.midFrameLayout.AddChidren(MidTopFrameLayout);
+      MidFrameLayoutContent();
+    }
+
+    /// <summary>
+    /// 涓儴甯冨眬
+    /// </summary>
+    public void MidFrameLayoutContent()
+    {
+      MidTopFrameLayout.RemoveAll();
+      var TempPasswordBackground1 = new Button()
+      {
+        Height = Application.GetRealHeight(43),
+        Width = Application.GetRealWidth(259),
+        X = Application.GetRealWidth(230),
+        Y = Application.GetRealHeight(418),
+        UnSelectedImagePath = "DoorLock/TempPasswordBackground1.png",
+      };
+      MidTopFrameLayout.AddChidren(TempPasswordBackground1);
+
+      var topMidTopFrameLayout = new FrameLayout()
+      {
+        Height = Application.GetRealHeight(313),
+      };
+      MidTopFrameLayout.AddChidren(topMidTopFrameLayout);
+
+      var topPic = new Button()
+      {
+        Height = Application.GetRealHeight(81),
+        Y = Application.GetRealHeight(48),
+        TextAlignment = TextAlignment.Center,
+        Text = Language.StringByID(R.MyInternationalizationString.ClickGenerate),
+        TextColor = Shared.Common.ZigbeeColor.Current.XMBlack,
+        TextSize = 12,
+        Visible = true,
+        Enable = true,
+      };
+      topMidTopFrameLayout.AddChidren(topPic);
+
+      var randomPassword = new EditText()
+      {
+        Y = Application.GetRealHeight(153),
+        Height = Application.GetRealHeight(84),
+        TextAlignment = TextAlignment.Center,
+        TextSize = 24,
+        SecureTextEntry = false,
+        Enable = false,
+      };
+      topMidTopFrameLayout.AddChidren(randomPassword);
+
+      var temPasswordVisiable = new Button()
+      {
+        Height = Application.GetRealHeight(92),
+        Width = Application.GetRealWidth(92),
+        X = Application.GetRealWidth(495),
+        Y = Application.GetRealHeight(153),
+        UnSelectedImagePath = "DoorLock/TemPasswordInvisiable.png",
+        SelectedImagePath = "DoorLock/TemPasswordVisiable.png",
+      };
+      topMidTopFrameLayout.AddChidren(temPasswordVisiable);
+
+      var validTime = new Button()
+      {
+        Height = Application.GetRealHeight(55),
+        Width = Application.GetRealWidth(92 + 115),
+        Y = Application.GetRealHeight(386),
+        TextColor = Shared.Common.ZigbeeColor.Current.XMGray2,
+        TextAlignment = TextAlignment.CenterRight,
+        TextSize = 16,
+        Text = "--:--",
+      };
+      MidTopFrameLayout.AddChidren(validTime);
+
+      var validTimeDate = new Button()
+      {
+        Height = Application.GetRealHeight(49),
+        Width = Application.GetRealWidth(84 + 135),
+        Y = Application.GetRealHeight(441),
+        TextColor = Shared.Common.ZigbeeColor.Current.XMGray3,
+        TextSize = 12,
+        TextAlignment = TextAlignment.CenterRight,
+      };
+      MidTopFrameLayout.AddChidren(validTimeDate);
+
+      var inValidTime = new Button()
+      {
+        Height = Application.GetRealHeight(55),
+        Width = Application.GetRealWidth(717 - 507),
+        X = Application.GetRealWidth(507),
+        Y = Application.GetRealHeight(389),
+        TextColor = Shared.Common.ZigbeeColor.Current.XMGray2,
+        TextAlignment = TextAlignment.CenterLeft,
+        TextSize = 16,
+        Text = "--:--",
+      };
+      MidTopFrameLayout.AddChidren(inValidTime);
+
+      var inValidTimeDate = new Button()
+      {
+        Height = Application.GetRealHeight(49),
+        Width = Application.GetRealWidth(717 - 508),
+        X = Application.GetRealWidth(508),
+        Y = Application.GetRealHeight(444),
+        TextColor = Shared.Common.ZigbeeColor.Current.XMGray3,
+        TextAlignment = TextAlignment.CenterLeft,
+        TextSize = 12,
+      };
+      MidTopFrameLayout.AddChidren(inValidTimeDate);
+
+      BottomFrameLayoutContent();
+
+      #region 鏁版嵁澶勭悊
+      TimeDisplay(validTime, validTimeDate, inValidTime, inValidTimeDate, false);
+      if (Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.IsModify)
+      {
+        btnFinifh.BackgroundColor = Shared.Common.ZigbeeColor.Current.XMBlack;
+        btnFinifh.Enable = true;
+        topPic.Visible = true;
+        topPic.Enable = true;
+      }
+      else
+      {
+        btnFinifh.BackgroundColor = Shared.Common.ZigbeeColor.Current.XMUnSelect;
+        btnFinifh.Enable = false;
+        topPic.Visible = false;
+        topPic.Enable = false;
+      }
+      if (string.IsNullOrEmpty(doorLock.LocalTempPassword))
+      {
+        randomPassword.Text = "- - - - - -";
+        temPasswordVisiable.Visible = false;
+        randomPassword.TextColor = Shared.Common.ZigbeeColor.Current.XMGray4;
+        Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.IsModify = true;
+        topPic.Visible = true;
+        topPic.Enable = true;
+      }
+      else
+      {
+        randomPassword.Text = doorLock.LocalTempPassword;
+        temPasswordVisiable.Visible = true;
+        if (Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.InTempPasswordVisiable)
+        {
+          randomPassword.SecureTextEntry = false;
+          temPasswordVisiable.IsSelected = true;
+          randomPassword.TextColor = Shared.Common.ZigbeeColor.Current.XMOrange;
+        }
+        else
+        {
+          randomPassword.SecureTextEntry = true;
+          temPasswordVisiable.IsSelected = false;
+          randomPassword.TextColor = Shared.Common.ZigbeeColor.Current.XMGray4;
+        }
+      }
+
+      temPasswordVisiable.MouseUpEventHandler += (sender, e) =>
+      {
+        temPasswordVisiable.IsSelected = !temPasswordVisiable.IsSelected;
+        if (!temPasswordVisiable.IsSelected)
+        {
+          randomPassword.TextColor = Shared.Common.ZigbeeColor.Current.XMGray4;
+          randomPassword.SecureTextEntry = true;
+        }
+        else
+        {
+          randomPassword.TextColor = Shared.Common.ZigbeeColor.Current.XMOrange;
+          randomPassword.SecureTextEntry = false;
+        }
+        Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.InTempPasswordVisiable = !randomPassword.SecureTextEntry;
+      };
+      topPic.MouseUpEventHandler += (sender, e) =>
+      {
+        randomPassword.Text = Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.GetTempPassword();
+        doorLock.LocalTempPassword = randomPassword.Text;
+        TimeDisplay(validTime, validTimeDate, inValidTime, inValidTimeDate, true);
+        btnFinifh.BackgroundColor = Shared.Common.ZigbeeColor.Current.XMBlack;//XMUnSelect
+        btnFinifh.Enable = true;
+        Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.IsModify = true;
+        randomPassword.SecureTextEntry = false;
+        temPasswordVisiable.IsSelected = true;
+        Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.InTempPasswordVisiable = true;
+        randomPassword.TextColor = Shared.Common.ZigbeeColor.Current.XMOrange;
+      };
+      #endregion
+    }
+    /// <summary>
+    /// 搴曢儴甯冨眬澶勭悊
+    /// </summary>
+    public void BottomFrameLayoutContent()
+    {
+      var bottomFrameLayout = new FrameLayout()
+      {
+        Height = Application.GetRealHeight(1025),
+        Y = Application.GetRealHeight(711),
+        BackgroundColor = ZigbeeColor.Current.XMWhite,
+      };
+      this.midFrameLayout.AddChidren(bottomFrameLayout);
+      bottomFrameLayout.SetCornerWithSameRadius(Application.GetRealHeight(58), HDLUtils.RectCornerTopLeft | HDLUtils.RectCornerTopRight);
+
+      var informationEdit = new Button()
+      {
+        Height = Application.GetRealHeight(60),
+        X = Application.GetRealWidth(58),
+        Y = Application.GetRealHeight(81),
+        Text = Language.StringByID(R.MyInternationalizationString.InformationEdit),
+        TextColor = Shared.Common.ZigbeeColor.Current.XMBlack,
+        TextAlignment = TextAlignment.CenterLeft,
+        TextSize = 15,
+      };
+      bottomFrameLayout.AddChidren(informationEdit);
+
+      for (int i = 0; i < 2; i++)
+      {
+        var btnValidTime = new Button()
+        {
+          Width = Application.GetRealWidth(453),
+          Height = Application.GetRealHeight(58),
+          X = Application.GetRealWidth(58),
+          Text = Language.StringByID(R.MyInternationalizationString.ValidTime),
+          TextColor = Shared.Common.ZigbeeColor.Current.XMBlack,
+          TextAlignment = TextAlignment.CenterLeft,
+          TextSize = 14,
+        };
+        bottomFrameLayout.AddChidren(btnValidTime);
+
+        var btnModifyText = new Button()
+        {
+          Width = Application.GetRealWidth(448),
+          Height = Application.GetRealHeight(58),
+          X = btnValidTime.Right,
+          Text = Language.StringByID(R.MyInternationalizationString.Modify),
+          TextColor = Shared.Common.ZigbeeColor.Current.XMGray3,
+          TextAlignment = TextAlignment.CenterRight,
+          TextSize = 14,
+        };
+        bottomFrameLayout.AddChidren(btnModifyText);
+
+        var btnNextFrameLayout = new FrameLayout()
+        {
+          Width = Application.GetRealWidth(58 * 2),
+          Height = Application.GetRealHeight(58),
+          X = Application.GetRealWidth(956),
+          Y = Application.GetRealHeight(204),
+        };
+        bottomFrameLayout.AddChidren(btnNextFrameLayout);
+
+        var btnNext = new Button()
+        {
+          Width = Application.GetRealWidth(58),
+          Height = Application.GetRealHeight(58),
+          UnSelectedImagePath = "Item/RightNext.png",
+          SelectedImagePath = "Item/Down.png",
+        };
+        btnNextFrameLayout.AddChidren(btnNext);
+
+        var btnLine = new FrameLayout()
+        {
+          Width = Application.GetRealWidth(965),
+          Height = 1,
+          X = Application.GetRealWidth(58),
+          BackgroundColor = Shared.Common.ZigbeeColor.Current.XMRowLine,
+        };
+        bottomFrameLayout.AddChidren(btnLine);
+
+        if (i == 0)
+        {
+          btnValidTime.Y = Application.GetRealHeight(204);
+          btnValidTime.Text = Language.StringByID(R.MyInternationalizationString.ValidTime);
+          btnModifyText.Y = btnNextFrameLayout.Y = btnValidTime.Y;
+          btnLine.Y = Application.GetRealHeight(308);
+        }
+        else if (i == 1)
+        {
+          btnValidTime.Y = Application.GetRealHeight(343);
+          btnValidTime.Text = Language.StringByID(R.MyInternationalizationString.InValidTime);
+          btnModifyText.Y = btnNextFrameLayout.Y = btnValidTime.Y;
+          btnLine.Y = Application.GetRealHeight(446);
+        }
+        int curIndex = i;
+        EventHandler<MouseEventArgs> hander = (sender, e) =>
+        {
+          if (Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.IsModify)
+          {
+            if (curIndex == 0)
+            {
+              if (string.IsNullOrEmpty(doorLock.LocalTempPassword))
+              {
+                //璇�"鐐瑰嚮鐢熸垚"涓存椂瀵嗙爜锛�
+                Application.RunOnMainThread(() =>
+                {
+                  var mess = Language.StringByID(R.MyInternationalizationString.SetTempPasswordTip1);
+                  ShowMassage(ShowMsgType.Tip, mess);
+
+                });
+                return;
+              }
+              var tempPage = new Shared.Phone.UserCenter.DoorLock.TimeSettignPage(doorLock, "ValidTime");
+              Shared.Phone.UserView.HomePage.Instance.AddChidren(tempPage);
+              Shared.Phone.UserView.HomePage.Instance.PageIndex += 1;
+              tempPage.Show();
+              tempPage.timeSetAction += () =>
+                      {
+                        MidFrameLayoutContent();
+                      };
+            }
+            if (curIndex == 1)
+            {
+              if (string.IsNullOrEmpty(doorLock.LocalTempPassword))
+              {
+                //璇�"鐐瑰嚮鐢熸垚"涓存椂瀵嗙爜锛�
+                Application.RunOnMainThread(() =>
+                {
+                  var mess = Language.StringByID(R.MyInternationalizationString.SetTempPasswordTip1);
+                  this.ShowMassage(ShowMsgType.Tip, mess);
+                });
+                return;
+              }
+              var tempPage = new Shared.Phone.UserCenter.DoorLock.TimeSettignPage(doorLock, "InValidTime");
+              Shared.Phone.UserView.HomePage.Instance.AddChidren(tempPage);
+              Shared.Phone.UserView.HomePage.Instance.PageIndex += 1;
+              tempPage.Show();
+              tempPage.timeSetAction += () =>
+                      {
+                        MidFrameLayoutContent();
+                      };
+            }
+          }
+        };
+        btnValidTime.MouseDownEventHandler += hander;
+        btnModifyText.MouseDownEventHandler += hander;
+        btnNextFrameLayout.MouseDownEventHandler += hander;
+        btnNext.MouseDownEventHandler += hander;
+      }
+
+      var modifyTempPasswordTip1 = new Button()
+      {
+        Height = Application.GetRealHeight(49),
+        Y = Application.GetRealHeight(628),
+        TextID = R.MyInternationalizationString.ModifyTempPasswordTip1,
+        TextColor = Shared.Common.ZigbeeColor.Current.XMGray3,
+        TextSize = 12,
+        TextAlignment = TextAlignment.Center,
+      };
+      bottomFrameLayout.AddChidren(modifyTempPasswordTip1);
+
+      var modifyTempPasswordTip2 = new Button()
+      {
+        Height = Application.GetRealHeight(49),
+        Y = modifyTempPasswordTip1.Bottom,
+        Radius = (uint)Application.GetRealHeight(120) / 2,
+        TextID = R.MyInternationalizationString.ModifyTempPasswordTip2,
+        TextColor = Shared.Common.ZigbeeColor.Current.XMGray3,
+        TextSize = 12,
+        TextAlignment = TextAlignment.Center,
+      };
+      bottomFrameLayout.AddChidren(modifyTempPasswordTip2);
+
+      btnFinifh = new Button()
+      {
+        Width = Application.GetRealWidth(907),
+        Height = Application.GetRealHeight(127),
+        X = Application.GetRealWidth(86),
+        Y = Application.GetRealHeight(760),
+        Radius = (uint)Application.GetRealHeight(120) / 2,
+        TextID = R.MyInternationalizationString.Confrim,
+        BackgroundColor = Shared.Common.ZigbeeColor.Current.XMUnSelect,
+        TextColor = Shared.Common.ZigbeeColor.Current.XMWhite,
+        TextSize = 16,
+        IsBold = true,
+        Enable = false,
+      };
+      bottomFrameLayout.AddChidren(btnFinifh);
+
+      btnFinifh.MouseUpEventHandler += async (sender, e) =>
+      {
+        FinifhEventHandler(btnFinifh);
+      };
+    }
+
+    /// <summary>
+    /// 纭畾浜嬩欢澶勭悊
+    /// </summary>
+    /// <param name="btnFinifh"></param>
+    void FinifhEventHandler(Button btnFinifh)
+    {
+      System.Threading.Tasks.Task.Run(async () =>
+      {
+        Application.RunOnMainThread(() => { CommonPage.Loading.Start(""); });
+        try
+        {
+          if (string.IsNullOrEmpty(doorLock.LocalTempPassword))
+          {
+            //璇�"鐐瑰嚮鐢熸垚"涓存椂瀵嗙爜锛�
+            Application.RunOnMainThread(() =>
+            {
+              var mess = Language.StringByID(R.MyInternationalizationString.SetTempPasswordTip1);
+              this.ShowMassage(ShowMsgType.Tip, mess);
+            });
+            return;
+          }
+
+          var dNow = DateTime.Now;
+          var validDateTime = new DateTime(dNow.Year, Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.ValidDateMonth, Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.ValidDateDay, Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.ValidDateHour, Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.ValidDateMinute - 1, dNow.Second);
+          var inValidDateTime = new DateTime(dNow.Year, Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.InValidDateMonth, Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.InValidDateDay, Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.InValidDateHour, Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.InValidDateMinute, dNow.Second);
+          if (DateTime.Compare(inValidDateTime, validDateTime) < 0)
+          {
+            //鏃犳晥鐨勬椂闂磋缃�
+            Application.RunOnMainThread(() =>
+            {
+              var mess = Language.StringByID(R.MyInternationalizationString.SetTempPasswordTip);
+              this.ShowMassage(ShowMsgType.Tip, mess);
+            });
+            return;
+          }
+
+          var startTimeStr = Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.GetUnixTimeStamp(validDateTime);
+          var endTimeStr = Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.GetUnixTimeStamp(inValidDateTime);
+
+          action = (topic, data) =>
+                {
+                  var gatewayID = topic.Split('/')[0];
+                  var jObjectdata = JObject.Parse(data);
+                  if (jObjectdata == null)
+                  {
+                    return;
+                  }
+                  if (topic == $"{gatewayID}/DoorLock/DoorLockProgrammingEventNotificationCommand")
+                  {
+                    var ProgrammingEventNotificationData = Newtonsoft.Json.JsonConvert.DeserializeObject<ZigBee.Device.DoorLock.DoorLockProgrammingEventNotificationCommand>(jObjectdata["Data"].ToString());
+                    {
+                      doorLock.doorLockProgrammingEventNotificationCommand = ProgrammingEventNotificationData;
+                      var localDoorLockObj = new ZigBee.Device.DoorLock.LocaDoorLockObj() { };
+                      localDoorLockObj.UserID = ProgrammingEventNotificationData.UserID;
+                      localDoorLockObj.UnlockType = ProgrammingEventNotificationData.ProgramEventSoure;
+                      var entryTime = Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.GetLocalTime(ProgrammingEventNotificationData.ZigbeeLocalTime);
+                      localDoorLockObj.EntryTime = entryTime;
+                      if (!doorLock.localDoorLockUserList.ContainsKey(localDoorLockObj.UserID))
+                      {
+                        doorLock.localDoorLockUserList.Add(ProgrammingEventNotificationData.UserID, localDoorLockObj);
+                      }
+                      //涓存椂瀵嗙爜鏁版嵁瀛樺偍澶勭悊
+                      if (ProgrammingEventNotificationData.UserID > 245)
+                      {
+                        var tpObj = new ZigBee.Device.DoorLock.TempPasswordObject();
+                        tpObj.UserId = ProgrammingEventNotificationData.UserID;
+                        tpObj.TempPassword = doorLock.LocalTempPassword;
+                        tpObj.ValidTime = validDateTime;
+                        tpObj.InValidTime = inValidDateTime;
+                        doorLock.tempPasswordObject = tpObj;
+                      }
+                    }
+                  }
+                };
+          if (doorLock.Gateway != null || doorLock.Gateway.GwResDataAction != null)
+          {
+            doorLock.Gateway.GwResDataAction += action;
+          }
+          //璁剧疆涓存椂瀵嗙爜鍒伴棬閿�
+          var addOrModifyResult = await doorLock.TempPasswordAsync(doorLock.LocalTempPassword, validDateTime, inValidDateTime);
+          if (addOrModifyResult != null && addOrModifyResult.responseData != null)
+          {
+            if (addOrModifyResult.responseData.status == 0)
+            {
+              System.Threading.Thread.Sleep(1000);
+              if (doorLock.tempPasswordObject != null)
+              {
+                var addDoorLockTempPasswordData = new ZigBee.Device.DoorLock.AddDoorLockTempPasswordData();
+                if (UserCenterResourse.UserInfo.AuthorityNo != 1)
+                {
+                  addDoorLockTempPasswordData.LoginAccessToken = UserCenterLogic.GetConnectMainToken();
+                  addDoorLockTempPasswordData.IsOtherAccountCtrl = true;
+                }
+                //瀵瑰瘑鐮佽繘琛屽姞瀵嗗鐞�
+                string hdlKey = "hD1(La3o";
+                var enPsw = UserCenterLogic.EncryptPassword(hdlKey, doorLock.tempPasswordObject.TempPassword);
+                addDoorLockTempPasswordData.TempPwd = enPsw;
+                if (doorLock.DeviceAddr != null)
+                {
+                  addDoorLockTempPasswordData.LocalDoorLockId = doorLock.DeviceAddr + "_" + doorLock.DeviceEpoint;
+                }
+                addDoorLockTempPasswordData.ValidBeginTime = doorLock.tempPasswordObject.ValidTime;
+                addDoorLockTempPasswordData.ValidEndTime = doorLock.tempPasswordObject.InValidTime;
+                addDoorLockTempPasswordData.TempPwdId = doorLock.tempPasswordObject.UserId.ToString();
+                //瀛樺埌浜�
+                var result1 = await ZigBee.Device.DoorLock.SendDoorLockToServer("DoorLock/AddDoorLockPwd", addDoorLockTempPasswordData);
+                if (result1 == null)
+                {
+                  Application.RunOnMainThread(() =>
+                        {
+                          var mess = Language.StringByID(R.MyInternationalizationString.CloudServerResponseOvertime);
+                          this.ShowMassage(ShowMsgType.Tip, mess);
+                        });
+                  return;
+                }
+                if (result1.StateCode != "Success")
+                {
+                  Application.RunOnMainThread(() =>
+                        {
+                          var mess = Language.StringByID(R.MyInternationalizationString.SetFailedXm1);
+                          this.ShowMassage(ShowMsgType.Tip, mess);
+                        });
+                  return;
+                }
+                Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.IsModify = false;
+                doorLock.LocalTempPassword = doorLock.tempPasswordObject.TempPassword;
+                TimeDateData(doorLock.tempPasswordObject.ValidTime, doorLock.tempPasswordObject.InValidTime);
+              }
+              else
+              {
+                Application.RunOnMainThread(() =>
+                      {
+                        var mess = Language.StringByID(R.MyInternationalizationString.SetFailedXm);
+                        this.ShowMassage(ShowMsgType.Tip, mess);
+                      });
+                return;
+              }
+            }
+            else
+            {
+              Application.RunOnMainThread(() =>
+                    {
+                      var mess = Language.StringByID(R.MyInternationalizationString.SetFailedXm);
+                      this.ShowMassage(ShowMsgType.Tip, mess);
+                    });
+              return;
+            }
+          }
+          else
+          {
+            Application.RunOnMainThread(() =>
+                  {
+                    var mess = Language.StringByID(R.MyInternationalizationString.GwResponseOvertime);
+                    this.ShowMassage(ShowMsgType.Tip, mess);
+                  });
+            return;
+          }
+        }
+        catch (Exception ex)
+        {
+          var mess = ex.Message;
+        }
+        finally
+        {
+          Application.RunOnMainThread(() =>
+                {
+                  MidFrameLayoutContent();
+                  CommonPage.Loading.Hide();
+                });
+        }
+      });
+    }
+
+    /// <summary>
+    /// 娓呴櫎UI
+    /// </summary>
+    void ClearDialog()
+    {
+      var dialog = new Dialog { };
+      dialog.Show();
+
+      var flMain = new FrameLayout { BackgroundColor = 0x00000000 };
+      dialog.AddChidren(flMain);
+      flMain.MouseUpEventHandler += (sender11, e11) =>
+      {
+        dialog.Close();
+      };
+
+      var delBackgroundFrameLayout = new FrameLayout
+      {
+        X = Application.GetRealWidth(596),
+        Y = Application.GetRealHeight(164),
+        Height = Application.GetRealHeight(173),
+        Width = Application.GetRealWidth(449),
+        BackgroundImagePath = "DoorLock/DelBackground.png",
+      };
+      flMain.AddChidren(delBackgroundFrameLayout);
+
+      var btnDelIcon2 = new Button
+      {
+        Height = Application.GetRealHeight(81),
+        Width = Application.GetRealWidth(81),
+        X = Application.GetRealWidth(81),
+        Y = Application.GetRealHeight(55),
+        UnSelectedImagePath = "DoorLock/DelIcon.png",
+      };
+      delBackgroundFrameLayout.AddChidren(btnDelIcon2);
+
+      var btnDelText = new Button
+      {
+        Height = Application.GetRealHeight(58),
+        Width = Application.GetRealWidth(311),
+        X = Application.GetRealWidth(173),
+        Y = Application.GetRealHeight(69),
+        TextAlignment = TextAlignment.CenterLeft,
+        Text = Language.StringByID(R.MyInternationalizationString.ClearTempPassword),
+        TextColor = Shared.Common.ZigbeeColor.Current.XMTopTitleText,
+        TextSize = 14,
+        IsBold = true,
+      };
+      delBackgroundFrameLayout.AddChidren(btnDelText);
+
+      EventHandler<MouseEventArgs> eHandler2 = (sender2, e2) =>
+      {
+        dialog.Close();
+        string msg = Language.StringByID(R.MyInternationalizationString.SureToDeleteTempPassword);
+        var alert = new Shared.Phone.UserCenter.ShowMsgControl(ShowMsgType.Confirm, msg, Language.StringByID(R.MyInternationalizationString.DoorlockConfirm));
+        alert.Show();
+        //浣跨敤纭鍨嬪脊妗嗘椂,鐨勫洖璋冨嚱鏁�
+        alert.ConfirmClickEvent += () =>
+        {
+          ClearEventHandler(btnDelText);
+        };
+      };
+      delBackgroundFrameLayout.MouseDownEventHandler += eHandler2;
+      btnDelIcon2.MouseDownEventHandler += eHandler2;
+      btnDelText.MouseDownEventHandler += eHandler2;
+    }
+
+    /// <summary>
+    /// 娓呴櫎浜嬩欢澶勭悊
+    /// </summary>
+    /// <param name="btnDelText"></param>
+    async void ClearEventHandler(Button btnDelText = null)
+    {
+      if (btnDelText == null)
+      {
+        btnDelText = new Button();
+      }
+      Application.RunOnMainThread(() => { CommonPage.Loading.Start(""); });
+      try
+      {
+        if (doorLock.tempPasswordObject != null)
+        {
+          var passData = doorLock.SetUserAccessData(doorLock.tempPasswordObject.UserId, ZigBee.Device.DoorLock.AccessType.DelCurrentUser);
+          var resultData = await doorLock.DefaultControlAsync(passData);
+          if (resultData != null && resultData.defaultControlResponseData != null)
+          {
+            if (resultData.defaultControlResponseData.status == 0 || resultData.defaultControlResponseData.status == 2)
+            {
+              var delDoorLockTempPasswordData = new ZigBee.Device.DoorLock.DelDoorLockTempPasswordData();
+              if (UserCenterResourse.UserInfo.AuthorityNo != 1)
+              {
+                delDoorLockTempPasswordData.LoginAccessToken = UserCenterLogic.GetConnectMainToken();
+                delDoorLockTempPasswordData.IsOtherAccountCtrl = true;
+              }
+              if (doorLock.DeviceAddr != null)
+              {
+                delDoorLockTempPasswordData.LocalDoorLockId = doorLock.DeviceAddr + "_" + doorLock.DeviceEpoint;
+              }
+              var result1 = await ZigBee.Device.DoorLock.SendDoorLockToServer("DoorLock/DelDoorLockPwd", delDoorLockTempPasswordData);
+              if (result1 != null)
+              {
+                if (result1.StateCode == "Success")
+                {
+                  doorLock.tempPasswordObject = null;
+                  doorLock.LocalTempPassword = "";
+                  TimeDateData(DateTime.Now, DateTime.Now, true);
+                  Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.InTempPasswordVisiable = false;
+                  Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.IsModify = true;
+                }
+                else
+                {
+                  Application.RunOnMainThread(() =>
+                  {
+                    var mess = Language.StringByID(R.MyInternationalizationString.ClearFailedXm1);
+                    this.ShowMassage(ShowMsgType.Tip, mess);
+                  });
+                }
+              }
+              else
+              {
+                Application.RunOnMainThread(() =>
+                {
+                  var mess = Language.StringByID(R.MyInternationalizationString.CloudServerResponseOvertime);
+                  this.ShowMassage(ShowMsgType.Tip, mess);
+                });
+              }
+            }
+            else
+            {
+              Application.RunOnMainThread(() =>
+              {
+                var mess = Language.StringByID(R.MyInternationalizationString.ClearFailedXm1);
+                this.ShowMassage(ShowMsgType.Tip, mess);
+              });
+            }
+          }
+          else
+          {
+            var mess = Language.StringByID(R.MyInternationalizationString.GwResponseOvertime);
+            this.ShowMassage(ShowMsgType.Tip, mess);
+          }
+        }
+      }
+      catch { }
+      finally
+      {
+        Application.RunOnMainThread(() =>
+        {
+
+          MidFrameLayoutContent();
+          CommonPage.Loading.Hide();
+        });
+      }
+    }
+
+    /// <summary>
+    /// 璇诲彇浜戠瀛樺偍鏁版嵁
+    /// </summary>
+    void ReadTempPasswordData()
+    {
+      System.Threading.Tasks.Task.Run(async () =>
+      {
+        Application.RunOnMainThread(() => { CommonPage.Loading.Start(""); });
+        try
+        {
+          var getDoorLockTempPasswordData = new ZigBee.Device.DoorLock.GetDoorLockTempPasswordData();
+          if (UserCenterResourse.UserInfo.AuthorityNo != 1)
+          {
+            getDoorLockTempPasswordData.LoginAccessToken = UserCenterLogic.GetConnectMainToken();
+            getDoorLockTempPasswordData.IsOtherAccountCtrl = true;
+          }
+          if (doorLock.DeviceAddr != null)
+          {
+            getDoorLockTempPasswordData.LocalDoorLockId = doorLock.DeviceAddr + "_" + doorLock.DeviceEpoint;
+          }
+          var result = await ZigBee.Device.DoorLock.GetDoorLockTempPasswordFromServer("DoorLock/GetDoorLockPwdPagger", getDoorLockTempPasswordData);
+          if (result != null)
+          {
+            if (result.PageData.Count != 0)
+            {
+              foreach (var curDoorLockTempPaw in result.PageData)
+              {
+                var tpObj = new ZigBee.Device.DoorLock.TempPasswordObject();
+                tpObj.UserId = int.Parse(curDoorLockTempPaw.TempPwdId);
+                tpObj.ValidTime = curDoorLockTempPaw.ValidBeginTime;
+                tpObj.InValidTime = curDoorLockTempPaw.ValidEndTime;
+                //瑙e瘑瀵嗙爜
+                string hdlKey = "hD1(La3o";
+                var desPsw = UserCenterLogic.DecryptPassword(hdlKey, curDoorLockTempPaw.TempPwd);
+                doorLock.LocalTempPassword = tpObj.TempPassword = desPsw;
+                doorLock.tempPasswordObject = tpObj;
+                TimeDateData(doorLock.tempPasswordObject.ValidTime, doorLock.tempPasswordObject.InValidTime);
+              }
+            }
+            else
+            {
+              doorLock.tempPasswordObject = null;
+              doorLock.LocalTempPassword = "";
+              TimeDateData(DateTime.Now, DateTime.Now, true);
+              Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.InTempPasswordVisiable = false;
+              Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.IsModify = true;
+            }
+          }
+          else
+          {
+            var mess = Language.StringByID(R.MyInternationalizationString.CloudServerResponseOvertime);
+            this.ShowMassage(ShowMsgType.Tip, mess);
+          }
+        }
+        catch { }
+        finally
+        {
+          Application.RunOnMainThread(() =>
+                {
+                  MidFrameLayoutContent();
+                  CommonPage.Loading.Hide();
+                });
+        }
+      });
+    }
+
+    /// <summary>
+    /// 鏈湴鏃堕棿鏁版嵁澶勭悊
+    /// </summary>
+    /// <param name="validTimeDateTime"></param>
+    /// <param name="inValidTime"></param>
+    /// <param name="isClearLocalTime"></param>
+    void TimeDateData(DateTime validTimeDateTime, DateTime inValidTime, bool isClearLocalTime = false)
+    {
+      if (doorLock.tempPasswordObject != null)
+      {
+        Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.ValidDateHour = validTimeDateTime.Hour;
+        Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.ValidDateMinute = validTimeDateTime.Minute;
+        Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.ValidDateSecond = validTimeDateTime.Second;
+        Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.ValidDateYear = validTimeDateTime.Year;
+        Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.ValidDateMonth = validTimeDateTime.Month;
+        Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.ValidDateDay = validTimeDateTime.Day;
+        Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.InValidDateHour = inValidTime.Hour;
+        Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.InValidDateMinute = inValidTime.Minute;
+        Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.InValidDateSecond = inValidTime.Second;
+        Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.InValidDateYear = inValidTime.Year;
+        Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.InValidDateMonth = inValidTime.Month;
+        Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.InValidDateDay = inValidTime.Day;
+      }
+      if (isClearLocalTime)
+      {
+        Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.ValidDateHour = 100;
+        Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.ValidDateMinute = 100;
+        Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.ValidDateSecond = 0;
+        Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.ValidDateYear = 0;
+        Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.ValidDateMonth = 0;
+        Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.ValidDateDay = 0;
+        Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.InValidDateHour = 100;
+        Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.InValidDateMinute = 100;
+        Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.InValidDateSecond = 0;
+        Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.InValidDateYear = 0;
+        Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.InValidDateMonth = 0;
+        Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.InValidDateDay = 0;
+      }
+    }
+
+    /// <summary>
+    /// 鏃堕棿鏄剧ず鏁版嵁澶勭悊
+    /// </summary>
+    /// <param name="validTime"></param>
+    /// <param name="validTimeDate"></param>
+    /// <param name="inValidTime"></param>
+    /// <param name="inValidTimeDate"></param>
+    /// <param name="isDefaultTime"></param>
+    void TimeDisplay(Button validTime, Button validTimeDate, Button inValidTime, Button inValidTimeDate, bool isDefaultTime)
+    {
+      string hour = "";
+      string minute = "";
+      if (isDefaultTime)
+      {
+        var cur = DateTime.Now;
+        DoorLockCommonInfo.ValidDateHour = cur.Hour;
+        DoorLockCommonInfo.ValidDateMinute = cur.Minute;
+        DoorLockCommonInfo.ValidDateSecond = cur.Second;
+        DoorLockCommonInfo.InValidDateHour = cur.Hour;
+        DoorLockCommonInfo.InValidDateMinute = cur.Minute;
+        DoorLockCommonInfo.InValidDateSecond = cur.Second;
+        DoorLockCommonInfo.ValidDateYear = cur.Year;
+        DoorLockCommonInfo.ValidDateMonth = cur.Month;
+        DoorLockCommonInfo.ValidDateDay = cur.Day;
+
+        var curD = DoorLockCommonInfo.LastDayOfMonth(cur);
+        if (DoorLockCommonInfo.ValidDateDay == curD.Day)
+        {
+          if (DoorLockCommonInfo.ValidDateMonth == 12)
+          {
+            DoorLockCommonInfo.InValidDateYear = cur.Year + 1;
+            DoorLockCommonInfo.InValidDateMonth = 1;
+            DoorLockCommonInfo.InValidDateDay = 1;
+          }
+          else
+          {
+            DoorLockCommonInfo.InValidDateYear = cur.Year;
+            DoorLockCommonInfo.InValidDateMonth = cur.Month + 1;
+            DoorLockCommonInfo.InValidDateDay = 1;
+          }
+        }
+        else
+        {
+          DoorLockCommonInfo.InValidDateYear = cur.Year;
+          DoorLockCommonInfo.InValidDateMonth = cur.Month;
+          DoorLockCommonInfo.InValidDateDay = cur.Day + 1;
+        }
+
+        //doorLock.ReSave();
+      }
+      if (Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.ValidDateHour < 10)
+      {
+        hour = "0" + Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.ValidDateHour;
+      }
+      else
+      {
+        hour = Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.ValidDateHour.ToString();
+      }
+      if (Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.ValidDateMinute < 10)
+      {
+        minute = "0" + Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.ValidDateMinute;
+      }
+      else
+      {
+        minute = Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.ValidDateMinute.ToString();
+      }
+      //鏈夋晥鏃堕棿
+      if (Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.ValidDateHour == 100)
+      {
+        validTime.Text = "--:--";
+      }
+      else
+      {
+        validTime.Text = hour + ":" + minute;
+      }
+
+      if (Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.InValidDateHour < 10)
+      {
+        hour = "0" + Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.InValidDateHour;
+      }
+      else
+      {
+        hour = Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.InValidDateHour.ToString();
+      }
+      if (Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.InValidDateMinute < 10)
+      {
+        minute = "0" + Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.InValidDateMinute;
+      }
+      else
+      {
+        minute = Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.InValidDateMinute.ToString();
+      }
+
+      if (Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.InValidDateHour == 100)
+      {
+        inValidTime.Text = "--:--";
+      }
+      else
+      {
+        inValidTime.Text = hour + ":" + minute;
+      }
+
+      if (Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.ValidDateMonth == 0)
+      {
+        validTimeDate.Text = "-" + Language.StringByID(R.MyInternationalizationString.Month) + "-" + Language.StringByID(R.MyInternationalizationString.Day);
+      }
+      else
+      {
+        validTimeDate.Text = Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.ValidDateMonth + Language.StringByID(R.MyInternationalizationString.Month) + Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.ValidDateDay + Language.StringByID(R.MyInternationalizationString.Day);
+      }
+
+      if (Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.InValidDateMonth == 0)
+      {
+        inValidTimeDate.Text = "-" + Language.StringByID(R.MyInternationalizationString.Month) + "-" + Language.StringByID(R.MyInternationalizationString.Day);
+      }
+      else
+      {
+        inValidTimeDate.Text = Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.InValidDateMonth + Language.StringByID(R.MyInternationalizationString.Month) + Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.InValidDateDay + Language.StringByID(R.MyInternationalizationString.Day);
+      }
+    }
+  }
+}

--
Gitblit v1.8.0