From 23c075a9c27946773feccf05abc90489a6bf5203 Mon Sep 17 00:00:00 2001
From: wxr <464027401@qq.com>
Date: 星期一, 06 七月 2020 15:58:53 +0800
Subject: [PATCH] 20200706

---
 HDL_ON/UI/UI2/4-PersonalCenter/MemberManagement/MemberFunctionPermissionPageBLL.cs |  200 +++++++++++++++++++++++++++++++++++++++++++-------
 1 files changed, 172 insertions(+), 28 deletions(-)

diff --git a/HDL_ON/UI/UI2/4-PersonalCenter/MemberManagement/MemberFunctionPermissionPageBLL.cs b/HDL_ON/UI/UI2/4-PersonalCenter/MemberManagement/MemberFunctionPermissionPageBLL.cs
index d812182..11ae70b 100644
--- a/HDL_ON/UI/UI2/4-PersonalCenter/MemberManagement/MemberFunctionPermissionPageBLL.cs
+++ b/HDL_ON/UI/UI2/4-PersonalCenter/MemberManagement/MemberFunctionPermissionPageBLL.cs
@@ -1,4 +1,6 @@
 锘縰sing System;
+using System.Collections.Generic;
+using System.Threading;
 using HDL_ON.DAL;
 using HDL_ON.DAL.Server;
 using HDL_ON.Entity;
@@ -10,63 +12,172 @@
         void LoadEventList()
         {
             LoadEvent_AllSharedDataChange();
+            LoadEvent_OptionClick();
         }
+
+
         /// <summary>
-        /// 鏇存柊鍏变韩鏁版嵁鐐瑰嚮浜嬩欢
+        /// 搴曢儴鎿嶄綔鎸夐挳鐐瑰嚮浜嬩欢
         /// </summary>
