using System;
using System.Collections.Generic;
using Newtonsoft.Json.Linq;
using Shared.Common;
using Shared.Phone.UserView;
using Shared.R;
using ZigBee.Device;
namespace Shared.Phone.Device.Logic
{
public class SkipView:FrameLayout
{
///
/// 其它界面跳进来的入口
///
public async static void SkipAddLogic(int intvalue, DoorLock doorLock = null, UserCenter.MemberInfoRes accountObj = null)
{
/// 0.正常自动化;1.门锁自动化;2.Sone门锁;
switch (intvalue)
{
case 0:
{
//new一个新逻辑对象;
//新增正常自动化入口
Common.Logic.CurrentLogic = new Common.Logic();
Common.Logic.CurrentLogic.IsEnable = 1;//默认为开
Common.Logic.CurrentLogic.LogicType = 0;//标记逻辑类型
Common.Logic.CurrentLogic.LogicName = Language.StringByID(MyInternationalizationString.automation1);
var addLogicPage = new AddLogicPage();
UserView.HomePage.Instance.AddChidren(addLogicPage);
UserView.HomePage.Instance.PageIndex += 1;
addLogicPage.Show();
}
break;
case 1:
{
//进入门锁联动事件入口
Send.UserMemberInfoRes = accountObj;
Send.CurrentDoorLock = doorLock;
if (accountObj == null)
{
///防止抛异常
Send.UserMemberInfoRes = new UserCenter.MemberInfoRes();
}
if (doorLock == null)
{
///防止抛异常
Send.CurrentDoorLock = new DoorLock();
}
///进来刷新一次设备列表;
Common.Logic.LogicDviceList.Clear();
if (Common.Logic.LogicDviceList.Count == 0)
{
Common.Logic.LogicDviceList.AddRange(LocalDevice.Current.listAllDevice.ToArray());
}
var doorLockLogicList = new DoorLockLogic.LockLogicList();
UserView.HomePage.Instance.AddChidren(doorLockLogicList);
UserView.HomePage.Instance.PageIndex += 1;
doorLockLogicList.Show();
}
break;
}
}
#region ◆ 自动化__________________________
///
/// 自动化功能代码入口
///
public static void ShowAutotionView(FrameLayout functionSceneAutoBodyView)
{
//functionSceneAutoBodyView.BackgroundColor = ZigbeeColor.Current.LogicMiddleBackgroundColor;
#region ---推荐模板的组件
//推荐模板背景控件
var bjFrameLayout = new FrameLayout
{
Width = Application.GetRealWidth(1080 - 58),
Height = Application.GetRealHeight(170),
BackgroundColor = ZigbeeColor.Current.LogicBackgroundColor,
X = Application.GetRealWidth(58),
//Radius = (uint)Application.GetRealHeight(50),
Y = Application.GetRealHeight(30),
};
functionSceneAutoBodyView.AddChidren(bjFrameLayout);
bjFrameLayout.SetCornerWithSameRadius(Application.GetRealHeight(58), HDLUtils.RectCornerBottomLeft);
//图标控件
var sigBtn = new Button
{
Width = Application.GetMinRealAverage(84),
Height = Application.GetMinRealAverage(84),
UnSelectedImagePath = "ZigeeLogic/sign.png",
X = Application.GetRealWidth(58),
Gravity = Gravity.CenterVertical,
};
bjFrameLayout.AddChidren(sigBtn);
//推荐模板文本控件
var recommendtextBtn = new Button
{
Width = Application.GetMinRealAverage(300),
Height = Application.GetMinRealAverage(84),
X = sigBtn.Right + Application.GetRealWidth(35),
TextAlignment = TextAlignment.CenterLeft,
//Text = "推荐模板",
TextID = MyInternationalizationString.logictemplate,
Gravity = Gravity.CenterVertical,
TextColor = ZigbeeColor.Current.LogicBtnSelectedColor,
TextSize = 15,
};
bjFrameLayout.AddChidren(recommendtextBtn);
//推荐模板开关控件
var recommendswitchBtn = new Button
{
Width = Application.GetRealWidth(104),
Height = Application.GetRealHeight(63),
UnSelectedImagePath = "ZigeeLogic/logicclose.png",
SelectedImagePath = "ZigeeLogic/logicopen.png",
X = bjFrameLayout.Width - Application.GetRealWidth(104 + 58),
Gravity = Gravity.CenterVertical,
};
bjFrameLayout.AddChidren(recommendswitchBtn);
#endregion
//默认推荐模板左右可滑控件
var scenehorizontalScrol = new HorizontalScrolViewLayout
{
Width = Application.GetRealWidth(1080 - 58),
X = Application.GetRealWidth(58),
Y = bjFrameLayout.Bottom + Application.GetRealHeight(30),
Height = Application.GetRealHeight(0),
};
functionSceneAutoBodyView.AddChidren(scenehorizontalScrol);
//显示自动化列表上下可滑控件
var logicScrolView = new VerticalRefreshLayout//VerticalScrolViewLayout
{
Height = functionSceneAutoBodyView.Height - bjFrameLayout.Height - bjFrameLayout.Y - scenehorizontalScrol.Height - Application.GetRealHeight(30),
//BackgroundColor = ZigbeeColor.Current.LogicBackgroundColor,/
X = Application.GetRealWidth(58),
Y = scenehorizontalScrol.Bottom,
};
functionSceneAutoBodyView.AddChidren(logicScrolView);
logicScrolView.SetCornerWithSameRadius(Application.GetRealHeight(58), HDLUtils.RectCornerTopLeft);
bool no = false;
//显示默认模板的界面事件
recommendswitchBtn.MouseUpEventHandler += (sender, e) =>
{
int Yheight = 0;
recommendswitchBtn.IsSelected = !recommendswitchBtn.IsSelected;
scenehorizontalScrol.RemoveAll();
if (recommendswitchBtn.IsSelected)
{
no = true;
scenehorizontalScrol.Height = Application.GetRealHeight(246);
Yheight = 20;
for (int i = 1; i < 4; i++)
{
var frameLayout = new FrameLayout
{
Width = Application.GetMinRealAverage(369 + 46),
Height = Application.GetMinRealAverage(246),
};
scenehorizontalScrol.AddChidren(frameLayout);
var logiciocnBtn = new Button
{
Width = Application.GetMinRealAverage(369),
Height = Application.GetMinRealAverage(246),
UnSelectedImagePath = "ZigeeLogic/" + i + ".png",
Tag = i,
};
frameLayout.AddChidren(logiciocnBtn);
var logicnameBtn = new Button
{
Width = Application.GetMinRealAverage(250),
Height = Application.GetMinRealAverage(80),
X = Application.GetRealWidth(23),
Y = Application.GetRealHeight(246 - 23 - 80),
TextAlignment = TextAlignment.CenterLeft,
TextColor = ZigbeeColor.Current.LogicBtnSaveTextColor,
TextSize = 14,
};
frameLayout.AddChidren(logicnameBtn);
if (i == 1)
{
logicnameBtn.Text = Language.StringByID(MyInternationalizationString.onlight);
}
else if (i == 2)
{
logicnameBtn.Text = Language.StringByID(MyInternationalizationString.offlight);
}
else if (i == 3)
{
logicnameBtn.Text = Language.StringByID(MyInternationalizationString.automation1);
}
EventHandler iconclick = (sender1, e1) =>
{
Common.Logic.CurrentLogic = new Common.Logic();
Common.Logic.CurrentLogic.IsEnable = 1;//默认为开
if (logiciocnBtn.Tag.ToString() == "3")
{
Common.Logic.CurrentLogic.LogicName = logicnameBtn.Text;
//Common.Logic.CurrentLogic.LogicCustomPushText = Common.Logic.CurrentLogic.LogicName + Language.StringByID(MyInternationalizationString.defaulttext);
var addLogicPage = new Device.Logic.AddLogicPage();
HomePage.Instance.AddChidren(addLogicPage);
HomePage.Instance.PageIndex += 1;
addLogicPage.Show();
}
else
{
Common.Logic.CurrentLogic.LogicName = logicnameBtn.Text;
//Common.Logic.CurrentLogic.LogicCustomPushText = Common.Logic.CurrentLogic.LogicName + Language.StringByID(MyInternationalizationString.defaulttext);
Device.Logic.TemplatePage templatePage = new Device.Logic.TemplatePage();
Device.Logic.TemplatePage.s = logiciocnBtn.Tag.ToString();
HomePage.Instance.AddChidren(templatePage);
HomePage.Instance.PageIndex += 1;
templatePage.Show();
}
};
logiciocnBtn.MouseUpEventHandler += iconclick;
logicnameBtn.MouseUpEventHandler += iconclick;
}
}
else
{
no = false;
scenehorizontalScrol.Height = Application.GetRealHeight(0);
Yheight = 0;
}
logicScrolView.Y = scenehorizontalScrol.Bottom + Yheight;
logicScrolView.Height = functionSceneAutoBodyView.Height - bjFrameLayout.Height - bjFrameLayout.Y - scenehorizontalScrol.Height - Application.GetRealHeight(30) - Yheight;
Automationview(logicScrolView, no);
};
//下拉刷新自动化列表的事件
logicScrolView.BeginHeaderRefreshingAction += () =>
{
if (!Config.Instance.Home.IsVirtually)
{//虚拟的不获取网关逻辑列表
//重新刷新logic列表
Common.Logic.LogicList.Clear();
Read(logicScrolView, no);
}
//关闭刷新View;
logicScrolView.EndHeaderRefreshing();
};
//自动化
Read(logicScrolView, no);
}
///
/// 读取自动化列表数据;
///
///
private static async void Read(VerticalRefreshLayout logicScrolView, bool no)
{
//if (Config.Instance.HomeId != UserCenter.UserCenterResourse.AccountOption.OldHomeStringId)
//{
// //切换住宅清除之前缓存数据;
// Common.Logic.LogicList.Clear();
// Common.Logic.LockLogicList.Clear();
// Common.Logic.SoneLogicList.Clear();
//}
CommonPage.Loading.Start();
try
{
if (!Config.Instance.Home.IsVirtually)//虚拟的不获取网关逻辑列表
{
if (Common.Logic.LogicList.Count == 0)
{
var Idlist1 = await Send.GetLogicId(0);//
var Idlist2 = await Send.GetLogicId(2);//门锁常开模式
if (Idlist1.Count != 0)
{
var listlogic1 = await Send.ReadList(Idlist1.Count, 0);
for (int j = 0; j < listlogic1.Count; j++)
{
var logic = listlogic1[j];
if (logic.LogicType != 0)
{
continue;
}
Common.Logic.LogicList.Add(logic);
}
}
if (Idlist2.Count != 0)
{
var listlogic2 = await Send.ReadList(Idlist2.Count, 2);
for (int j = 0; j < listlogic2.Count; j++)
{
var logic = listlogic2[j];
if (logic.LogicType != 2)
{
continue;
}
Common.Logic.LogicList.Add(logic);
}
}
}
}
}
catch (Exception e)
{
var dd = e.Message;
}
//自动化
Automationview(logicScrolView, no);
CommonPage.Loading.Hide();
}
static RowLayout selectedRow = new RowLayout() { Tag = "0" };//记录左滑状态
///
/// 加载自动化列表界面
///
/// Refresview.
private static async void Automationview(VerticalRefreshLayout refresview, bool no)
{
refresview.RemoveAll();
if (Common.Logic.LogicList.Count == 0 && no == false)
{
//就是为了显示引导添加图标;
refresview.BackgroundColor = 0x00000000;
var noFrameLayout = new FrameLayout
{
Height = Application.GetRealHeight(434 + 200 + 32 + 294 - 55),
//BackgroundColor = ZigbeeColor.Current.LogicMiddleBackgroundColor,
};
refresview.AddChidren(noFrameLayout);
var noIconBtn = new Button
{
Y = Application.GetRealHeight(294 - 55),
Width = Application.GetMinRealAverage(757),
Height = Application.GetMinRealAverage(435),
UnSelectedImagePath = "Item/NoFunction.png",
X = Application.GetRealWidth(104),
};
noFrameLayout.AddChidren(noIconBtn);
var noTextBtn = new Button()
{
Y = noIconBtn.Bottom,
Height = Application.GetRealHeight(200) + Application.GetRealHeight(32),
Width = Application.GetRealWidth(700),
//Gravity = Gravity.CenterHorizontal,
Text = Language.StringByID(MyInternationalizationString.automationaddtext).Replace("{\\r\\n}", "\r\n"),
TextColor = ZigbeeColor.Current.GXCPlaceHolderTextColor,
TextAlignment = TextAlignment.Center,
IsMoreLines = true,
X = Application.GetRealWidth(190 - 58),
};
noFrameLayout.AddChidren(noTextBtn);
}
else
{
if (Common.Logic.LogicList.Count == 0 && no == true)
{
///改变滑动view的颜色;
refresview.BackgroundColor = 0x00000000;
}
else
{
refresview.BackgroundColor = ZigbeeColor.Current.LogicBackgroundColor;
}
}
int i = 1;//局部变量,默认是第一条逻辑;
foreach (var logic in Common.Logic.LogicList)
{
var fLayout = new FrameLayout
{
Height = Application.GetRealHeight(190 + 30),
Width = Application.GetRealWidth(1080 - 58),
BackgroundColor = ZigbeeColor.Current.LogicBackgroundColor,
};
refresview.AddChidren(fLayout);
var logicRowlayout = new RowLayout
{
Height = Application.GetRealHeight(190 + 30),
Width = Application.GetRealWidth(1080 - 58),
LineColor = ZigbeeColor.Current.LogicBackgroundColor,
BackgroundColor = ZigbeeColor.Current.LogicBackgroundColor,
SubViewWidth = Application.GetRealWidth(184),//改变编辑控件宽度多少;
Tag = i.ToString(),
};
fLayout.AddChidren(logicRowlayout);
//左滑菜单事件
logicRowlayout.OpenMenuAction += () =>
{
if (selectedRow.Tag.ToString() != logicRowlayout.Tag.ToString())
{ //保留左滑只有一个;
selectedRow.HideMenu();//
}
selectedRow = logicRowlayout;
};
if (i == 1)
{
//实现android显示逻辑列表的圆角;
fLayout.SetCornerWithSameRadius(Application.GetRealHeight(58), HDLUtils.RectCornerTopLeft);
logicRowlayout.SetCornerWithSameRadius(Application.GetRealHeight(58), HDLUtils.RectCornerTopLeft);
}
i++;
var logicnameBtn = new Button
{
Height = Application.GetRealHeight(58),
Width = Application.GetRealWidth(350),
Text = logic.LogicName,
X = Application.GetRealWidth(12 + 46),
Y = Application.GetRealHeight(30),
TextAlignment = TextAlignment.CenterLeft,
TextColor = ZigbeeColor.Current.LogicTextBlackColor,
TextSize = 14,
};
logicRowlayout.AddChidren(logicnameBtn);
var logicswitchBtn = new Button
{
Width = Application.GetMinRealAverage(104),
Height = Application.GetMinRealAverage(63),
UnSelectedImagePath = "ZigeeLogic/logicclose.png",
SelectedImagePath = "ZigeeLogic/logicopen.png",
X = logicRowlayout.Width - Application.GetRealWidth(104 + 58),
Y = Application.GetRealHeight(58 + 30 + 9 + 30),
};
logicRowlayout.AddChidren(logicswitchBtn);
logicswitchBtn.MouseUpEventHandler += (sender1, e1) =>
{
logicswitchBtn.IsSelected = !logicswitchBtn.IsSelected;
if (logicswitchBtn.IsSelected)
{
//逻辑开
logic.IsEnable = 1;
StatusColor(logic, logicRowlayout, 1);
}
else
{
//逻辑关
logic.IsEnable = 0;
StatusColor(logic, logicRowlayout, 0);
}
if (!Config.Instance.Home.IsVirtually)
{
Send.LogicControlSwitch(logic);
}
//Logic.Send.AddModifyLogic(logic);
};
if (logic.IsEnable == 1)
{
logicswitchBtn.IsSelected = true;
StatusColor(logic, logicRowlayout, 1);
}
else if (logic.IsEnable == 0)
{
logicswitchBtn.IsSelected = false;
StatusColor(logic, logicRowlayout, 0);
}
///编辑
var edit = new Button
{
BackgroundColor = ZigbeeColor.Current.LogicEditBlackColor1,
Text = Language.StringByID(MyInternationalizationString.edit),
TextColor = ZigbeeColor.Current.LogicBtnSaveTextColor,
};
logicRowlayout.AddRightView(edit);
if (logic.LogicType == 2)
{
edit.TextID = MyInternationalizationString.look;
}
edit.MouseUpEventHandler += (sender, e) =>
{
Common.Logic.CurrentLogic = logic;
if (Common.Logic.CurrentLogic.LogicType == 2)
{
var oneLogic = new OneLogic();
UserView.HomePage.Instance.AddChidren(oneLogic);
UserView.HomePage.Instance.PageIndex += 1;
oneLogic.Show(true);
}
else
{
var logicCommunalPage = new LogicCommunalPage();
HomePage.Instance.AddChidren(logicCommunalPage);
HomePage.Instance.PageIndex += 1;
logicCommunalPage.Show(() => { logicnameBtn.Text = logic.LogicName; Automationview(refresview, no); });
}
};
///删除
var del = new Button
{
BackgroundColor = ZigbeeColor.Current.LogicDelBlackColor1,
Text = Language.StringByID(MyInternationalizationString.del),
TextColor = ZigbeeColor.Current.LogicBtnSaveTextColor,
};
logicRowlayout.AddRightView(del);
del.MouseUpEventHandler += (sender, e) =>
{
var alert = new UserCenter.ShowMsgControl(UserCenter.ShowMsgType.Confirm,
Language.StringByID(MyInternationalizationString.doyouwanttodelete),
Language.StringByID(MyInternationalizationString.confrim));
alert.Show();
alert.ConfirmClickEvent += () =>
{
Common.Logic.LogicList.Remove(logic);
Automationview(refresview, no);
if (!Config.Instance.Home.IsVirtually)
{
Send.DelLogic(logic.LogicId);
}
};
};
var line = new Button
{
Y = fLayout.Height - 1,
Height = 1,
X = Application.GetRealWidth(58),
Width = Application.GetRealWidth(1080 - 58),
BackgroundColor = ZigbeeColor.Current.LogicRowLayoutLineColor,
};
fLayout.AddChidren(line);
}
}
///
/// 显示自动化输出功能模块图标的颜色
///
///
///
///
private static void StatusColor(Common.Logic logic, RowLayout logicRowlayout, int intvalue)
{
var logictimeBtn = new Button
{
Height = Application.GetRealHeight(58),
Width = logicRowlayout.Width - Application.GetRealWidth(58 + 12 + 350),
Y = Application.GetRealHeight(30),
X = Application.GetRealWidth(365),
TextAlignment = TextAlignment.CenterRight,
TextColor = ZigbeeColor.Current.LogicListWeekTextColor,
};
logicRowlayout.AddChidren(logictimeBtn);
///显示执行周期
Method.UpdateWeek(logictimeBtn, logic);
List indexlist = new List();
List iconIndexlist = new List();
for (int i = 0; i < logic.Actions.Count; i++)
{
var linkType = logic.Actions[i]["LinkType"].ToString();
var d = indexlist.Find((value) => { return value == linkType; });
if (d == null)
{
indexlist.Add(linkType);
}
}
//排列图标顺序;
if (indexlist.Contains("0") || indexlist.Contains("8"))
{
iconIndexlist.Add("0");
}
if (indexlist.Contains("2"))
{
iconIndexlist.Add("2");
}
if (indexlist.Contains("6"))
{
iconIndexlist.Add("6");
}
if (indexlist.Contains("7"))
{
iconIndexlist.Add("7");
}
for (int i = 0; i < iconIndexlist.Count; i++)
{
var iconindex = iconIndexlist[i];
var typebjBtn = new FrameLayout
{
Width = Application.GetMinRealAverage(82),
Height = Application.GetMinRealAverage(82),
X = Application.GetRealWidth(58) + Application.GetRealWidth(12 + (12 + 82 + 45 + 12) * i),
Y = Application.GetRealHeight(58 + 30 + 30),
Radius = (uint)Application.GetMinRealAverage(41),
BackgroundColor = ZigbeeColor.Current.LogicMiddleBackgroundColor,
};
logicRowlayout.AddChidren(typebjBtn);
var typeIconBtn = new Button
{
Width = Application.GetMinRealAverage(58),
Height = Application.GetMinRealAverage(58),
Gravity = Gravity.Center,
};
typebjBtn.AddChidren(typeIconBtn);
var connectIconBtn = new Button
{
Y = typebjBtn.Y + Application.GetRealHeight(35),
X = Application.GetRealWidth(58) + Application.GetRealWidth((12 + 82 + 12) + (12 + 45 + 82 + 12) * i),
Width = Application.GetRealWidth(48),
Height = Application.GetRealHeight(15),
UnSelectedImagePath = "ZigeeLogic/connect.png",
};
logicRowlayout.AddChidren(connectIconBtn);
if (iconIndexlist.Count - 1 == i)
{
connectIconBtn.Visible = false;
}
switch (iconindex)
{
case "0":
{
if (intvalue == 1)
{
typeIconBtn.UnSelectedImagePath = "ZigeeLogic/function1.png";
typebjBtn.BackgroundColor = ZigbeeColor.Current.LogicFunction1Color;
}
else
{
typeIconBtn.UnSelectedImagePath = "ZigeeLogic/nofunction.png";
typebjBtn.BackgroundColor = ZigbeeColor.Current.LogicMiddleBackgroundColor;
}
}
break;
case "2":
{
if (intvalue == 1)
{
typeIconBtn.UnSelectedImagePath = "ZigeeLogic/scene1.png";
typebjBtn.BackgroundColor = ZigbeeColor.Current.LogicScene1Color;
}
else
{
typeIconBtn.UnSelectedImagePath = "ZigeeLogic/noscene.png";
typebjBtn.BackgroundColor = ZigbeeColor.Current.LogicMiddleBackgroundColor;
}
}
break;
case "6":
{
if (intvalue == 1)
{
typeIconBtn.UnSelectedImagePath = "ZigeeLogic/security1.png";
typebjBtn.BackgroundColor = ZigbeeColor.Current.LogicSecurity1Color;
}
else
{
typeIconBtn.UnSelectedImagePath = "ZigeeLogic/nosecurity.png";
typebjBtn.BackgroundColor = ZigbeeColor.Current.LogicMiddleBackgroundColor;
}
}
break;
case "7":
{
if (intvalue == 1)
{
typeIconBtn.UnSelectedImagePath = "ZigeeLogic/delay1.png";
typebjBtn.BackgroundColor = ZigbeeColor.Current.LogicDelay1Color;
}
else
{
typeIconBtn.UnSelectedImagePath = "ZigeeLogic/nodelay.png";
typebjBtn.BackgroundColor = ZigbeeColor.Current.LogicMiddleBackgroundColor;
}
}
break;
}
}
}
#endregion
///
/// 门锁失效设置用的方法(相当一个关闭常开模式按钮,分类-自动化-不需要显示该自动化)
///
/// 时间值
/// 设备
///
public static async System.Threading.Tasks.Task LockAddModifyLogic(int timeVlaue, CommonDevice common)
{
//读取系统当前时间:时-分
var h = DateTime.Now.ToString("HH");
var m = DateTime.Now.ToString("mm");
Dictionary timeConditionsInfo = new Dictionary();
timeConditionsInfo.Add("Type", "0");
timeConditionsInfo.Add("IsValid", "1");
timeConditionsInfo.Add("DateType", "0");
timeConditionsInfo.Add("RemindTime", "0");
timeConditionsInfo.Add("EnDelay", "0");
timeConditionsInfo.Add("DelayTime", "0");
timeConditionsInfo.Add("StartHour", h);
timeConditionsInfo.Add("StartMin", m);
if (UserCenter.UserCenterResourse.HideOption.DoorLockNomallyOpenTimeMode == 1)
{
//强制变更时间模式为分钟
timeConditionsInfo.Add("DoorLockOpenDelayTime", (timeVlaue * 60).ToString());
}
else
{
timeConditionsInfo.Add("DoorLockOpenDelayTime", (timeVlaue * 3600).ToString());
}
Dictionary actionsInfo = new Dictionary();
actionsInfo.Add("LinkType", 8);
actionsInfo.Add("DeviceAddr", common.DeviceAddr);
actionsInfo.Add("Epoint", "200");
actionsInfo.Add("PassData", "055704010113");//默认门锁常关
Dictionary accounts = new Dictionary();
accounts.Add("Type", "8");
accounts.Add("Option4", common.DeviceAddr.ToString());//用于判断识别是哪个门锁;
accounts.Add("Option2", common.DeviceEpoint.ToString());
Common.Logic currentLogic = new Common.Logic();
currentLogic.IsEnable = 1;//默认为开
currentLogic.TimeAttribute.Repeat = 0;//执行一次
currentLogic.LogicType = 3;//标记逻辑类型
currentLogic.LogicName = Language.StringByID(R.MyInternationalizationString.openmode);
currentLogic.Conditions.Add(timeConditionsInfo);
currentLogic.Actions.Add(actionsInfo);
currentLogic.Accounts.Add(accounts);
var logicIfon = await Send.AddModifyLogic(currentLogic);
if (logicIfon != null && logicIfon.LogicId != 0)
{
//添加门锁失效时间的历史记录
UserCenter.HdlDeviceDoorLockLogic.Current.AddDoorHistoryLog((DoorLock)common, 9003, timeVlaue.ToString());
return logicIfon.LogicId;//表示添加成功;
}
return 0;//表示添加失败;
}
///
/// s-one门锁是否存在自动化的方法;
/// 注意(参数:2-常开自动化;3-失效时间自动化);
/// 返回值:0不存在;其它值都存在;
///
public static async System.Threading.Tasks.Task Exist(int valueInt, ZigBee.Device.DoorLock doorLock)
{
int exist = 0;
var IdList = await Send.GetLogicId(valueInt);
if (IdList.Count != 0)
{
for (int i = 0; i < IdList.Count; i++)
{
var id = IdList[i];
var logic = await Send.GetLogic(id, valueInt);
if (logic != null)
{
if (ExistLogic(logic, doorLock))
{
exist = id;
///找到退出
break;
}
}
}
}
return exist;
}
///
///获取门锁时效性逻辑信息
/// 返回值:null不存在;其它值都存在;
///
public static async System.Threading.Tasks.Task GetLogicIfon(ZigBee.Device.DoorLock doorLock)
{
Common.Logic logic = null;
var Idlist = await Send.GetLogicId(3);
if (Idlist.Count != 0)
{
//默认取第一个逻辑ID(时效性只有一条逻辑)
int exist = Idlist[0];
logic = await Send.GetLogic(exist, 3);
if (!ExistLogic(logic, doorLock))
{
logic = null;
}
}
return logic;
}
///
///删除该门锁所有时效性自动化
/// 返回值:true成功;false失败;
///
public static async System.Threading.Tasks.Task DelAllLogic(ZigBee.Device.DoorLock doorLock)
{
bool _if = false;
var Idlist = await Send.GetLogicId(3);
if (Idlist.Count != 0)
{
for (int i = 0; i < Idlist.Count; i++)
{
int id = Idlist[i];
var logic = await Send.GetLogic(id, 3);
if (logic != null)
{
if (ExistLogic(logic, doorLock))
{
//本来只有一条时效性自动化,
//防止特殊情况,找到就删除掉;
//var valueInt = await Send.DelLogic(id);
//if (valueInt == 0)
//{
// _if = true;
//}
//(考虑性能默认删除成功,直接返回成功结果true)
_if = true;
Send.DelLogic(id);
}
}
}
}
return _if;
}
///
/// 查找这一条自动化是否属于该门锁
///
///
public static bool ExistLogic(Common.Logic logic, ZigBee.Device.DoorLock doorLock)
{
for (int j = 0; j < logic.Accounts.Count; j++)
{
//Option4是设备mac;
if (logic.Accounts[j]["Option4"].ToString() == doorLock.DeviceAddr)
{
//查找是否是那个门锁;
//如果不是该门锁联动事件不显示出来;
return true;
}
}
return false;
}
}
}