using System; using System.Collections.Generic; using System.Threading; using HDL_ON.DAL; using HDL_ON.DAL.Server; using HDL_ON.Entity; using Shared; namespace HDL_ON.UI { public partial class MemberFunctionPermissionPage { void LoadEventList() { LoadEvent_AllSharedDataChange(); LoadEvent_OptionClick(); } /// /// 底部操作按钮点击事件 /// void LoadEvent_OptionClick() { btnOption.MouseUpEventHandler = (sender, e) => { if (titleId == StringId.PermissionToUse)//从个人中心进入单独分享 { UploadShareDeviceList(); } else { //var sharedBytes = System.Text.Encoding.UTF8.GetBytes(Newtonsoft.Json.JsonConvert.SerializeObject(funs_New)); //2020-12-01 屏蔽页面 //var page = new ChooseShareMemberTargetListPage(funs_New, memberInfo); //MainPage.BasePageView.AddChidren(page); //page.LoadPage(); //MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1; } }; } /// /// 管理设备分享 /// 2020-12-08 1.增加分享设备的时候,判断当前房间分享设备总数,从而决定是否需要增加或者移除房间分享 /// void UploadShareDeviceList() { new Thread(() => { try { bool result = false; Action act = () => { }; Application.RunOnMainThread(() => { act = new PublicAssmebly().TipLoadingMsgDialog(Language.StringByID(StringId.SavingPleaseWait)); }); //1.管理最终属于房间的分享 if (funs_New != null && funs_New.Count > 0) { //最终属于房间的分享大于0 var success = ShareRoom(); if (success) { Utlis.WriteLine("添加房间分享成功"); } else { Utlis.WriteLine("添加房间分享失败"); } } else { var success = DeleteShareRoom(); if (success) { Utlis.WriteLine("删除房间分享成功"); } else { Utlis.WriteLine("删除房间分享失败"); } } //2.批量删除分享 var deleteShareObj = new DeleteShareObj() { shareDatas = funs_Del, homeId = DB_ResidenceData.residenceData.residecenInfo.RegionID, }; LoadMethod_DelSharedData(deleteShareObj); //3.批量上传 var funs_NeedAdd = new List(); foreach (var f in funs_New) { var sd = funs.Find((obj) => obj.shareTypeId == f.shareTypeId); //如果该功能已经分享,不用分享 if (null == sd) { funs_NeedAdd.Add(f); } } //3.1 提交请求 List childAccountIds = new List(); 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); }); } Application.RunOnMainThread(() => { act(); }); if (result) { //4.1管理最终的分享列表 var funs_final = new List(); funs_final.AddRange(funs); //4.2移除删除的 foreach (var share_d in funs_Del) { var sd = funs_final.Find((obj) => obj.shareTypeId == share_d.shareTypeId); //如果该功能已经分享,不用分享 if (null != sd) { funs_final.Remove(share_d); } } //4.3添加新增的 funs_final.AddRange(funs_NeedAdd); Application.RunOnMainThread(() => { new PublicAssmebly().TipMsgAutoClose(Language.StringByID(StringId.FunctionSharingSucceeded), true); memberInfo.CurResidenceShareDate = funs_final; }); Thread.Sleep(1600); Application.RunOnMainThread(() => { //MainPage.BasePageView.RemoveAt(MainPage.BasePageView.ChildrenCount - 1); MainPage.BasePageView.GetChildren(MainPage.BasePageView.ChildrenCount - 1).RemoveFromParent(); refreshFunctionCount?.Invoke(funs_New.Count.ToString()); }); } } catch { } finally { } }) { IsBackground = true }.Start(); } /// /// 新增共享数据点击事件 /// bool LoadMethod_AddShareData(AddShareObj ssdd) { //增加共享数据目录 var responePack = new HttpServerRequest().AddShareData(ssdd); if (responePack.Code != StateCode.SUCCESS) { return false; } else { return true; //var responeObj = Newtonsoft.Json.JsonConvert.DeserializeObject(responePack.Data.ToString()); //ssdd.id = responeObj.id; //// 更新共享数据 //return EditShareData(ssdd); } } /// /// 删除共享数据点击事件 /// /// bool LoadMethod_DelSharedData(DeleteShareObj sd) { var responePack = new HttpServerRequest().DeleteShareData(sd); if (responePack.Code != StateCode.SUCCESS) { return false; } else { return true; } } /// /// 分享房间 /// /// bool ShareRoom() { var roomList = new List(); roomList.Add(new ShareData() { shareType = ShareType.ROOM.ToString(), shareTypeId = room.roomId }); List childAccountIds = new List(); childAccountIds.Add(memberInfo.childAccountId); var addShareObj = new AddShareObj() { childAccountIds = childAccountIds, homeId = DB_ResidenceData.residenceData.residecenInfo.RegionID, shareDatas = roomList }; var responePack = new HttpServerRequest().AddShareData(addShareObj); if (responePack.Code != StateCode.SUCCESS) { return false; } else { return true; } } /// /// 删除房间分享 /// /// bool DeleteShareRoom() { var roomList = new List(); roomList.Add(new ShareData() { shareType = ShareType.ROOM.ToString(), shareTypeId = room.roomId }); var deleteShareObj = new DeleteShareObj() { shareDatas = roomList, homeId = DB_ResidenceData.residenceData.residecenInfo.RegionID, }; var responePack = new HttpServerRequest().DeleteShareData(deleteShareObj); if (responePack.Code != StateCode.SUCCESS) { return false; } else { return true; } } /// /// LoadMethod_SharedDataChange /// /// /// /// /// void LoadMethod_SharedDataChange(Button btnChoose, Button btn2, FrameLayout btn3, Function function) { EventHandler eventHandler = (sender, e) => { btnChoose.IsSelected = !btnChoose.IsSelected; var sd = funs.Find((obj) => obj.shareTypeId == function.deviceId); if (btnChoose.IsSelected) { try { 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.shareTypeId = function.deviceId; funs_New.Add(newSd); } btnChooseAll.IsSelected = true; foreach (var f in room.GetRoomFunctions(false)) { if (funs_New.Find((obj) => obj.shareTypeId == f.deviceId) == null) { btnChooseAll.IsSelected = false; break; } } } catch (Exception ex) { MainPage.Log($"Evhaaa {ex.Message}"); } } else { var onFuns = funs_New.Find((obj) => obj.shareTypeId == function.deviceId); 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; } /// /// 全选按钮点击事件 /// void LoadEvent_AllSharedDataChange() { EventHandler eventHandler = (sender, e) => { btnChooseAll.IsSelected = !btnChooseAll.IsSelected; funs_Del = new List(); funs_New = new List(); if (btnChooseAll.IsSelected) { foreach (var f in room.GetRoomFunctions(false)) { var ssdd = new ShareData(); ssdd.shareTypeId = f.deviceId; funs_New.Add(ssdd); } } else { foreach (var f in room.GetRoomFunctions(false)) { var sd = funs.Find((obj) => obj.shareTypeId == f.deviceId); if (sd != null) { funs_Del.Add(sd); } } } LoadFunctionRow(funs_New); }; btnChooseAll.MouseUpEventHandler = eventHandler; allRoomView.MouseUpEventHandler = eventHandler; } } }