wxr
2020-07-06 23c075a9c27946773feccf05abc90489a6bf5203
HDL_ON/UI/UI2/4-PersonalCenter/MemberManagement/MemberFunctionPermissionPageBLL.cs
@@ -1,4 +1,6 @@
using 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;
        }
    }
}