HDL_ON/UI/UI2/4-PersonalCenter/MemberManagement/ChooseShareMemberTargetListPageBLL.cs
@@ -1,254 +1,282 @@
using System;
using System.Collections.Generic;
using System.IO;
using System.Threading;
using HDL_ON.DAL.Server;
using HDL_ON.Entity;
using Newtonsoft.Json.Linq;
using Shared;
//using System;
//using System.Collections.Generic;
//using System.IO;
//using System.Threading;
//using HDL_ON.DAL.Server;
//using HDL_ON.Entity;
//using Newtonsoft.Json.Linq;
//using Shared;
namespace HDL_ON.UI
{
    public partial class ChooseShareMemberTargetListPage
    {
        /// <summary>
        /// 加载获取住宅子账号信息线程
        /// </summary>
        Thread LoadThread_GetResidenceMemberAccount()
        {
            var thread = new Thread(() =>
            {
                try
                {
                    memberList.Clear();
                    var loginResult = LoadMethod_GetResidenceMemberAccount();
                    if (loginResult)
                    {
                        Application.RunOnMainThread(() =>
                        {
                            LoadMemberRow();
                        });
                    }
                }
                catch (Exception ex)
                {
                    MainPage.Log($"LoadThread_GetResidenceMemberAccount 2 : {ex.Message}");
                }
                finally
                {
                    Application.RunOnMainThread(() =>
                    {
                        if (waitPage != null)
                        {
                            waitPage.RemoveFromParent();
                            waitPage = null;
                        }
                    });
                }
            })
            { IsBackground = true };
            return thread;
        }
//namespace HDL_ON.UI
//{
//    public partial class ChooseShareMemberTargetListPage
//    {
//        /// <summary>
//        /// 加载获取住宅子账号信息线程
//        /// </summary>
//        Thread LoadThread_GetResidenceMemberAccount()
//        {
//            var thread = new Thread(() =>
//            {
//                try
//                {
//                    memberList.Clear();
//                    var loginResult = LoadMethod_GetResidenceMemberAccount();
//                    if (loginResult)
//                    {
//                        Application.RunOnMainThread(() =>
//                        {
//                            LoadMemberRow();
//                        });
//                    }
//                }
//                catch (Exception ex)
//                {
//                    MainPage.Log($"LoadThread_GetResidenceMemberAccount 2 : {ex.Message}");
//                }
//                finally
//                {
//                    Application.RunOnMainThread(() =>
//                    {
//                        if (waitPage != null)
//                        {
//                            waitPage.RemoveFromParent();
//                            waitPage = null;
//                        }
//                    });
//                }
//            })
//            { IsBackground = true };
//            return thread;
//        }
        /// <summary>
        /// 更改分享成员列表
        /// </summary>
        EventHandler<MouseEventArgs> LoadEvent_ChangeSharedList(Button btnChosse, ResidenceMemberInfo info)
        {
            EventHandler<MouseEventArgs> eventHandler = (sender, e) =>
            {
                btnChosse.IsSelected = !btnChosse.IsSelected;
                if (btnChosse.IsSelected)
                {
                    if (!memberList.Contains(info))
                    {
                        memberList.Add(info);
                    }
                }
                else
                {
                    if (memberList.Contains(info))
                    {
                        memberList.Remove(info);
                    }
                }
            };
            return eventHandler;
        }
//        /// <summary>
//        /// 更改分享成员列表
//        /// </summary>
//        EventHandler<MouseEventArgs> LoadEvent_ChangeSharedList(Button btnChosse, ResidenceMemberInfo info)
//        {
//            EventHandler<MouseEventArgs> eventHandler = (sender, e) =>
//            {
//                btnChosse.IsSelected = !btnChosse.IsSelected;
//                if (btnChosse.IsSelected)
//                {
//                    if (!memberList.Contains(info))
//                    {
//                        memberList.Add(info);
//                    }
//                }
//                else
//                {
//                    if (memberList.Contains(info))
//                    {
//                        memberList.Remove(info);
//                    }
//                }
//            };
//            return eventHandler;
//        }
        /// <summary>
        /// 分享数据
        /// </summary>
        void LoadEvent_SharedData()
        {
            btnOption.MouseUpEventHandler = (sender, e) =>
            {
                new Thread(() =>
                {
                    bool result = false;
                    Action act = () => { };
                    Application.RunOnMainThread(() =>
                    {
                        act = new PublicAssmebly().TipLoadingMsgDialog(Language.StringByID(StringId.SavingPleaseWait));
                    });
                    foreach (var member in memberList)
                    {
                        foreach (var f in addFuns)
                        {
                            var sd = member.CurResidenceShareDate.Find((obj) => obj.fileName == f.fileName);
                            //如果该功能已经分享,更新原有的数据
                            if (null != sd)
                            {
                                sd.ShareDataBytes = System.Text.Encoding.UTF8.GetBytes(Newtonsoft.Json.JsonConvert.SerializeObject(f));
                                result = EditShareData(sd);
                            }
                            else//如果该功能未被分享,则新增分享
                            {
                                f.childAccountId = member.childAccountId;
                                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(() => {
                            for (int i = 0; i < 3; i++)
                            {
                                //MainPage.BasePageView.RemoveAt(MainPage.BasePageView.ChildrenCount - 1);
                                MainPage.BasePageView.GetChildren(MainPage.BasePageView.ChildrenCount - 1).RemoveFromParent();
                            }
                        });
                    }
                })
                { IsBackground = true }.Start();
            };
        }
//        /// <summary>
//        /// 分享数据
//        /// </summary>
//        void LoadEvent_SharedData()
//        {
//            btnOption.MouseUpEventHandler = (sender, e) =>
//            {
//                new Thread(() =>
//                {
//                    bool result = false;
//                    Action act = () => { };
//                    Application.RunOnMainThread(() =>
//                    {
//                        act = new PublicAssmebly().TipLoadingMsgDialog(Language.StringByID(StringId.SavingPleaseWait));
//                    });
//                    //foreach (var member in memberList)
//                    //{
//                    //    foreach (var f in addFuns)
//                    //    {
//                    //        var sd = member.CurResidenceShareDate.Find((obj) => obj.shareTypeId == f.shareTypeId);
//                    //        //如果该功能已经分享,更新原有的数据
//                    //        if (null != sd)
//                    //        {
//                    //            sd.ShareDataBytes = System.Text.Encoding.UTF8.GetBytes(Newtonsoft.Json.JsonConvert.SerializeObject(f));
//                    //            result = EditShareData(sd);
//                    //        }
//                    //        else//如果该功能未被分享,则新增分享
//                    //        {
//                    //            f.childAccountId = member.childAccountId;
//                    //            result = LoadMethod_AddShareData(f);
//                    //        }
//                    //        if (!result)
//                    //        {
//                    //            Application.RunOnMainThread(() => {
//                    //                new PublicAssmebly().TipMsgAutoClose(Language.StringByID(StringId.FunctionSharingFailed), true);
//                    //            });
//                    //        }
//                    //    }
//                    //}
        /// <summary>
        /// 新增共享数据点击事件
        /// </summary>
        bool LoadMethod_AddShareData(ShareData ssdd)
        {
            //增加共享数据目录
            var responePack = new HttpServerRequest().AddShareData(ssdd);
            if (responePack.Code.ToUpper() != "SUCCESS")
            {
                return false;
            }
            else
            {
                //ssdd.id = responePack.ResponseData.ToString();
                var responeObj = Newtonsoft.Json.JsonConvert.DeserializeObject<ShareData>(responePack.Data.ToString());
                ssdd.id = responeObj.id;
                //2020-11-22
                return true;
                //// 更新共享数据
                //return EditShareData(ssdd);
            }
        }
//                    //2.批量上传
//                    var funs_NeedAdd = new List<ShareData>();
//                    foreach (var member in memberList)
//                    {
//                        foreach (var f in addFuns)
//                        {
//                            var sd = member.CurResidenceShareDate.Find((obj) => obj.shareTypeId == f.shareTypeId);
//                            //如果该功能已经分享,更新原有的数据
//                            if (null == sd)
//                            {
//                                funs_NeedAdd.Add(sd);
//                            }
//                        }
//                    }
//                    List<string> childAccountIds = new List<string>();
//                    childAccountIds.Add(memberInfo.childAccountId);
//                    var addShareObj = new AddShareObj()
//                    {
//                        shareDatas = funs_NeedAdd,
//                        childAccountIds = childAccountIds,
//                        homeId = DB_ResidenceData.residenceData.residecenInfo.RegionID,
//                    };
//                    result = LoadMethod_AddShareData(addShareObj);
//                    if (!result)
//                    {
//                        Application.RunOnMainThread(() =>
//                        {
//                            new PublicAssmebly().TipMsgAutoClose(Language.StringByID(StringId.FunctionSharingFailed), true);
//                        });
//                    }
        /// <summary>
        /// 更新共享数据
        /// </summary>
        bool EditShareData(ShareData sd)
        {
            var responePack = new HttpServerRequest().EditShareData(sd);
            if (responePack.Code == StateCode.SUCCESS)
            {
                return true;
            }
            else
            {
                return false;
            }
        }
//                    Application.RunOnMainThread(() =>
//                    {
//                        act();
//                    });
//                    if (result)
//                    {
//                        Application.RunOnMainThread(() => {
//                            new PublicAssmebly().TipMsgAutoClose(Language.StringByID(StringId.FunctionSharingSucceeded), true);
//                        });
//                        Thread.Sleep(1600);
//                        Application.RunOnMainThread(() => {
//                            for (int i = 0; i < 3; i++)
//                            {
//                                //MainPage.BasePageView.RemoveAt(MainPage.BasePageView.ChildrenCount - 1);
//                                MainPage.BasePageView.GetChildren(MainPage.BasePageView.ChildrenCount - 1).RemoveFromParent();
//                            }
//                        });
//                    }
//                })
//                { IsBackground = true }.Start();
//            };
//        }
        /// <summary>
        /// 获取住宅下子账号的共享数据列表
        /// </summary>
        /// <param name="info"></param>
        void LoadMethod_GetMemberSharedDataList(ResidenceMemberInfo info)
        {
            var responePack = new HttpServerRequest().GetShareDataByMemberAccount(info.childAccountId);
            if (responePack.Code == StateCode.SUCCESS)
            {
                var responeObj = Newtonsoft.Json.JsonConvert.DeserializeObject<List<ShareData>>(responePack.Data.ToString());
                info.CurResidenceShareDate = responeObj;
            }
        }
//        /// <summary>
//        /// 新增共享数据点击事件
//        /// </summary>
//        bool LoadMethod_AddShareData(AddShareObj ssdd)
//        {
//            //增加共享数据目录
//            var responePack = new HttpServerRequest().AddShareData(ssdd);
//            if (responePack.Code.ToUpper() != "SUCCESS")
//            {
//                return false;
//            }
//            else
//            {
//                return true;
//            }
//        }
        /// <summary>
        /// 调用获取住宅子账号信息
        /// </summary>
        bool LoadMethod_GetResidenceMemberAccount()
        {
            var result = false;
            var responePack = new HttpServerRequest().GetResidenceMemberAccount();
            if (responePack.Code == StateCode.SUCCESS)
            {
                memberList = Newtonsoft.Json.JsonConvert.DeserializeObject<List<ResidenceMemberInfo>>(responePack.Data.ToString());
                foreach (var mInfo in memberList)
                {
                    ResponsePack memberInfoResponePack = new HttpServerRequest().GetResidenceMemberAccountInfo(mInfo.childAccountId);
                    var dataStr = JObject.FromObject(memberInfoResponePack.ResponseData);
                    FileStream fs = null;
                    try
                    {
                        var headImageString = dataStr.GetValue("HeadImage").ToString();
                        var jsonString = Newtonsoft.Json.JsonConvert.SerializeObject(headImageString);
                        var headImageBytes = Newtonsoft.Json.JsonConvert.DeserializeObject<byte[]>(jsonString);
                        var filePath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Personal) + "/", mInfo.childAccountId + ".png");
                        fs = new FileStream(filePath, FileMode.Create, FileAccess.Write);
                        fs.Write(headImageBytes, 0, headImageBytes.Length);
                        fs.Flush();
                        mInfo.headImagePagePath = filePath;
                    }
                    catch (Exception ex)
                    {
                        MainPage.Log($"download headImage error : {ex.Message}");
                    }
                    finally
                    {
                        if (fs != null)
                        {
                            fs.Close();
                        }
                        LoadMethod_GetMemberSharedDataList(mInfo);
                    }
                }
                result = true;
            }
            //失败
            else
            {
                //提示
                IMessageCommon.Current.ShowErrorInfoAlter(responePack.Code);
                //账号或者密码错误
                Application.RunOnMainThread(() =>
                {
                    waitPage.Hide();
                });
            }
            Application.RunOnMainThread(() =>
            {
                waitPage?.Hide();
            });
            return result;
        }
//        ///// <summary>
//        ///// 更新共享数据
//        ///// </summary>
//        //bool EditShareData(ShareData sd)
//        //{
//        //    var responePack = new HttpServerRequest().EditShareData(sd);
//        //    if (responePack.Code == StateCode.SUCCESS)
//        //    {
//        //        return true;
//        //    }
//        //    else
//        //    {
//        //        return false;
//        //    }
//        //}
    }
}
//        /// <summary>
//        /// 获取住宅下子账号的共享数据列表
//        /// </summary>
//        /// <param name="info"></param>
//        void LoadMethod_GetMemberSharedDataList(ResidenceMemberInfo info)
//        {
//            var responePack = new HttpServerRequest().GetShareDataByMemberAccount(info.childAccountId);
//            if (responePack.Code == StateCode.SUCCESS)
//            {
//                var responeObj = Newtonsoft.Json.JsonConvert.DeserializeObject<List<ShareData>>(responePack.Data.ToString());
//                info.CurResidenceShareDate = responeObj;
//            }
//        }
//        /// <summary>
//        /// 调用获取住宅子账号信息
//        /// </summary>
//        bool LoadMethod_GetResidenceMemberAccount()
//        {
//            var result = false;
//            var responePack = new HttpServerRequest().GetResidenceMemberAccount();
//            if (responePack.Code == StateCode.SUCCESS)
//            {
//                memberList = Newtonsoft.Json.JsonConvert.DeserializeObject<List<ResidenceMemberInfo>>(responePack.Data.ToString());
//                foreach (var mInfo in memberList)
//                {
//                    ResponsePack memberInfoResponePack = new HttpServerRequest().GetResidenceMemberAccountInfo(mInfo.childAccountId);
//                    var dataStr = JObject.FromObject(memberInfoResponePack.ResponseData);
//                    FileStream fs = null;
//                    try
//                    {
//                        var headImageString = dataStr.GetValue("HeadImage").ToString();
//                        var jsonString = Newtonsoft.Json.JsonConvert.SerializeObject(headImageString);
//                        var headImageBytes = Newtonsoft.Json.JsonConvert.DeserializeObject<byte[]>(jsonString);
//                        var filePath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Personal) + "/", mInfo.childAccountId + ".png");
//                        fs = new FileStream(filePath, FileMode.Create, FileAccess.Write);
//                        fs.Write(headImageBytes, 0, headImageBytes.Length);
//                        fs.Flush();
//                        mInfo.headImagePagePath = filePath;
//                    }
//                    catch (Exception ex)
//                    {
//                        MainPage.Log($"download headImage error : {ex.Message}");
//                    }
//                    finally
//                    {
//                        if (fs != null)
//                        {
//                            fs.Close();
//                        }
//                        LoadMethod_GetMemberSharedDataList(mInfo);
//                    }
//                }
//                result = true;
//            }
//            //失败
//            else
//            {
//                //提示
//                IMessageCommon.Current.ShowErrorInfoAlter(responePack.Code);
//                //账号或者密码错误
//                Application.RunOnMainThread(() =>
//                {
//                    waitPage.Hide();
//                });
//            }
//            Application.RunOnMainThread(() =>
//            {
//                waitPage?.Hide();
//            });
//            return result;
//        }
//    }
//}