using System;
using System.Collections.Generic;
using System.Linq;
using HDL_ON.DAL;
namespace HDL_ON.Entity
{
public class FunctionList
{
public FunctionList()
{
}
///
/// 空调列表
///
public List aCs = new List();
///
/// 灯光列表
///
public List lights = new List();
///
/// 窗帘列表
///
public List curtains = new List();
///
/// 地热列表
///
public List floorHeatings = new List();
#region 家电列表 electricals
///
/// 家电列表
///
public List electricals
{
get
{
if(fans == null)
{
fans = new List();
}
if(switchSockets == null)
{
switchSockets = new List();
}
if(tVs == null)
{
tVs = new List();
}
var list = new List();
list.AddRange(fans);
list.AddRange(switchSockets);
list.AddRange(tVs);
return list;
}
}
///
/// 风扇列表
///
public List fans = new List();
///
/// 电视列表
///
public List tVs = new List();
///
/// 家电列表
///
public List switchSockets = new List();
#endregion
///
/// 环境传感器列表
///
public List sensorsEnvironmentalScience = new List();
///
/// 场景列表
///
public List scenes = new List();
///
/// 功能列表
///
List deviceFunctionList;
//[Newtonsoft.Json.JsonIgnore]
//public List functions = new List();
///
/// 获取所有功能列表
///
public List GetAllFunction()
{
var fs = new List();
fs.AddRange(GetAllDeviceFunctionList());
fs.AddRange(scenes);
return fs;
}
///
/// 获取设备功能列表
///
public List GetAllDeviceFunctionList()
{
if (deviceFunctionList == null)
{
deviceFunctionList = new List();
deviceFunctionList.AddRange(aCs);
deviceFunctionList.AddRange(lights);
deviceFunctionList.AddRange(curtains);
deviceFunctionList.AddRange(floorHeatings);
deviceFunctionList.AddRange(electricals);
deviceFunctionList.AddRange(sensorsEnvironmentalScience);
deviceFunctionList.AddRange(UI.Music.A31MusicModel.A31MusicModelList);
}
try
{
deviceFunctionList.OrderByDescending(o => o.usageCount).ToList();
}
catch (Exception ex)
{
MainPage.Log($"设备功能排序异常:{ex.Message}");
}
return deviceFunctionList;
}
///
/// 清空设备功能列表
///
public void ClearAllDeviceFunctionList()
{
aCs = new List();
lights = new List();
curtains = new List();
floorHeatings = new List();
tVs = new List();
switchSockets = new List();
fans = new List();
sensorsEnvironmentalScience = new List();
//functions = new List();
scenes = new List();
deviceFunctionList = null;
}
///
/// 接收bus软件上传的功能
/// tcp方式
///
///
public void AddDeviceFunction(Function sidObj0)
{
switch (sidObj0.functionType)
{
case FunctionType.AC:
var sidObj = Newtonsoft.Json.JsonConvert.DeserializeObject(Newtonsoft.Json.JsonConvert.SerializeObject(sidObj0));
DB_ResidenceData.functionList.aCs.Add(sidObj);
sidObj.SaveFunctionData();
break;
case FunctionType.FloorHeating:
var sidObj1 = Newtonsoft.Json.JsonConvert.DeserializeObject(Newtonsoft.Json.JsonConvert.SerializeObject(sidObj0));
DB_ResidenceData.functionList.floorHeatings.Add(sidObj1);
sidObj1.SaveFunctionData();
break;
case FunctionType.Dimmer:
case FunctionType.RGB:
case FunctionType.Relay:
var sidObj2 = Newtonsoft.Json.JsonConvert.DeserializeObject(Newtonsoft.Json.JsonConvert.SerializeObject(sidObj0));
DB_ResidenceData.functionList.lights.Add(sidObj2);
sidObj2.SaveFunctionData();
break;
case FunctionType.Curtain:
var sidObj3 = Newtonsoft.Json.JsonConvert.DeserializeObject(Newtonsoft.Json.JsonConvert.SerializeObject(sidObj0));
DB_ResidenceData.functionList.curtains.Add(sidObj3 );
sidObj3.SaveFunctionData();
break;
case FunctionType.TV:
var sidObj4 = Newtonsoft.Json.JsonConvert.DeserializeObject(Newtonsoft.Json.JsonConvert.SerializeObject(sidObj0));
DB_ResidenceData.functionList.tVs.Add(sidObj4);
sidObj4.SaveFunctionData();
break;
case FunctionType.Socket:
var sidObj5 = Newtonsoft.Json.JsonConvert.DeserializeObject(Newtonsoft.Json.JsonConvert.SerializeObject(sidObj0));
DB_ResidenceData.functionList.switchSockets.Add(sidObj5);
sidObj5.SaveFunctionData();
break;
case FunctionType.Fan:
var sidObj6 = Newtonsoft.Json.JsonConvert.DeserializeObject(Newtonsoft.Json.JsonConvert.SerializeObject(sidObj0));
DB_ResidenceData.functionList.fans.Add(sidObj6);
sidObj6.SaveFunctionData();
break;
case FunctionType.CO2:
case FunctionType.TVOC:
case FunctionType.PM25:
case FunctionType.Temp:
case FunctionType.Humidity:
var sidObj7 = Newtonsoft.Json.JsonConvert.DeserializeObject(Newtonsoft.Json.JsonConvert.SerializeObject(sidObj0));
DB_ResidenceData.functionList.sensorsEnvironmentalScience.Add(sidObj7);
sidObj7.SaveFunctionData();
break;
}
}
///
/// 接收bus软件上传的功能
/// http udp
///
///
public void AddFunction(object obj)
{
var f = Newtonsoft.Json.JsonConvert.DeserializeObject(obj.ToString());
switch (f.functionCategory)
{
case FunctionCategory.Thermostat:
switch (f.functionType)
{
case FunctionType.AC:
aCs.Add(Newtonsoft.Json.JsonConvert.DeserializeObject(obj.ToString()));
break;
case FunctionType.FloorHeating:
floorHeatings.Add(Newtonsoft.Json.JsonConvert.DeserializeObject(obj.ToString()));
break;
}
break;
case FunctionCategory.Light:
lights.Add(Newtonsoft.Json.JsonConvert.DeserializeObject(obj.ToString()));
break;
case FunctionCategory.Curtain:
curtains.Add(Newtonsoft.Json.JsonConvert.DeserializeObject(obj.ToString()));
break;
case FunctionCategory.Electrical:
switch(f.functionType)
{
case FunctionType.TV:
electricals.Add(Newtonsoft.Json.JsonConvert.DeserializeObject(obj.ToString()));
break;
case FunctionType.Socket:
electricals.Add(Newtonsoft.Json.JsonConvert.DeserializeObject(obj.ToString()));
break;
case FunctionType.Fan:
electricals.Add(Newtonsoft.Json.JsonConvert.DeserializeObject(obj.ToString()));
break;
}
break;
case FunctionCategory.Sensor:
switch(f.functionType)
{
case FunctionType.TVOC:
case FunctionType.CO2:
case FunctionType.PM25:
case FunctionType.Humidity:
//case FunctionType.Noise:
sensorsEnvironmentalScience.Add(Newtonsoft.Json.JsonConvert.DeserializeObject(obj.ToString()));
break;
}
break;
}
}
}
}