From d53e6af2c5f17838fa79659614b15a2a1f383399 Mon Sep 17 00:00:00 2001
From: wxr <464027401@qq.com>
Date: 星期五, 31 三月 2023 10:04:58 +0800
Subject: [PATCH] 1

---
 Crabtree/SmartHome/UI/SimpleControl/Phone/Schedule/UserSchedule.cs |  384 +++++++++++++++++++++++++++---------------------------
 1 files changed, 189 insertions(+), 195 deletions(-)

diff --git a/Crabtree/SmartHome/UI/SimpleControl/Phone/Schedule/UserSchedule.cs b/Crabtree/SmartHome/UI/SimpleControl/Phone/Schedule/UserSchedule.cs
index 535402e..24c5ec1 100644
--- a/Crabtree/SmartHome/UI/SimpleControl/Phone/Schedule/UserSchedule.cs
+++ b/Crabtree/SmartHome/UI/SimpleControl/Phone/Schedule/UserSchedule.cs
@@ -6,15 +6,26 @@
 {
     public class UserSchedule : FrameLayout
     {
+        /// <summary>
+        /// 涓婁笅婊戝姩鐖舵帶浠�
+        /// </summary>
         VerticalScrolViewLayout bodyView;
-        List<Timer> timers;
-
-        public UserSchedule()
+        /// <summary>
+        /// 瀹氭椂鍣ㄥ垪琛�
+        /// </summary>
+        List<Timer> timerList;
+        /// <summary>
+        /// 瀵硅薄鏋勯�犲嚱鏁�
+        /// </summary>
+        /// <param name="act">杩斿洖鍑芥暟</param>
+        public UserSchedule ()
         {
             BackgroundColor = SkinStyle.Current.MainColor;
-            timers = new List<Timer> ();
+            timerList = new List<Timer> ();
         }
-
+        /// <summary>
+        /// 瀵硅薄涓诲叆鍙�
+        /// </summary>
         public void ShowPage ()
         {
             #region 鏍囬
@@ -34,7 +45,7 @@
             topView.AddChidren (title);
 
             var back = new Button () {
-                Height = Application.GetRealHeight (100),
+                Height = Application.GetRealWidth (100),
                 Width = Application.GetRealWidth (85),
                 UnSelectedImagePath = "Item/Back.png",
                 SelectedImagePath = "Item/BackSelected.png",
@@ -46,7 +57,7 @@
 
             var ItemButton = new Button () {
                 Width = Application.GetRealWidth (55),
-                Height = Application.GetRealHeight (55),
+                Height = Application.GetRealWidth (55),
                 UnSelectedImagePath = "Item/+.png",
                 SelectedImagePath = "Item/+.png",
                 X = Application.GetRealWidth (640 - 80),
@@ -64,14 +75,14 @@
                     try {
                         System.Threading.Thread.Sleep (100);
                         Application.RunOnMainThread (() => {
-                            var tt = new Timer () { TimeZone = Convert.ToInt32 (DateTime.Now.ToString ("%z")), RoomName = "ALL", Periodicity = ((int)DateTime.Now.DayOfWeek).ToString (), TimerType = TimerType.Week, TimerName = "Schedule " + timers.Count.ToString(), ExecutionTime = DateTime.Now.ToString ("HH:mm") };
+                            var timer = new Timer () { TimeZone = Convert.ToInt32 (DateTime.Now.ToString ("%z")),timerType = TimerType.Week, timerName = "Schedule " + timerList.Count.ToString(), executeUtcTime = DateTime.Now.ToString ("HH:mm") };
                             Action<Timer> refLoad = (obj) => {
-                                timers.Add (obj);
-                                initSchedule (obj);
+                                timerList.Add (obj);
+                                InitSchedule (obj);
                             };
                             var scheduleShowView = new AddSchedule (refLoad);
                             UserMiddle.SettingPageView.AddChidren (scheduleShowView);
-                            scheduleShowView.ShowPage (tt,timers,false);
+                            scheduleShowView.ShowPage (timer,timerList,false); 
                             UserMiddle.SettingPageView.PageIndex = 2;
                         });
                     }catch(Exception ex){
@@ -92,121 +103,16 @@
                 BackgroundColor = SkinStyle.Current.ViewColor
             };
             AddChidren (bodyView);
+            ///鍔犺浇璁℃暟鍣ㄥ垪琛ㄧ晫闈�
             InitScheduleView ();
         }
 
-        void InitScheduleView ()
-        {
-            MainPage.Loading.Start ("Please wait...");
-            System.Threading.Tasks.Task.Run (() => {
-                try {
-                    var requestObj = new Timer () { RegionID = UserConfig.Instance.CurrentRegion.Id };
-                    var requestJson = Newtonsoft.Json.JsonConvert.SerializeObject (requestObj);
-                    var revertObj = MainPage.RequestHttps (API.GetTimerList, requestJson);
-                    if (revertObj.StateCode.ToUpper() == StateCode.SUCCESS) {
-                        timers = Newtonsoft.Json.JsonConvert.DeserializeObject<List<Timer>> (revertObj.ResponseData.ToString ());
-                        foreach (var schedule in timers) {
-                            initSchedule (schedule);
-                        }
-                    } else {
-                        //鎻愮ず閿欒
-                        ShowGetTimerListErrorInfo (revertObj.StateCode);
-                    }
-                } catch (Exception ex) {
-                    Utlis.WriteLine (ex.Message);
-                } finally {
-                    Application.RunOnMainThread (() => {
-                        MainPage.Loading.Hide ();
-                    });
-                }
-            });
-        }
-
+       
         /// <summary>
-        //(1)Success 鍒欒皟鐢ㄦ鎺ュ彛鎴愬姛
-        //(2)NoRecord 浣忓畢鏈粦瀹氱綉鍏筹紒
-        //(3)NoExist 浣忓畢涓嶅瓨鍦紒
+        /// 鏄剧ず鐨勫畾鏃跺櫒鍒楄〃鐣岄潰
         /// </summary>
-        void ShowGetTimerListErrorInfo (string stateCodeStr)
-        {
-            string mes = "";
-            if (stateCodeStr == "NoRecord") {
-                // 浣忓畢鏈粦瀹氱綉鍏筹紒
-                mes = ErrorCode.HomeNoRecord;
-            } else if (stateCodeStr == "NoExist") {
-                //浣忓畢涓嶅瓨鍦紒
-                mes = ErrorCode.HomeNoExist;
-            } else if (stateCodeStr == ErrorCode.NetworkError) {
-                mes = ErrorCode.NetworkError;
-            } else {
-                mes = ErrorCode.OperationFailed + ErrorCode.Reason + stateCodeStr;
-
-            }
-            if (!string.IsNullOrEmpty (mes)) {
-                Application.RunOnMainThread (() => {
-                    new Alert ("", mes, Language.StringByID (R.MyInternationalizationString.Close)).Show ();
-                });
-            }
-
-        }
-
-
-        void reinitSchedule(Timer schedule)
-        {
-            for (int i = 0;i< bodyView.ChildrenCount;i++){
-                var view = bodyView.GetChildren (i);
-                if(view.GetType() == typeof(RowLayout)){
-                   var  rowView = view as RowLayout;
-                    if (rowView.GetTagByKey("guid").ToString () == schedule.Id) {
-                        for (int j = 0; j < rowView.ChildrenCount; j++) {
-                            var viewChilren = rowView.GetChildren (j);
-                            if (viewChilren.GetType () == typeof (Button)) {
-                                var btn = viewChilren as Button;
-                                if(btn.Tag!= null){
-                                    switch (btn.Tag.ToString ()) {
-                                    case "btnScheduleName":
-                                        btn.Text = schedule.TimerName;
-                                        break;
-                                    case "btnScheduleRoomName":
-                                        btn.Text = schedule.RoomName;
-                                        break;
-                                    case "btnScheduleTime":
-                                        btn.Text = schedule.ExecutionTime;
-                                        break;
-                                    case "btnScheduleDay":
-                                        btn.Text = "";
-                                        if (schedule.Periodicity.Contains ("0")) {
-                                            btn.Text += "Sun ";
-                                        }
-                                        if (schedule.Periodicity.Contains ("1")) {
-                                            btn.Text += "Mon ";
-                                        }
-                                        if (schedule.Periodicity.Contains ("2")) {
-                                            btn.Text += "Tues ";
-                                        }
-                                        if (schedule.Periodicity.Contains ("3")) {
-                                            btn.Text += "Wed ";
-                                        }
-                                        if (schedule.Periodicity.Contains ("4")) {
-                                            btn.Text += "Thur ";
-                                        }
-                                        if (schedule.Periodicity.Contains ("5")) {
-                                            btn.Text += "Fri ";
-                                        }
-                                        if (schedule.Periodicity.Contains ("6")) {
-                                            btn.Text += "Sat ";
-                                        }
-                                        break;
-                                    }
-                                }
-                            }
-                        }
-                    }
-                }
-            }
-        }
-    
-        void initSchedule(Timer schedule)
+        /// <param name="schedule"></param>
+        void InitSchedule (Timer schedule) 
         {
 
             Application.RunOnMainThread (() => {
@@ -214,7 +120,7 @@
                     Height = Application.GetRealHeight (180),
                 };
                 bodyView.AddChidren (rowView);
-                rowView.AddTag ("guid", schedule.Id);
+                rowView.AddTag ("guid", schedule.id);
 
                 var btnScheduleName = new Button () {
                     X = Application.GetRealWidth (30),
@@ -222,12 +128,12 @@
                     Width = Application.GetRealWidth (290),
                     TextAlignment = TextAlignment.CenterLeft,
                     TextColor = SkinStyle.Current.TextColor1,
-                    Text = schedule.TimerName,
+                    Text = schedule.timerName,
                     TextSize = 14,
                     Tag = "btnScheduleName",
                 };
                 rowView.AddChidren (btnScheduleName);
-                btnScheduleName.AddTag ("guid", schedule.Id);
+                btnScheduleName.AddTag ("guid", schedule.id);
 
                 var btnScheduleRoomName = new Button () {
                     X = btnScheduleName.Right,
@@ -239,21 +145,21 @@
                     Tag = "btnScheduleRoomName",
                 };
                 rowView.AddChidren (btnScheduleRoomName);
-                btnScheduleRoomName.AddTag ("guid", schedule.Id);
+                btnScheduleRoomName.AddTag ("guid", schedule.id);
 
                 var btnScheduleTime = new Button () {
                     X = Application.GetRealWidth (30),
                     Y = Application.GetRealHeight (60),
                     Height = Application.GetRealHeight (60),
                     Width = Application.GetRealWidth (150),
-                    Text = schedule.ExecutionTime,
+                    Text = schedule.executeUtcTime,
                     TextColor = SkinStyle.Current.TextColor1,
                     TextAlignment = TextAlignment.CenterLeft,
                     TextSize = 24,
                     Tag = "btnScheduleTime",
                 };
                 rowView.AddChidren (btnScheduleTime);
-                btnScheduleTime.AddTag ("guid", schedule.Id);
+                btnScheduleTime.AddTag ("guid", schedule.id);
 
                 var btnScheduleDay = new Button () {
                     X = Application.GetRealWidth (33),
@@ -266,51 +172,49 @@
                     Tag = "btnScheduleDay",
                 };
                 rowView.AddChidren (btnScheduleDay);
-                btnScheduleDay.AddTag ("guid", schedule.Id);
+                btnScheduleDay.AddTag ("guid", schedule.id);
 
-                if (schedule.Periodicity.Contains ("0")) {
+                if (schedule.whichDay.Contains (0)) {
                     btnScheduleDay.Text += "Sun ";
                 }
-                if (schedule.Periodicity.Contains ("1")) {
+                if (schedule.whichDay.Contains (1)) {
                     btnScheduleDay.Text += "Mon ";
                 }
-                if (schedule.Periodicity.Contains ("2")) {
+                if (schedule.whichDay.Contains (2)) {
                     btnScheduleDay.Text += "Tues ";
                 }
-                if (schedule.Periodicity.Contains ("3")) {
+                if (schedule.whichDay.Contains (3)) {
                     btnScheduleDay.Text += "Wed ";
                 }
-                if (schedule.Periodicity.Contains ("4")) {
+                if (schedule.whichDay.Contains (4)) {
                     btnScheduleDay.Text += "Thur ";
                 }
-                if (schedule.Periodicity.Contains ("5")) {
+                if (schedule.whichDay.Contains (5)) {
                     btnScheduleDay.Text += "Fri ";
                 }
-                if (schedule.Periodicity.Contains ("6")) {
+                if (schedule.whichDay.Contains (6)) {
                     btnScheduleDay.Text += "Sat ";
                 }
 
                 var tempSiwtch = new Button () {
-                    Width = Application.GetMinRealAverage (90),
-                    Height = Application.GetMinRealAverage (53),
+                    Width = Application.GetRealWidth (90),
+                    Height = Application.GetRealWidth (53),
                     X = Application.GetRealWidth (640 - 90 - 20),
                     Y = Application.GetRealHeight (100),
                     UnSelectedImagePath = "Item/SwitchClose.png",
                     SelectedImagePath = "Item/SwitchOpen.png",
-                    IsSelected = schedule.IsStart,
-                    Tag = schedule.Id
+                    IsSelected = schedule.isEnable,
+                    Tag = schedule.id
                 };
                 rowView.AddChidren (tempSiwtch);
 
                 tempSiwtch.MouseUpEventHandler += (sdd, ffd) => {
-                    tempSiwtch.IsSelected = !tempSiwtch.IsSelected;
                     MainPage.Loading.Start ("Loading");
                     System.Threading.Tasks.Task.Run (() => {
                         try {
-                            var switchObj = new Timer () { Id = (sdd as Button).Tag.ToString () };
-                            var switchRequestJson = Newtonsoft.Json.JsonConvert.SerializeObject (switchObj);
-                            var switchRevertObj = MainPage.RequestHttps (API.IsEnableTimer, switchRequestJson);
-                            if (switchRevertObj.StateCode.ToUpper()  != StateCode.SUCCESS) {
+                           
+                            var switchRevertObj =SmartHome.Send.SwitchTimer (schedule);
+                            if (switchRevertObj.Code== StateCode.SUCCESS) {
                                 Application.RunOnMainThread (() => {
                                     tempSiwtch.IsSelected = !tempSiwtch.IsSelected;
                                 });
@@ -324,36 +228,27 @@
                         }
                     });
                 };
-
                 Button btnDel = new Button () {
                     TextID = R.MyInternationalizationString.Del,
                     BackgroundColor = SkinStyle.Current.DelColor,
-                    Tag = schedule.Id
+                    Tag = schedule.id
                 };
                 rowView.AddRightView (btnDel);
                 btnDel.MouseUpEventHandler += (sender, er) => {
                     if ((sender as Button).Tag == null) return;
-                    //string uuid = (sender as Button).Tag.ToString ();
-
                     DeleteTimerAction ((sender as Button).Tag.ToString (), rowView, true);
-                    //var delObj = new Timer () { Guid = (sender as Button).Tag.ToString () };
-                    //var delRequestJson = Newtonsoft.Json.JsonConvert.SerializeObject (delObj);
-                    //var delRevertObj = MainPage.RequestHttps ("DeleteTimer", delRequestJson);
-                    //if (delRevertObj.StateCode.ToUpper() == StateCode.SUCCESS) {
-                    //    rowView.RemoveFromParent ();
-                    //    timers.Remove (timers.Find((obj) => obj.Guid == delObj.Guid));
-                    //}
+                  
                 };
 
                 #region goSchedule
 
                 EventHandler<MouseEventArgs> eventHandler = (sender, er) => {
                     Action<Timer> refLoad = (obj) => {
-                        reinitSchedule (obj);
+                        ReinitSchedule (obj);
                     };
                     var scheduleShowView = new AddSchedule (refLoad);
                     UserMiddle.SettingPageView.AddChidren (scheduleShowView);
-                    scheduleShowView.ShowPage (schedule, timers, true);
+                    scheduleShowView.ShowPage (schedule, timerList, true);
                     UserMiddle.SettingPageView.PageIndex = 2;
                 };
 
@@ -364,8 +259,8 @@
                 #endregion
                 #region delSchedule
 
-                btnScheduleName.MouseLongEventHandler += (sender, e) => {
-                    var alert = new Alert ("",Language.StringByID (R.MyInternationalizationString.SureDelete),
+                EventHandler<MouseEventArgs> Del = (sender, er) => {
+                    var alert = new Alert ("", Language.StringByID (R.MyInternationalizationString.SureDelete),
                                                   Language.StringByID (R.MyInternationalizationString.Cancel),
                                                   Language.StringByID (R.MyInternationalizationString.Confrim));
                     alert.Show ();
@@ -375,39 +270,141 @@
                             DeleteTimerAction ((sender as Button).GetTagByKey ("guid").ToString (), rowView);
                         }
                     };
-                };
-                btnScheduleTime.MouseLongEventHandler += (sender, e) => {
-                    var alert = new Alert ("",
-                                                  Language.StringByID (R.MyInternationalizationString.SureDelete),
-                                                  Language.StringByID (R.MyInternationalizationString.Cancel),
-                                                  Language.StringByID (R.MyInternationalizationString.Confrim));
-                    alert.Show ();
-                    alert.ResultEventHandler += (sender2, e2) => {
-                        if (e2) {
-                            if ((sender as Button).GetTagByKey ("guid") == null) return;
-                            DeleteTimerAction ((sender as Button).GetTagByKey ("guid").ToString (), rowView);
-                        }
-                    };
-                };
-                btnScheduleDay.MouseLongEventHandler += (sender, e) => {
-                    var alert = new Alert ("",
-                                                  Language.StringByID (R.MyInternationalizationString.SureDelete),
-                                                  Language.StringByID (R.MyInternationalizationString.Cancel),
-                                                  Language.StringByID (R.MyInternationalizationString.Confrim));
-                    alert.Show ();
-                    alert.ResultEventHandler += (sender2, e2) => {
-                        if (e2) {
-                            if ((sender as Button).GetTagByKey ("guid") == null) return;
-                            DeleteTimerAction ((sender as Button).GetTagByKey ("guid").ToString (), rowView);
-                        }
-                    };
-                };
-#endregion
+                }; 
+
+                btnScheduleName.MouseLongEventHandler += Del;
+                btnScheduleTime.MouseLongEventHandler += Del;
+                btnScheduleDay.MouseLongEventHandler += Del;
+                #endregion
 
             });
 
         }
+        /// <summary>
+        /// 鏇存柊鐨勫畾鏃跺櫒鐘舵��
+        /// </summary>
+        /// <param name="schedule"></param>
+        void ReinitSchedule (Timer schedule)
+        {
+            for (int i = 0; i < bodyView.ChildrenCount; i++) {
+                var view = bodyView.GetChildren (i);
+                if (view.GetType () == typeof (RowLayout)) {
+                    var rowView = view as RowLayout;
+                    if (rowView.GetTagByKey ("guid").ToString () == schedule.id.ToString ()) {
+                        for (int j = 0; j < rowView.ChildrenCount; j++) {
+                            var viewChilren = rowView.GetChildren (j);
+                            if (viewChilren.GetType () == typeof (Button)) {
+                                var btn = viewChilren as Button;
+                                if (btn.Tag != null) {
+                                    switch (btn.Tag.ToString ()) {
+                                    case "btnScheduleName":
+                                        btn.Text = schedule.timerName;
+                                        break;
+                                    case "btnScheduleRoomName":
+                                        btn.Text = schedule.RoomName;
+                                        break;
+                                    case "btnScheduleTime":
+                                        btn.Text = schedule.executeUtcTime;
+                                        break;
+                                    case "btnScheduleDay":
+                                        btn.Text = "";
+                                        if (schedule.whichDay.Contains (0)) {
+                                            btn.Text += "Sun ";
+                                        }
+                                        if (schedule.whichDay.Contains (1)) {
+                                            btn.Text += "Mon ";
+                                        }
+                                        if (schedule.whichDay.Contains (2)) {
+                                            btn.Text += "Tues ";
+                                        }
+                                        if (schedule.whichDay.Contains (3)) {
+                                            btn.Text += "Wed ";
+                                        }
+                                        if (schedule.whichDay.Contains (4)) {
+                                            btn.Text += "Thur ";
+                                        }
+                                        if (schedule.whichDay.Contains (5)) {
+                                            btn.Text += "Fri ";
+                                        }
+                                        if (schedule.whichDay.Contains (6)) {
+                                            btn.Text += "Sat ";
+                                        }
+                                        break;
+                                    }
+                                }
+                            }
+                        }
+                    }
+                }
+            }
+        }
+        /// <summary>
+        /// 璇诲彇瀹氭椂鍣ㄥ垪琛�
+        /// </summary>
+        void InitScheduleView ()
+        {
+            SmartHome.Method.GetDeviceList ();
+            MainPage.Loading.Start ("Please wait...");
+            System.Threading.Tasks.Task.Run (() => {
+                try {
+                    var revertObj = SmartHome.Send.GetTimerList ();
+                    if (revertObj.Code == StateCode.SUCCESS) {
+                        if (revertObj.Data == null) {
+                            return;
+                        }
+                        if (string.IsNullOrEmpty (revertObj.Data.ToString ())) {
+                            return;
+                        }
+                        var jsonDate = Newtonsoft.Json.Linq.JObject.Parse (revertObj.Data.ToString ());
+                        var array = jsonDate ["list"].ToString ();
+                        var jArray = Newtonsoft.Json.Linq.JArray.Parse (array);
+                        for (int a = 0; a < jArray.Count; a++) {
+                            Timer timer = new Timer ();
+                            var jay = jArray [a];
+                            timer.id = jay ["id"].ToString ();
+                            timer.timerName =jay ["timerName"].ToString ();
+                            timer.RoomName = jay ["room"].ToString ();
+                            timer.userId = jay ["userId"].ToString ();
+                            timer.isEnable = Boolean.Parse (jay ["isEnable"].ToString ());
+                            timer.executeUtcTime = SmartHome.Method.GetLocalUtcTime(jay ["executeUtcTime"].ToString ());
+                            timer.timerType = (TimerType)System.Enum.Parse (typeof (TimerType), jay ["timerType"].ToString ());
+                            var whichDayJson = jay ["whichDay"].ToString ();
+                            var whichDayAry = Newtonsoft.Json.Linq.JArray.Parse (whichDayJson);
+                            for (int b = 0; b < whichDayAry.Count; b++) {
+                                var days = whichDayAry [b].ToString ();
+                                timer.whichDay.Add (int.Parse (days));
+                            }
+                            var controlDataStr = jay ["controlData"].ToString ();
+                            var controlDataJosn = Newtonsoft.Json.JsonConvert.DeserializeObject<DeviceDate> (controlDataStr);
+                            if (controlDataJosn != null) {
+                                timer.controlData = controlDataJosn;
+                            }
+                            var timerJosn = timerList.Find ((c) => c.id == timer.id);
+                            if (timerJosn == null && !string.IsNullOrEmpty (timer.id)) {
+                                timerList.Add (timer);
+                            }
+                        }
 
+                    } else {
+                        //鎻愮ず閿欒
+                        IMessageCommon.Current.ShowErrorInfoAlter (revertObj.Code);
+
+                        //SmartHome.Method method = new SmartHome.Method ();
+                        //method.ShowGetTimerListErrorInfo (revertObj.Data.ToString ());
+                    }
+                } catch (Exception ex) {
+                    Utlis.WriteLine (ex.Message);
+                } finally {
+                    Application.RunOnMainThread (() => {
+                        MainPage.Loading.Hide ();
+                        for (int i = 0; i < timerList.Count; i++) {
+                            var schedule = timerList [i];
+                            InitSchedule (schedule);
+                        }
+                    });
+                }
+            });
+        }
         /// <summary>
         /// 鍒犻櫎瀹氭椂鍣�
         /// </summary>
@@ -420,16 +417,11 @@
             Application.RunOnMainThread (() => {
                 MainPage.Loading.Start ("Please wait...");
             });
-
-            var delObj = new Timer () { Id = GUID };
-            var delRequestJson = Newtonsoft.Json.JsonConvert.SerializeObject (delObj);
-            var delRevertObj = MainPage.RequestHttps (API.DeleteTimer, delRequestJson);
-
-
-            if (delRevertObj.StateCode.ToUpper () == StateCode.SUCCESS) {
+            var delRevertObj =SmartHome.Send.DelTimer (GUID);
+            if (delRevertObj.Code == StateCode.SUCCESS) {
                 rowView.RemoveFromParent ();
                 if (bTimersRemove) {
-                    timers.Remove (timers.Find ((obj) => obj.Id == delObj.Id));
+                    timerList.Remove (timerList.Find ((obj) => obj.id.ToString() == GUID));
                 }
             } else {
                 //鍒犻櫎澶辫触
@@ -444,5 +436,7 @@
 
 
         }
+
+       
     }
 }

--
Gitblit v1.8.0