From bb6ad792b598927a5459a5fb6f6c27fb1aa9e94e Mon Sep 17 00:00:00 2001
From: wei <kaede@kaededeMacBook-Air.local>
Date: 星期四, 17 十二月 2020 14:06:36 +0800
Subject: [PATCH] 20201217-1

---
 HDL_ON/Entity/Function/Scene.cs |  292 ++++++++++++++++++++++++++++++++++++++++++++-------------
 1 files changed, 223 insertions(+), 69 deletions(-)

diff --git a/HDL_ON/Entity/Function/Scene.cs b/HDL_ON/Entity/Function/Scene.cs
index d301fbe..4ac4da6 100644
--- a/HDL_ON/Entity/Function/Scene.cs
+++ b/HDL_ON/Entity/Function/Scene.cs
@@ -1,13 +1,39 @@
 锘縰sing System;
 using System.Collections.Generic;
+using HDL_ON.DAL.Server;
 using Shared;
 
 namespace HDL_ON.Entity
 {
+    public class SceneApiPack
+    {
+        static SceneApiPack _ScenePack;
+        public static SceneApiPack ScenePack
+        {
+            get
+            {
+                if(_ScenePack == null)
+                {
+                    _ScenePack = new SceneApiPack();
+                }
+                return _ScenePack;
+            }
+        }
+
+    }
+
     public class Scene 
     {
+        public Scene()
+        {
+            sid = NewSid();
+            if (!DB_ResidenceData.Instance.CheckWhetherGatewayIdIsNull())
+            {
+                gatewayId = DB_ResidenceData.Instance.HomeGateway.gatewayId;
+            }
+        }
         /// <summary>
-        /// 杩滅鍞竴ID
+        /// 浜戠鍞竴ID
         /// </summary>
         public string userSceneId = "";
         /// <summary>
@@ -31,39 +57,43 @@
         /// </summary>
         public List<string> roomIds = new List<string>();
         /// <summary>
+        /// 鎵�灞炴埧闂村垪琛�
+        /// </summary>
+        public List<string> uids = new List<string>();
+        /// <summary>
         /// 寤舵椂
         /// </summary>
-        public int delay = 0;
-        /// <summary>
-        /// 寤舵椂鏄剧ず鐨勬枃鏈�
-        /// </summary>
-        [Newtonsoft.Json.JsonIgnore]
-        public string delayText
-        {
-            get
-            {
-                string text = "";
-                switch (delay)
-                {
-                    case 0:
-                        text = Language.StringByID(StringId.NoDelay);
-                        break;
-                    case 30:
-                        text = "30s";
-                        break;
-                    case 60:
-                        text = "1min";
-                        break;
-                    case 120:
-                        text = "2min";
-                        break;
-                    case 300:
-                        text = "5min";
-                        break;
-                }
-                return text;
-            }
-        }
+        public string delay = "0";
+        ///// <summary>
+        ///// 寤舵椂鏄剧ず鐨勬枃鏈�
+        ///// </summary>
+        //[Newtonsoft.Json.JsonIgnore]
+        //public string delayText
+        //{
+        //    get
+        //    {
+        //        string text = "";
+        //        switch (delay)
+        //        {
+        //            case 0:
+        //                text = Language.StringByID(StringId.NoDelay);
+        //                break;
+        //            case 30:
+        //                text = "30s";
+        //                break;
+        //            case 60:
+        //                text = "1min";
+        //                break;
+        //            case 120:
+        //                text = "2min";
+        //                break;
+        //            case 300:
+        //                text = "5min";
+        //                break;
+        //        }
+        //        return text;
+        //    }
+        //}
 
         /// <summary>
         /// 鍦烘櫙鍒嗙粍
@@ -78,11 +108,33 @@
         /// </summary>
         public bool collect = false;
 
+        ///// <summary>
+        ///// 鍦烘櫙鑳屾櫙
+        ///// </summary>
+        //public string ImagePath = "Intelligence/Gallery/scenebg1.png";//"FunctionIcon/Scene/s1.png";
 
-        /// <summary>
-        /// 鍦烘櫙鑳屾櫙
-        /// </summary>
-        public string ImagePath = "Intelligence/Gallery/scenebg1.png";//"FunctionIcon/Scene/s1.png";
+        ///// <summary>
+        ///// 鍦烘櫙鑳屾櫙
+        ///// </summary>
+        public string ImagePath
+        {
+            get
+            {
+                if (string.IsNullOrEmpty(image))
+                {
+                    return "Intelligence/Gallery/scenebg1.png";
+                }
+                else
+                {
+                    return image;
+                }
+            }
+            set
+            {
+                image = value;
+            }
+        }
+        
 
         /// <summary>
         /// 鍦烘櫙鍔熻兘鍒楄〃
@@ -94,21 +146,18 @@
         public List<ScenePushConfig> pushConfigs = new List<ScenePushConfig>();
 
         /// <summary>
-        /// 鐢熸垚鍦烘櫙sid
+        /// 鐢熸垚閫昏緫sid鏂规硶
         /// </summary>
-        public void NewSid()
+        public string NewSid()
         {
-            string sSceneid = "";
+            string sceneId = "";
             try
             {
                 string sOidBeginsWith = "000101";//鍘傚晢 + 閫氳鏂瑰紡
                 DateTime dt = DateTime.Now;
-
-
                 DateTime startTime = TimeZoneInfo.ConvertTimeToUtc(new DateTime(2020, 1, 1));
                 long m = (long)((dt - startTime).TotalMilliseconds / 10);
                 string sTimeSpan = "00000000";
-
 
                 byte[] arry = new byte[4];
                 arry[0] = (byte)(m & 0xFF);
@@ -127,25 +176,29 @@
                     sTimeSpan = "00000000";
                 }
 
-                sSceneid = sOidBeginsWith + sTimeSpan;
+                sceneId = sOidBeginsWith + sTimeSpan;
 
-                sSceneid += "0A";
-                sSceneid += "0A01";
-                //0A01 鐗╂ā鍨嬩负鍦烘櫙锛� 0001 琛ㄧず 1 鍙峰満鏅姛鑳�
-                int iTopSceneId = 1;
+                sceneId += "0A";
+                sceneId += "0A01";
+                int maxId = 1;
 
-                Random random = new Random();
-                iTopSceneId = random.Next(0, 255);
-                iTopSceneId += random.Next(0, 255);
 
-                sSceneid += iTopSceneId.ToString("X4");//鍦烘櫙鍙� 涓や釜byte 
-                sSceneid += "1100";
-                sid = sSceneid;
+                for (int i = 0; i < FunctionList.List.scenes.Count; i++)
+                {
+                    string s = FunctionList.List.scenes[i].sid.Substring(20, 4);
+                    int iThisSceneId = Convert.ToInt16(s, 16);
+                    if (iThisSceneId > maxId)
+                        maxId = iThisSceneId;
+                }
+
+                sceneId += (maxId + 1).ToString("X4");
+                sceneId += "0000";
             }
             catch
             {
-                sid = sSceneid;
+                return sceneId;
             }
+            return sceneId;
         }
 
         /// <summary>
@@ -157,7 +210,7 @@
             string roomNameList = "";
             foreach (var roomId in roomIds)
             {
-                var findRoom = DB_ResidenceData.Rooms.Find(obj => obj.uid == roomId);
+                var findRoom = SpatialInfo.CurrentSpatial.RoomList.Find(obj => obj.roomId == roomId);
                 if (findRoom == null)
                 {
                     continue;
@@ -186,20 +239,124 @@
                 return "SceneData_" + sid;
             }
         }
+
         /// <summary>
         /// 淇濆瓨鍔熻兘鏁版嵁
         /// </summary>
-        public void SaveSceneData()
+        public void SaveSceneData(bool upServer)
         {
-            var ssd = System.Text.Encoding.UTF8.GetBytes(Newtonsoft.Json.JsonConvert.SerializeObject(this));
-            FileUtils.WriteFileByBytes(savePath + this.sid, ssd);
-            MainPage.Log($"Save Scene Data : {this.sid}");
+            if (upServer)
+            {
+                UploadScene();
+            }
+            else
+            {
+                var ssd = System.Text.Encoding.UTF8.GetBytes(Newtonsoft.Json.JsonConvert.SerializeObject(this));
+                Common.FileUtlis.Files.WriteFileByBytes(savePath, ssd);
+                MainPage.Log($"Save Scene Data : {savePath}");
+            }
+        }
+        /// <summary>
+        /// 鏀惰棌鍦烘櫙
+        /// </summary>
+        /// <returns></returns>
+        public string CollectScene()
+        {
+            var pm = new HttpServerRequest();
+            if (this.collect)
+            {
+                var revPack = pm.CollectScene(this.userSceneId);
+                return revPack;
+            }
+            else
+            {
+                var revPack = pm.CancelCollectScene(this.userSceneId);
+                return revPack;
+            }
         }
 
         /// <summary>
-        /// 鏇存柊鏃堕棿
+        /// 缂栬緫鍦烘櫙
         /// </summary>
-        public DateTime refreshTime = DateTime.MinValue;
+        public string EditScene()
+        {
+            var pm = new HttpServerRequest();
+            var revPack = pm.EditScene(this);
+            if (revPack.Code == StateCode.SUCCESS)
+            {
+                var scenes = Newtonsoft.Json.JsonConvert.DeserializeObject<List<Scene>>(revPack.Data.ToString());
+                var tempScene = scenes.Find((obj) => obj.sid == sid);
+                if (tempScene != null)
+                {
+                    var ssd = System.Text.Encoding.UTF8.GetBytes(Newtonsoft.Json.JsonConvert.SerializeObject(tempScene));
+                    Common.FileUtlis.Files.WriteFileByBytes(savePath, ssd);
+                }
+            }
+            return revPack.Code;
+        }
+
+        /// <summary>
+        /// 淇敼鍦烘櫙
+        /// </summary>
+        public string UpdateScene()
+        {
+            var pm = new HttpServerRequest();
+            var revPack = pm.EditScene(this);
+            if (revPack.Code == StateCode.SUCCESS)
+            {
+                var scenes = Newtonsoft.Json.JsonConvert.DeserializeObject<List<Scene>>(revPack.Data.ToString());
+                var tempScene = scenes.Find((obj) => obj.sid == sid);
+                if (tempScene != null)
+                {
+                    var ssd = System.Text.Encoding.UTF8.GetBytes(Newtonsoft.Json.JsonConvert.SerializeObject(tempScene));
+                    Common.FileUtlis.Files.WriteFileByBytes(savePath, ssd);
+                }
+            }
+            return revPack.Code;
+        }
+
+     
+
+        /// <summary>
+        /// 涓婁紶鏁版嵁鍒颁簯绔�
+        /// </summary>
+        void UploadScene()
+        {
+            var pm = new HttpServerRequest();
+            ResponsePackNew revPack;
+            if (string.IsNullOrEmpty(createTime) && string.IsNullOrEmpty(modifyTime))
+            {
+                revPack = pm.AddScene(this);
+                if (revPack.Code == StateCode.SUCCESS)
+                {
+                    var ssd = System.Text.Encoding.UTF8.GetBytes(Newtonsoft.Json.JsonConvert.SerializeObject(this));
+                    Common.FileUtlis.Files.WriteFileByBytes(savePath, ssd);
+                }
+            }
+            else if (!string.IsNullOrEmpty(createTime) && !string.IsNullOrEmpty(modifyTime))
+            {
+                revPack = pm.EditScene(this);
+                if (revPack.Code == StateCode.SUCCESS)
+                {
+                    var scenes = Newtonsoft.Json.JsonConvert.DeserializeObject<List<Scene>>(revPack.Data.ToString());
+                    var tempScene = scenes.Find((obj) => obj.sid == sid);
+                    if (tempScene != null)
+                    {
+                        var ssd = System.Text.Encoding.UTF8.GetBytes(Newtonsoft.Json.JsonConvert.SerializeObject(tempScene));
+                        Common.FileUtlis.Files.WriteFileByBytes(savePath, ssd);
+                    }
+                }
+            }
+        }
+
+        /// <summary>
+        /// 浜戠鏁版嵁鍒涘缓鐨勬椂闂�
+        /// </summary>
+        public string createTime = "";
+        /// <summary>
+        /// 浜戠鏁版嵁淇敼鐨勬渶鍚庢椂闂�
+        /// </summary>
+        public string modifyTime = "";
     }
     /// <summary>
     /// 鍦烘櫙鍔熻兘瀵硅薄
@@ -219,10 +376,11 @@
         /// 鏈湴瀵瑰簲鐨勫姛鑳�
         /// </summary>
         [Newtonsoft.Json.JsonIgnore]
-        public Function localFunction {
+        public Function localFunction
+        {
             get
             {
-                if(_localFunction == null)
+                if (_localFunction == null)
                 {
                     _localFunction = ConvertFunctionObject();
                 }
@@ -236,14 +394,10 @@
         /// <returns></returns>
         Function ConvertFunctionObject()
         {
-            var localFunction = DB_ResidenceData.functionList.GetAllDeviceFunctionList().Find((obj) => obj.sid == sid);
-            foreach (var s in status)
-            {
-                localFunction.attributes.Add(new FunctionAttributes() { key = s.key, curValue = s.value, value = new List<string>() { s.value } });
-            }
+            var localFunction = FunctionList.List.GetDeviceFunctionList().Find((obj) => obj.sid == sid);
             return localFunction;
         }
-      
+
     }
 
     /// <summary>

--
Gitblit v1.8.0