HDL Home App 第二版本 旧平台金堂用 正在使用
ZigbeeApp/Shared/Phone/UserCenter/DoorLock/TemporaryPassword.cs
New file
@@ -0,0 +1,1039 @@
using 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;
                //解密密码
                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);
      }
    }
  }
}