using System;
using System.Collections.Generic;
using System.Linq;
using Shared.SimpleControl;
namespace Shared
{
[System.Serializable]
public class CommonConfig
{
public static readonly string ConfigFile = "CommonConfig";
///
/// 设备列表
///
public List FunctionList = new List ();
///
/// 场景列表
///
public List SceneList = new List ();
///
///
///
public HomeGatewayInfo HomeGatewayInfo = null;
///
///
///
public MqttInfo mMqttInfo = null;
///
/// 是否获取MQTT参数成功
///
public bool IfGetMqttInfoSuccess = false;
///
/// 接口类的返回信息
///
static CommonConfig m_Current = null;
///
/// 接口类的返回信息
///
public static CommonConfig Current
{
get
{
if (m_Current == null)
{
try
{
var APIInfoConfigBytes = IO.FileUtils.ReadFile(ConfigFile);
var APIInfoConfigString = CommonPage.MyEncodingUTF8.GetString(APIInfoConfigBytes);
CommonConfig temp = null;
if (APIInfoConfigString != null)
{
temp = Newtonsoft.Json.JsonConvert.DeserializeObject (APIInfoConfigString);
}
if (temp == null)
{
m_Current = new CommonConfig { };
}
else
{
m_Current = temp;
}
}
catch
{
m_Current = new CommonConfig { };
}
}
return m_Current;
}
}
byte[] GetAPIInfoConfigBytes()
{
return CommonPage.MyEncodingUTF8.GetBytes(Newtonsoft.Json.JsonConvert.SerializeObject(this));
}
//public void Refresh()
//{
// m_Current = null;
// Save();
//}
public void Save()
{
IO.FileUtils.WriteFileByBytes(ConfigFile, GetAPIInfoConfigBytes());
}
//#region 密码锁定操作方法
/////
///// 判断当前账号是否锁定
/////
/////
//public bool CheckIfLock (string account)
//{
// var lockAccount = lockList.Where (obj => obj.Account == account).FirstOrDefault ();
// //var lockAccount =lockList.Find ((obj) => obj.Account == account);
// if (lockAccount == null) {
// LockAccount lockAccountNew = new LockAccount () { Account = account, errorCount = 0, lockTime = DateTime.MinValue, ifLock = false };
// lockList.Add (lockAccountNew);
// return false;
// } else {
// //判断是否小于5分钟
// if (lockAccount.lockTime.AddMinutes (LOCK_TIME) > DateTime.Now) {
// //是,判断是否锁定
// if (lockAccount.ifLock) {
// int unlocktime = LOCK_TIME - (DateTime.Now.Minute - lockAccount.lockTime.Minute);
// new Alert ("", $"The current login account has been locked. Please try again in {unlocktime} minutes.", Language.StringByID (SimpleControl.R.MyInternationalizationString.Close)).Show ();
// return true;
// } else {
// return false;
// }
// } else {
// //否,解锁,重置参数
// lockAccount.errorCount = 0;
// lockAccount.lockTime = DateTime.Now;
// lockAccount.ifLock = false;
// Save ();
// return false;
// }
// }
//}
/////
///// 错误锁定
/////
/////
//public bool ErrorLockListUpdate (string account)
//{
// var lockAccount = lockList.Where (obj => obj.Account == account).FirstOrDefault ();
// if (lockAccount == null) {
// LockAccount lockAccountNew = new LockAccount () { Account = account, errorCount = 1, lockTime = DateTime.MinValue, ifLock = false };
// lockList.Add (lockAccountNew);
// } else {
// if (lockAccount.errorCount < 5) {
// //错误次数少于5,提示密码错误并且错误次数加一
// int count = lockAccount.errorCount + 1;
// lockAccount.errorCount = count;
// //lockAccount.lockTime = DateTime.Now;
// lockAccount.ifLock = false;
// Save ();
// } else {
// //错误次数大于5,设备修改成锁定,设置锁定时间,重置错误次数
// lockAccount.errorCount = 0;
// lockAccount.lockTime = DateTime.Now;
// lockAccount.ifLock = true;
// Save ();
// MainPage.ShowAlertOnMainThread ($"The current login account has been locked. Please try again in {LOCK_TIME} minutes.");
// return true;
// }
// }
// return false;
//}
//#endregion
}
/////
///// 锁定的账号信息
/////
///// [Serializable]
//[Serializable]
//public class LockAccount
//{
// ///
// /// 账号
// ///
// public string Account { get; set; }
// ///
// /// 锁定次数
// ///
// public int errorCount { get; set; }
// ///
// /// 锁定时间
// ///
// public DateTime lockTime { get; set; }
// ///
// /// ifLock
// ///
// public bool ifLock { get; set; }
//}
}