-        void LoadEvent_EditShareData()
+        void LoadEvent_OptionClick()
         {
-            if (memberInfo.CurShareData.ShareName == "")
+            btnOption.MouseUpEventHandler = (sender, e) =>
             {
-                var ssdd = new ShareData();
-                ssdd.ShareName = DB_ResidenceData.residenceData.residecenInfo.RegionID;
-                ssdd.HouseDistributedMark = DB_ResidenceData.residenceData.residecenInfo.RegionID;
-                ssdd.ShareDataBytes = CommonPage.MyEncodingUTF8.GetBytes(Newtonsoft.Json.JsonConvert.SerializeObject(funs));
-                ssdd.SubAccountDistributedMark = memberInfo.SubAccountDistributedMark;
-                ResponsePack responePack = new HttpServerRequest().AddShareData(ssdd);
-                if (responePack.StateCode.ToUpper() != "SUCCESS")
+                if (titleId == StringId.PermissionToUse)//浠庝釜浜轰腑蹇冭繘鍏ュ崟鐙垎浜�
                 {
-                    new PublicAssmebly().TipMsgAutoClose(Language.StringByID(StringId.OperationFailed), true);
-                    return;
+                    new System.Threading.Thread(() =>
+                    {
+                        bool result = false;
+                        Action act = () => { };
+                        Application.RunOnMainThread(() =>
+                        {
+                            act = new PublicAssmebly().TipLoadingMsgDialog(Language.StringByID(StringId.SavingPleaseWait));
+                        });
+                        foreach (var f in funs_Del)
+                        {
+                            LoadMethod_DelSharedData(f);
+                        }
+                        foreach (var f in funs_New)
+                        {
+                            var sd = funs.Find((obj) => obj.ShareName == f.ShareName);
+                            //濡傛灉璇ュ姛鑳藉凡缁忓垎浜紝鏇存柊鍘熸湁鐨勬暟鎹�
+                            if (null != sd)
+                            {
+                                sd.ShareDataBytes = CommonPage.MyEncodingUTF8.GetBytes(Newtonsoft.Json.JsonConvert.SerializeObject(f));
+                                result = EditShareData(sd);
+                            }
+                            else//濡傛灉璇ュ姛鑳芥湭琚垎浜紝鍒欐柊澧炲垎浜�
+                            {
+                                result = LoadMethod_AddShareData(f);
+                            }
+                            if (!result)
+                            {
+                                Application.RunOnMainThread(() =>
+                                {
+                                    new PublicAssmebly().TipMsgAutoClose(Language.StringByID(StringId.FunctionSharingFailed), true);
+                                });
+                            }
+                        }
+                        Application.RunOnMainThread(() =>
+                        {
+                            act();
+                        });
+                        if (result)
+                        {
+                            Application.RunOnMainThread(() =>
+                            {
+                                new PublicAssmebly().TipMsgAutoClose(Language.StringByID(StringId.FunctionSharingSucceeded), true);
+                            });
+                            Thread.Sleep(1600);
+                            Application.RunOnMainThread(() =>
+                            {
+                                MainPage.BasePageView.RemoveAt(MainPage.BasePageView.ChildrenCount - 1);
+                                refreshFunctionCount?.Invoke(funs_New.Count.ToString());
+                            });
+                        }
+                    })
+                    { IsBackground = true }.Start();
                 }
                 else
                 {
-                    ssdd.DistributedMark = responePack.ResponseData.ToString();
+                    //var sharedBytes = CommonPage.MyEncodingUTF8.GetBytes(Newtonsoft.Json.JsonConvert.SerializeObject(funs_New));
+                    var page = new ChooseShareMemberTargetListPage(funs_New);
+                    MainPage.BasePageView.AddChidren(page);
+                    page.LoadPage();
+                    MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
                 }
-                memberInfo.CurShareData = ssdd;
+            };
+        }
+
+        /// <summary>
+        /// 鏂板鍏变韩鏁版嵁鐐瑰嚮浜嬩欢
+        /// </summary>
+        bool LoadMethod_AddShareData(ShareData ssdd)
+        {
+            //澧炲姞鍏变韩鏁版嵁鐩綍
+            ResponsePack responePack = new HttpServerRequest().AddShareData(ssdd);
+            if (responePack.StateCode.ToUpper() != "SUCCESS")
+            {
+                return false;
             }
             else
             {
-                UpdataShareData();
+                ssdd.DistributedMark = responePack.ResponseData.ToString();
+                // 鏇存柊鍏变韩鏁版嵁
+                return EditShareData(ssdd);
+            }
+        }
+        /// <summary>
+        /// 鍒犻櫎鍏变韩鏁版嵁鐐瑰嚮浜嬩欢
+        /// </summary>
+        /// <param name="function"></param>
+        bool LoadMethod_DelSharedData(ShareData sd)
+        {
+            ResponsePack responePack = new HttpServerRequest().DeleteShareData(sd);
+            if (responePack.StateCode.ToUpper() != "SUCCESS")
+            {
+                return false;
+            }else
+            {
+                return true;
             }
         }
 
         /// <summary>
         /// 鏇存柊鍏变韩鏁版嵁
         /// </summary>
-        void UpdataShareData()
+        bool EditShareData(ShareData sd)
         {
-            ResponsePack responePack = new HttpServerRequest().EditShareData(memberInfo.CurShareData);
+            ResponsePack responePack = new HttpServerRequest().EditShareData(sd);
             if (responePack.StateCode.ToUpper() == "SUCCESS")
             {
-                new PublicAssmebly().TipMsgAutoClose(Language.StringByID(StringId.SavedSuccessfully), true);
+                return true;
             }
             else
             {
-                new PublicAssmebly().TipMsgAutoClose(Language.StringByID(StringId.OperationFailed), true);
+                return false;
             }
         }
 
