using System;
using System.Collections.Generic;
namespace HDL_ON.Entity
{
///
/// 读取服务器空间信息返回到数据包
///
public class RoomApiPack
{
public List list = new List();
public string totalCount = "0";
public string totalPage = "0";
public string pageNo = "0";
public string pageSize = "0";
}
///
/// 空间信息基础类
/// 包含楼层/房间
///
public class SpatialInfo
{
public string roomId = "";
public string roomName = "";
public string roomImage = "";
public string roomType = "";
public string parentId = "";
public string uid = Guid.NewGuid().ToString();
public string createTime = "";
public string modifyTime = "";
protected void SaveSpatialInfo()
{
var pm = new DAL.Server.HttpServerRequest();
if (string.IsNullOrEmpty(createTime) && string.IsNullOrEmpty(modifyTime))
{
pm.AddRoom(new List() { this });
}
else if (string.IsNullOrEmpty(createTime) && !string.IsNullOrEmpty(modifyTime))
{
pm.DeleteRoom(new List() { roomId });
}
else if (!string.IsNullOrEmpty(createTime) && !string.IsNullOrEmpty(modifyTime))
{
pm.UpdateRoom(new List() { this });
}
}
///
/// 更新楼层信息
///
public void UpdateSpatialInfoData()
{
if (roomType == "ROOM")
{
}
else if (roomType == "FLOOR")
{
var tempFloor = Floor.InsFloor.Floors.Find((obj) => obj.roomId == roomId);
if (tempFloor == null)
{
Floor.InsFloor.Floors.Add(this as Floor);
}
else
{
tempFloor = this as Floor;
}
var ssd = System.Text.Encoding.UTF8.GetBytes(Newtonsoft.Json.JsonConvert.SerializeObject(Floor.InsFloor.Floors));
FileUtils.WriteFileByBytes(Floor.InsFloor.FloorDataSavePath, ssd);
MainPage.Log("更新楼层信息");
}
}
}
///
/// 房间对象
///
[Serializable]
public class Floor : SpatialInfo
{
#region 楼层数据相关
static Floor ins_Floor ;
public static Floor InsFloor {
get {
if(ins_Floor== null)
{
ins_Floor = new Floor();
}
return ins_Floor;
}
}
public string FloorDataSavePath = "FloorsData";
///
/// 楼层列表
///
List floors;
public List Floors
{
get
{
if (floors == null)
{
try
{
var floorsDataBytes = FileUtils.ReadFile(FloorDataSavePath);
if (floorsDataBytes != null)
{
var floorsDataString = System.Text.Encoding.UTF8.GetString(floorsDataBytes);
MainPage.Log(floorsDataString);
floors = Newtonsoft.Json.JsonConvert.DeserializeObject>(floorsDataString);
if (floors == null)
{
floors = new List();
}
}
}
catch (Exception ex)
{
MainPage.Log($"楼层数据初始化失败:{ex.Message}");
}
}
return floors;
}
}
///
/// 增加楼层
///
///
public void AddFloor(Floor floor)
{
ins_Floor.floors.Add(floor);
floor.SaveFloorData();
}
///
/// 删除楼层
///
///
public void DelFloor(Floor floor)
{
var tRoom = ins_Floor.floors.Find((obj) => obj.uid == floor.uid);
if (tRoom != null)
{
ins_Floor.floors.Remove(floor);
floor.modifyTime = "";
}
SaveFloorData();
}
#endregion
public Floor()
{
roomType = "FLOOR";
parentId = DB_ResidenceData.residenceData.CurReginID;
}
///
/// 保存楼层数据
///
public void SaveFloorData()
{
var ssd = System.Text.Encoding.UTF8.GetBytes(Newtonsoft.Json.JsonConvert.SerializeObject(ins_Floor.floors));
FileUtils.WriteFileByBytes(FloorDataSavePath, ssd);
MainPage.Log($"Save floor Data");
base.SaveSpatialInfo();
}
}
[Serializable]
public class Room : SpatialInfo
{
public Room()
{
roomType = "ROOM";
roomName = "Room";
}
public string backgroundImage = "Classification/Room/Roombg.png";
public string roomSavePath
{
get
{
return "RoomPath_" + uid;
}
}
///
/// 楼层
///
[Newtonsoft.Json.JsonIgnore]
public string floorName
{
get
{
if (Floor.InsFloor.Floors.Count > 0)
{
var f = Floor.InsFloor.Floors.Find((obj) => obj.uid == parentId);
if (f != null)
{
return f.roomName + " ";
}
}
return "";
}
}
///
/// 房间功能列表
///
List functions = new List();
///
/// 获取房间功能列表
///
public List GetRoomFunctions(bool needRefresh)
{
if (needRefresh)
{
functions = new List();
}
if (functions.Count == 0)
{
foreach (var f in DB_ResidenceData.functionList.GetAllFunction())
{
if (f.roomIds.Contains(uid) && uid != null)
{
functions.Add(f);
}
}
}
return functions;
}
///
/// 增加房间功能
/// 操作的是缓存数据,不用保存
///
public void AddRoomFunction(Function function)
{
functions.Add(function);
}
///
/// 删除房间功能
/// 操作的是缓存数据,不用保存
///
public void RemoveRoomFunction(Function function)
{
functions.Remove(functions.Find((obj) => obj.sid == function.sid));
}
///
/// 房间场景列表
///
List scenes = new List();
///
/// 获取场景列表
///
///
public List GetRoomScenes(bool needRefresh)
{
if (needRefresh)
{
scenes = new List();
}
if (scenes.Count == 0)
{
foreach (var s in DB_ResidenceData.functionList.scenes)
{
if (s.roomIds.Contains(uid) && uid != null)
{
scenes.Add(s);
}
}
}
return scenes;
}
///
/// 增加房间场景
/// 操作的是缓存数据,不用保存
///
///
public void AddRoomScene(Scene scene)
{
scenes.Add(scene);
}
///
/// 移除房间场景
/// 操作的是缓存数据,不用保存
///
///
public void RemoveRoomScene(Scene scene)
{
scenes.Remove(scenes.Find((obj) => obj.sid == scene.sid));
}
///
/// 保存房间数据
///
public void SaveRoomData()
{
var ssd = System.Text.Encoding.UTF8.GetBytes(Newtonsoft.Json.JsonConvert.SerializeObject(this));
FileUtils.WriteFileByBytes(roomSavePath, ssd);
MainPage.Log($"Save Room Data {roomName} : {this.uid}");
base.SaveSpatialInfo();
}
}
}