using System;
using System.Collections.Generic;
using Shared.Common;
using Shared.Phone.UserCenter.Device;
using ZigBee.Device;
namespace Shared.Phone.UserCenter.DoorLock
{
public class MemberFrozenPage : DoorLockCommonLayout, ZigBee.Common.IStatus
{
///
/// 构造函数
///
///
public MemberFrozenPage(ZigBee.Device.DoorLock doorLock, Shared.Phone.UserCenter.MemberInfoRes accountObj)
{
this.doorLock = doorLock;
this.curAccountObj = accountObj;
BackgroundColor = Shared.Common.ZigbeeColor.Current.GXCTopViewBackgroundColor;
}
#region ◆ 变量申明__________________________
ZigBee.Device.DoorLock doorLock;
Shared.Phone.UserCenter.MemberInfoRes curAccountObj;
VerticalRefreshLayout bodyView;
#endregion
void ReadDoorLockUserInfo()
{
System.Threading.Tasks.Task.Run(async () =>
{
try
{
var list = await Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.GetDoorLockAllAcountUserlist(doorLock);
var result = await Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.GetDoorLockOperateAccess(doorLock, curAccountObj.SubAccountDistributedMark);
var result1 = await Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.GetDoorLockUnlockAccess(doorLock, curAccountObj.SubAccountDistributedMark);
}
catch { }
finally
{
Application.RunOnMainThread(() =>
{
MidRefresh();
});
}
});
}
///
/// UI显示
///
public void Show()
{
string accountTitle = "";
if (curAccountObj.UserName != null)
{
accountTitle = curAccountObj.UserName;
}
else
{
accountTitle = curAccountObj.Account;
}
this.TopFrameLayout(this, accountTitle);
EventHandler eHandlerBack = (sender, e) =>
{
RemoveFromParent();
};
this.btnBack.MouseUpEventHandler += eHandlerBack;
this.btnBackFrameLayout.MouseUpEventHandler += eHandlerBack;
this.MidFrameLayout(this);
bodyView = new VerticalRefreshLayout()
{
};
this.midFrameLayout.AddChidren(bodyView);
MidRefresh();
bodyView.BeginHeaderRefreshingAction += () =>
{
bodyView.BeginHeaderRefreshing();
ReadDoorLockUserInfo();
bodyView.EndHeaderRefreshing();
};
}
public async void MidRefresh()
{
bodyView.RemoveAll();
for (int i = 0; i < 3; i++)
{
var RowView = new FrameLayout()
{
Height = Application.GetRealHeight(127 + 23),
BackgroundColor = Shared.Common.ZigbeeColor.Current.XMWhite,
};
bodyView.AddChidren(RowView);
var btnText = new Button()
{
X = Application.GetRealWidth(58),
Width = Application.GetRealWidth(300),
TextAlignment = TextAlignment.CenterLeft,
TextColor = Shared.Common.ZigbeeColor.Current.XMTopTitleText,
Gravity = Gravity.CenterVertical,
TextSize = 14,
};
RowView.AddChidren(btnText);
var btnRightFrameLayout = new FrameLayout()
{
Width = Application.GetRealWidth(204),
X = Application.GetRealWidth(919 - 58),
Y = Application.GetRealHeight(25),
};
RowView.AddChidren(btnRightFrameLayout);
var btnRight = new Button()
{
Height = Application.GetRealHeight(60),
Width = Application.GetRealWidth(60),
X = Application.GetRealWidth(72),
Y = Application.GetRealHeight(32),
UnSelectedImagePath = "DoorLock/RightIcon.png",
};
btnRightFrameLayout.AddChidren(btnRight);
var line2 = new Button()
{
Y = RowView.Height - 1,
X = Application.GetRealWidth(58),
Width = Application.GetRealWidth(962),
Height = 1,
BackgroundColor = Shared.Common.ZigbeeColor.Current.XMRowLine,
};
RowView.AddChidren(line2);
if (i == 0)
{
btnText.Text = Language.StringByID(R.MyInternationalizationString.LockMethod);
}
else if (i == 1)
{
btnText.Text = Language.StringByID(R.MyInternationalizationString.FrozenUser);
btnRight.X = Application.GetRealWidth(50);
btnRight.Y = Application.GetRealHeight(32);
btnRight.Height = Application.GetRealHeight(63);
btnRight.Width = Application.GetRealWidth(104);
btnRight.UnSelectedImagePath = "DoorLock/Switch.png";
btnRight.SelectedImagePath = "DoorLock/SwitchOn.png";
var result = await Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.GetDoorLockOperateAccess(doorLock, curAccountObj.SubAccountDistributedMark);
if (result == true)
{
btnRight.IsSelected = true;
}
else
{
btnRight.IsSelected = false;
}
}
else if (i == 2)
{
if (doorLock.IsFreezeAccount[curAccountObj.SubAccountDistributedMark] == false)
{
btnText.Text = Language.StringByID(R.MyInternationalizationString.TempUnlockPermission);
btnRight.X = Application.GetRealWidth(50);
btnRight.Y = Application.GetRealHeight(32);
btnRight.Height = Application.GetRealHeight(63);
btnRight.Width = Application.GetRealWidth(104);
btnRight.UnSelectedImagePath = "DoorLock/Switch.png";
btnRight.SelectedImagePath = "DoorLock/SwitchOn.png";
line2.Visible = false;
var result1 = await Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.GetDoorLockUnlockAccess(doorLock, curAccountObj.SubAccountDistributedMark);
if (result1 == true)
{
btnRight.IsSelected = true;
}
else
{
btnRight.IsSelected = false;
}
}
else
{
btnText.Width = 0;
btnRight.Width = 0;
line2.Width = 0;
RowView.BackgroundColor = Shared.Common.ZigbeeColor.Current.XMMidFrameLayout;
}
}
int currentIndex = i;
EventHandler eHandler = (sender, e) =>
{
if (currentIndex == 0)
{
var unLockMethod = new Shared.Phone.UserCenter.DoorLock.UnLockMethod(doorLock, curAccountObj);
Shared.Phone.UserView.HomePage.Instance.AddChidren(unLockMethod);
Shared.Phone.UserView.HomePage.Instance.PageIndex += 1;
unLockMethod.Show();
}
else if (currentIndex == 1)
{
btnRight.IsSelected = !btnRight.IsSelected;
if (btnRight.IsSelected)
{
FreezeUser(true);
}
else
{
FreezeUser(false);
}
}
else if (currentIndex == 2)
{
btnRight.IsSelected = !btnRight.IsSelected;
if (btnRight.IsSelected)
{
HasRemoteUnlockAccessMethod(true);
}
else
{
HasRemoteUnlockAccessMethod(false);
}
}
};
btnRightFrameLayout.MouseUpEventHandler += eHandler;
btnRight.MouseUpEventHandler += eHandler;
RowView.MouseUpEventHandler += eHandler;
btnText.MouseUpEventHandler += eHandler;
}
}
//冻结账户
void FreezeUser(bool isFreeze)
{
var alert = new Alert(Language.StringByID(R.MyInternationalizationString.Tip), Language.StringByID(R.MyInternationalizationString.SureToFreezeAccount),
Language.StringByID(R.MyInternationalizationString.Cancel), Language.StringByID(R.MyInternationalizationString.Confrim));
alert.Show();
alert.ResultEventHandler += (sender1, e1) =>
{
if (e1)
{
System.Threading.Tasks.Task.Run(async () =>
{
int successConunt = 0;
int operateConunt = -1;
Application.RunOnMainThread(() => { CommonPage.Loading.Start("Loading..."); });
try
{
var doorLockId = doorLock.DeviceAddr + "_" + doorLock.DeviceEpoint;
var curAccountDoorLockUserList = await Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.GetAccountDoorLockUserList(doorLock, curAccountObj.SubAccountDistributedMark);
if (curAccountDoorLockUserList.Count != 0)
{
//修改云端存储信息
operateConunt = curAccountDoorLockUserList.Count;
foreach (var curDoorLockUser in curAccountDoorLockUserList)
{
// 账户中没有门锁用户
if (curDoorLockUser.DoorLockLocalUserId == null || curDoorLockUser.DoorLockLocalUserId == "")
{
if (isFreeze)
{
var refreshDoorLockData = new ZigBee.Device.DoorLock.RefreshDoorLockData();
if (UserCenterResourse.UserInfo.AuthorityNo != 1)
{
refreshDoorLockData.LoginAccessToken = UserCenterLogic.GetConnectMainToken();
refreshDoorLockData.IsOtherAccountCtrl = true;
}
if (doorLock.DeviceAddr != null)
{
refreshDoorLockData.DoorLockId = doorLock.DeviceAddr + "_" + doorLock.DeviceEpoint;
}
refreshDoorLockData.PrimaryId = curDoorLockUser.Id;
refreshDoorLockData.IsFreezeUser = true;
refreshDoorLockData.IsTempUnlockAuthority = doorLock.HasRemoteUnlockAccess[curAccountObj.SubAccountDistributedMark];
//冻结云端
var result = await ZigBee.Device.DoorLock.SendDoorLockToServer("DoorLock/UpdateDoorLock", refreshDoorLockData);
if (result != null)
{
if (result.StateCode == "Success")
{
successConunt++;
}
else
{
Application.RunOnMainThread(() =>
{
if (isFreeze)
{
new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.FreezeFailed), Direction = AMPopTipDirection.None, CloseTime = 1 }.Show(Common.CommonPage.Instance);
}
else
{
new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.UnFreezeFailed), Direction = AMPopTipDirection.None, CloseTime = 1 }.Show(Common.CommonPage.Instance);
}
return;
});
}
}
else
{
Application.RunOnMainThread(() =>
{
new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.CloudServerResponseOvertime), Direction = AMPopTipDirection.None, CloseTime = 1 }.Show(Common.CommonPage.Instance);
});
}
}
else
{
var refreshDoorLockData = new ZigBee.Device.DoorLock.RefreshDoorLockData();
if (UserCenterResourse.UserInfo.AuthorityNo != 1)
{
refreshDoorLockData.LoginAccessToken = UserCenterLogic.GetConnectMainToken();
refreshDoorLockData.IsOtherAccountCtrl = true;
}
if (doorLock.DeviceAddr != null)
{
refreshDoorLockData.DoorLockId = doorLock.DeviceAddr + "_" + doorLock.DeviceEpoint;
}
refreshDoorLockData.PrimaryId = curDoorLockUser.Id;
refreshDoorLockData.IsFreezeUser = false;
refreshDoorLockData.IsTempUnlockAuthority = doorLock.HasRemoteUnlockAccess[curAccountObj.SubAccountDistributedMark];
//解冻云端
var result = await ZigBee.Device.DoorLock.SendDoorLockToServer("DoorLock/UpdateDoorLock", refreshDoorLockData);
if (result != null)
{
if (result.StateCode == "Success")
{
successConunt++;
}
else
{
Application.RunOnMainThread(() =>
{
new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.FreezeFailed), Direction = AMPopTipDirection.None, CloseTime = 1 }.Show(Common.CommonPage.Instance);
});
}
}
else
{
Application.RunOnMainThread(() =>
{
new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.CloudServerResponseOvertime), Direction = AMPopTipDirection.None, CloseTime = 1 }.Show(Common.CommonPage.Instance);
});
}
}
}
else
{
ZigBee.Device.DoorLock.AccessType accessType;
if (isFreeze)
{
accessType = ZigBee.Device.DoorLock.AccessType.DisEnable;
}
else
{
accessType = ZigBee.Device.DoorLock.AccessType.Enable;
}
//冻结/解冻用户
var passData = doorLock.SetUserAccessData(int.Parse(curDoorLockUser.DoorLockLocalUserId), accessType);
var resultData = await doorLock.DefaultControlAsync(passData);
if (resultData != null && resultData.defaultControlResponseData != null)
{
if (resultData.defaultControlResponseData.status == 32)
{
var refreshDoorLockData = new ZigBee.Device.DoorLock.RefreshDoorLockData();
if (UserCenterResourse.UserInfo.AuthorityNo != 1)
{
refreshDoorLockData.LoginAccessToken = UserCenterLogic.GetConnectMainToken();
refreshDoorLockData.IsOtherAccountCtrl = true;
}
if (doorLock.DeviceAddr != null)
{
refreshDoorLockData.DoorLockId = doorLock.DeviceAddr + "_" + doorLock.DeviceEpoint;
}
refreshDoorLockData.OpenLockMode = curDoorLockUser.OpenLockMode;
refreshDoorLockData.DoorLockLocalUserId = curDoorLockUser.DoorLockLocalUserId;
refreshDoorLockData.PrimaryId = curDoorLockUser.Id;
refreshDoorLockData.IsFreezeUser = true;
refreshDoorLockData.IsTempUnlockAuthority = doorLock.HasRemoteUnlockAccess[curAccountObj.SubAccountDistributedMark];
//冻结云端
var result = await ZigBee.Device.DoorLock.SendDoorLockToServer("DoorLock/UpdateDoorLock", refreshDoorLockData);
if (result != null)
{
if (result.StateCode == "Success")
{
successConunt++;
}
else
{
Application.RunOnMainThread(() =>
{
if (isFreeze)
{
new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.FreezeFailed), Direction = AMPopTipDirection.None, CloseTime = 1 }.Show(Common.CommonPage.Instance);
}
else
{
new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.UnFreezeFailed), Direction = AMPopTipDirection.None, CloseTime = 1 }.Show(Common.CommonPage.Instance);
}
return;
});
}
}
else
{
Application.RunOnMainThread(() =>
{
new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.CloudServerResponseOvertime), Direction = AMPopTipDirection.None, CloseTime = 2 }.Show(Common.CommonPage.Instance);
});
}
}
else if (resultData.defaultControlResponseData.status == 33)
{
var refreshDoorLockData = new ZigBee.Device.DoorLock.RefreshDoorLockData();
if (UserCenterResourse.UserInfo.AuthorityNo != 1)
{
refreshDoorLockData.LoginAccessToken = UserCenterLogic.GetConnectMainToken();
refreshDoorLockData.IsOtherAccountCtrl = true;
}
if (doorLock.DeviceAddr != null)
{
refreshDoorLockData.DoorLockId = doorLock.DeviceAddr + "_" + doorLock.DeviceEpoint;
}
refreshDoorLockData.OpenLockMode = curDoorLockUser.OpenLockMode;
refreshDoorLockData.DoorLockLocalUserId = curDoorLockUser.DoorLockLocalUserId;
refreshDoorLockData.PrimaryId = curDoorLockUser.Id;
refreshDoorLockData.IsFreezeUser = false;
refreshDoorLockData.IsTempUnlockAuthority = doorLock.HasRemoteUnlockAccess[curAccountObj.SubAccountDistributedMark];
//解冻云端
var result = await ZigBee.Device.DoorLock.SendDoorLockToServer("DoorLock/UpdateDoorLock", refreshDoorLockData);
if (result != null)
{
if (result.StateCode == "Success")
{
successConunt++;
}
else
{
Application.RunOnMainThread(() =>
{
new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.FreezeFailed), Direction = AMPopTipDirection.None, CloseTime = 1 }.Show(Common.CommonPage.Instance);
});
}
}
else
{
Application.RunOnMainThread(() =>
{
new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.CloudServerResponseOvertime), Direction = AMPopTipDirection.None, CloseTime = 2 }.Show(Common.CommonPage.Instance);
});
}
}
else
{
Application.RunOnMainThread(() =>
{
if (isFreeze)
{
new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.FreezeFailed) + ".", Direction = AMPopTipDirection.None, CloseTime = 2 }.Show(Common.CommonPage.Instance);
}
else
{
new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.UnFreezeFailed) + ".", Direction = AMPopTipDirection.None, CloseTime = 2 }.Show(Common.CommonPage.Instance);
}
return;
});
}
}
else
{
Application.RunOnMainThread(() =>
{
new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.GwResponseOvertime), Direction = AMPopTipDirection.None, CloseTime = 2 }.Show(Common.CommonPage.Instance);
});
}
}
}
}
else
{
//添加云端存储信息
//冻结/解冻云端
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.EntryTime = System.DateTime.Now;
if (isFreeze)
{
addLockInfo.IsFreezeUser = true;
}
else
{
addLockInfo.IsFreezeUser = false;
}
addLockInfo.IsTempUnlockAuthority = doorLock.HasRemoteUnlockAccess[curAccountObj.SubAccountDistributedMark];
var result = await ZigBee.Device.DoorLock.SendDoorLockToServer("DoorLock/AddDoorLock", addLockInfo);
if (result != null)
{
if (result.StateCode == "Success")
{
operateConunt = 0;
}
else
{
Application.RunOnMainThread(() =>
{
if (isFreeze)
{
new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.FreezeFailed), Direction = AMPopTipDirection.None, CloseTime = 1 }.Show(Common.CommonPage.Instance);
}
else
{
new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.UnFreezeFailed), Direction = AMPopTipDirection.None, CloseTime = 1 }.Show(Common.CommonPage.Instance);
}
return;
});
}
}
else
{
Application.RunOnMainThread(() =>
{
new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.CloudServerResponseOvertime), Direction = AMPopTipDirection.None, CloseTime = 1 }.Show(Common.CommonPage.Instance);
});
}
}
}
catch { }
finally
{
if (operateConunt == successConunt)
{
if (isFreeze)
{
doorLock.IsFreezeAccount[curAccountObj.SubAccountDistributedMark] = true;
}
else
{
doorLock.IsFreezeAccount[curAccountObj.SubAccountDistributedMark] = false;
}
doorLock.ReSave();
}
Application.RunOnMainThread(() =>
{
MidRefresh();
CommonPage.Loading.Hide();
});
}
});
}
else
{
MidRefresh();
}
};
}
//是否给子账户拥有远程开锁的条件
void HasRemoteUnlockAccessMethod(bool hasAccess)
{
var alert = new Alert(Language.StringByID(R.MyInternationalizationString.Tip), Language.StringByID(R.MyInternationalizationString.SureGiveAccessToSubaccount),
Language.StringByID(R.MyInternationalizationString.Cancel), Language.StringByID(R.MyInternationalizationString.Confrim));
alert.Show();
alert.ResultEventHandler += (sender1, e1) =>
{
if (e1)
{
System.Threading.Tasks.Task.Run(async () =>
{
int successConunt = 0;
int operateConunt = -1;
Application.RunOnMainThread(() => { CommonPage.Loading.Start("Loading..."); });
try
{
var resultList = await Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.GetAccountDoorLockUserList(doorLock, curAccountObj.SubAccountDistributedMark);
var uList = new List { };
if (resultList != null)
{
foreach (var a in resultList)
{
uList.Add(a.CloudAccountId);
}
}
var d = uList.Find((value) => { return value == curAccountObj.SubAccountDistributedMark; });
if (d != null)
{
//修改云端存储信息
var curAccountDoorLockUserList = await Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.GetAccountDoorLockUserList(doorLock, curAccountObj.SubAccountDistributedMark);
foreach (var curDoorLockUser in curAccountDoorLockUserList)
{
operateConunt = curAccountDoorLockUserList.Count;
if (hasAccess)
{
var refreshDoorLockData = new ZigBee.Device.DoorLock.RefreshDoorLockData();
if (UserCenterResourse.UserInfo.AuthorityNo != 1)
{
refreshDoorLockData.LoginAccessToken = UserCenterLogic.GetConnectMainToken();
refreshDoorLockData.IsOtherAccountCtrl = true;
}
if (doorLock.DeviceAddr != null)
{
refreshDoorLockData.DoorLockId = doorLock.DeviceAddr + "_" + doorLock.DeviceEpoint;
}
refreshDoorLockData.PrimaryId = curDoorLockUser.Id;
refreshDoorLockData.IsFreezeUser = false;
refreshDoorLockData.IsTempUnlockAuthority = true;
// 授权
var result = await ZigBee.Device.DoorLock.SendDoorLockToServer("DoorLock/UpdateDoorLock", refreshDoorLockData);
if (result != null)
{
if (result.StateCode == "Success")
{
successConunt++;
}
else
{
Application.RunOnMainThread(() =>
{
new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.GiveAccessToSubaccountFailed), Direction = AMPopTipDirection.None, CloseTime = 1 }.Show(Common.CommonPage.Instance);
});
}
}
else
{
Application.RunOnMainThread(() =>
{
new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.CloudServerResponseOvertime), Direction = AMPopTipDirection.None, CloseTime = 1 }.Show(Common.CommonPage.Instance);
});
}
}
else
{
var refreshDoorLockData = new ZigBee.Device.DoorLock.RefreshDoorLockData();
if (UserCenterResourse.UserInfo.AuthorityNo != 1)
{
refreshDoorLockData.LoginAccessToken = UserCenterLogic.GetConnectMainToken();
refreshDoorLockData.IsOtherAccountCtrl = true;
}
if (doorLock.DeviceAddr != null)
{
refreshDoorLockData.DoorLockId = doorLock.DeviceAddr + "_" + doorLock.DeviceEpoint;
}
refreshDoorLockData.PrimaryId = curDoorLockUser.Id;
refreshDoorLockData.IsFreezeUser = false;
refreshDoorLockData.IsTempUnlockAuthority = false;
//取消权限
var result = await ZigBee.Device.DoorLock.SendDoorLockToServer("DoorLock/UpdateDoorLock", refreshDoorLockData);
if (result != null)
{
if (result.StateCode == "Success")
{
successConunt++;
}
else
{
Application.RunOnMainThread(() =>
{
new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.CancelAccessToSubaccountFailed), Direction = AMPopTipDirection.None, CloseTime = 1 }.Show(Common.CommonPage.Instance);
});
}
}
else
{
Application.RunOnMainThread(() =>
{
new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.CloudServerResponseOvertime), Direction = AMPopTipDirection.None, CloseTime = 1 }.Show(Common.CommonPage.Instance);
});
}
}
}
}
else
{
//新增,且不冻结
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.EntryTime = System.DateTime.Now;
addLockInfo.IsFreezeUser = false;
if (hasAccess)
{
addLockInfo.IsTempUnlockAuthority = true;
}
else
{
addLockInfo.IsTempUnlockAuthority = false;
}
var result = await ZigBee.Device.DoorLock.SendDoorLockToServer("DoorLock/AddDoorLock", addLockInfo);
if (result != null)
{
if (result.StateCode == "Success")
{
operateConunt = 0;
}
else
{
Application.RunOnMainThread(() =>
{
if (hasAccess)
{
new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.GiveAccessToSubaccountFailed), Direction = AMPopTipDirection.None, CloseTime = 1 }.Show(Common.CommonPage.Instance);
}
else
{
new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.CancelAccessToSubaccountFailed), Direction = AMPopTipDirection.None, CloseTime = 1 }.Show(Common.CommonPage.Instance);
}
return;
});
}
}
else
{
Application.RunOnMainThread(() =>
{
new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.CloudServerResponseOvertime), Direction = AMPopTipDirection.None, CloseTime = 1 }.Show(Common.CommonPage.Instance);
});
}
}
}
catch { }
finally
{
if (operateConunt == successConunt)
{
if (hasAccess)
{
doorLock.HasRemoteUnlockAccess[curAccountObj.SubAccountDistributedMark] = true;
}
else
{
doorLock.HasRemoteUnlockAccess[curAccountObj.SubAccountDistributedMark] = false;
}
doorLock.ReSave();
}
Application.RunOnMainThread(() =>
{
MidRefresh();
CommonPage.Loading.Hide();
});
}
});
}
else
{
MidRefresh();
}
};
}
#region ◆ 接口实现__________________________
///
/// 处理变化事件 --将弃用 改用DeviceInfoChange()
///
/// The changed.
/// Common.
public void Changed(CommonDevice common)
{
}
///
/// 处理变化事件
///
///
///
public void DeviceInfoChange(CommonDevice common, string typeTag)
{
}
///
/// Changeds the IL ogic status.
///
/// Logic.
public void ChangedILogicStatus(ZigBee.Device.Logic logic)
{
}
///
/// Changeds the IS cene status.
///
/// Scene.
public void ChangedISceneStatus(Scene scene)
{
}
#endregion
}
}