-        void LoadEvent_SharedDataChange(Button btnChoose, Button btn2, FrameLayout btn3, Entity.Function function)
+        void LoadMethod_SharedDataChange(Button btnChoose, Button btn2, FrameLayout btn3, Function function)
         {
             EventHandler<MouseEventArgs> eventHandler = (sender, e) =>
             {
                 btnChoose.IsSelected = !btnChoose.IsSelected;
+                var sd = funs.Find((obj) => obj.ShareName == function.sid);
                 if (btnChoose.IsSelected)
                 {
                     try
                     {
-                        funs.Add(function);
+                        if (null != sd)
+                        {
+                            if (!funs_New.Contains(sd))
+                            {
+                                funs_New.Add(sd);
+                            }
+                            if (funs_Del.Contains(sd))
+                            {
+                                funs_Del.Remove(sd);
+                            }
+                        }
+                        else
+                        {
+                            var newSd = new ShareData();
+                            newSd.ShareName = function.sid;
+                            newSd.HouseDistributedMark = DB_ResidenceData.residenceData.residecenInfo.RegionID;
+                            newSd.ShareDataBytes = CommonPage.MyEncodingUTF8.GetBytes(Newtonsoft.Json.JsonConvert.SerializeObject(function));
+                            newSd.SubAccountDistributedMark = memberInfo.SubAccountDistributedMark;
+                            funs_New.Add(newSd);
+                        }
+                        btnChooseAll.IsSelected = true;
+                        foreach (var f in room.functions)
+                        {
+                            if (funs_New.Find((obj) => obj.ShareName == f.sid) == null)
+                            {
+                                btnChooseAll.IsSelected = false;
+                                break;
+                            }
+                        }
                     }
                     catch (Exception ex)
                     {
@@ -75,31 +186,64 @@
                 }
                 else
                 {
-                    funs.Remove(function);
+                    var onFuns = funs_New.Find((obj) => obj.ShareName == function.sid);
+                    if (funs_New.Contains(onFuns))
+                    {
+                        funs_New.Remove(onFuns);
+                    }
+
+                    if (null != sd)
+                    {
+                        if (!funs_Del.Contains(sd))
+                        {
+                            funs_Del.Add(sd);
+                        }
+                    }
+                    btnChooseAll.IsSelected = false;
                 }
             };
             btnChoose.MouseUpEventHandler = eventHandler;
             btn2.MouseUpEventHandler = eventHandler;
             btn3.MouseUpEventHandler = eventHandler;
         }
-
+        /// <summary>
+        /// 鍏ㄩ�夋寜閽偣鍑讳簨浠�
+        /// </summary>
         void LoadEvent_AllSharedDataChange()
         {
             EventHandler<MouseEventArgs> eventHandler = (sender, e) =>
             {
                 btnChooseAll.IsSelected = !btnChooseAll.IsSelected;
-                funs.Clear();
-                funs = new System.Collections.Generic.List<Function>();
+                funs_Del = new List<ShareData>();
+                funs_New = new List<ShareData>();
                 if (btnChooseAll.IsSelected)
                 {
-                    funs.AddRange( room.functions);
+                    foreach(var f in room.functions)
+                    {
+                        var ssdd = new ShareData();
+                        ssdd.ShareName = f.sid;
+                        ssdd.HouseDistributedMark = DB_ResidenceData.residenceData.residecenInfo.RegionID;
+                        ssdd.ShareDataBytes = CommonPage.MyEncodingUTF8.GetBytes(Newtonsoft.Json.JsonConvert.SerializeObject(f));
+                        ssdd.SubAccountDistributedMark = memberInfo.SubAccountDistributedMark;
+                        funs_New.Add(ssdd);
+                    }
                 }
-                LoadFunctionRow();
+                else
+                {
+                    foreach(var f in room.functions)
+                    {
+                        var sd = funs.Find((obj) => obj.ShareName == f.sid);
+                        if (sd != null)
+                        {
+                            funs_Del.Add(sd);
+                        }
+                    }
+                }
+                LoadFunctionRow(funs_New);
             };
             btnChooseAll.MouseUpEventHandler = eventHandler;
             allRoomView.MouseUpEventHandler = eventHandler;
 
         }
-
     }
 }

--
Gitblit v1.8.0