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) => { Action action = () => { UploadShareDeviceList(); }; //是否需要保存 new PublicAssmebly().TipOptionMsg(StringId.Tip, StringId.IfNeedToSave, action); //if (titleId == StringId.PermissionToUse)//从个人中心进入单独分享 //{ // Action action = () => // { // UploadShareDeviceList(); // }; // //是否需要保存 // new PublicAssmebly().TipOptionMsg(StringId.Tip, StringId.IfNeedToSave, action); //} //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)); }); //2020-12-22 屏蔽房间分享管理 //if (!string.IsNullOrEmpty(roomId)) //{ // //如果房间ID不为空,管理房间 // ManageRoomSharing(); //} //2.批量删除分享 var deleteShareObj = new DeleteShareObj() { shareDatas = funs_Del, homeId = DB_ResidenceData.Instance.CurrentRegion.id, }; LoadMethod_DelSharedData(deleteShareObj); //3.批量上传 var funs_NeedAdd = new List(); foreach (var f in funs_RoomAll) { var sd = curResidenceShareData.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.Instance.CurrentRegion.id, }; 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(curResidenceShareData); //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.CurResidenceShareData = funs_final; }); Thread.Sleep(1600); Application.RunOnMainThread(() => { MainPage.BasePageView.GetChildren(MainPage.BasePageView.ChildrenCount - 1).RemoveFromParent(); refreshAction?.Invoke(); }); } } 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; } } /// /// 管理房间分享操作 /// funs_New 大于1分享房间 /// bool ManageRoomSharing() { bool success = false; //1.管理最终属于房间的分享 if (funs_RoomAll != null && funs_RoomAll.Count > 0) { //最终属于房间的分享大于0 success = ShareRoom(); if (success) { Utlis.WriteLine("添加房间分享成功"); } else { Utlis.WriteLine("添加房间分享失败"); } } else { success = DeleteShareRoom(); if (success) { Utlis.WriteLine("删除房间分享成功"); } else { Utlis.WriteLine("删除房间分享失败"); } } return success; } /// /// 分享房间 /// /// bool ShareRoom() { var roomList = new List(); roomList.Add(new ShareData() { shareType = ShareType.ROOM.ToString(), shareTypeId = roomId }); List childAccountIds = new List(); childAccountIds.Add(memberInfo.childAccountId); var addShareObj = new AddShareObj() { childAccountIds = childAccountIds, homeId = DB_ResidenceData.Instance.CurrentRegion.id, 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 = roomId }); var deleteShareObj = new DeleteShareObj() { shareDatas = roomList, homeId = DB_ResidenceData.Instance.CurrentRegion.id, }; 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, RoomData roomData) { EventHandler eventHandler = (sender, e) => { btnChoose.IsSelected = !btnChoose.IsSelected; var sd = curResidenceShareData.Find((obj) => obj.shareTypeId == roomData.shareTypeId); if (btnChoose.IsSelected) { try { if (null != sd) { if (!funs_RoomAll.Contains(sd)) { funs_RoomAll.Add(sd); } if (funs_Del.Contains(sd)) { funs_Del.Remove(sd); } } else { var newSd = new ShareData(); newSd.shareTypeId = roomData.shareTypeId; newSd.shareType = roomData.shareType; funs_RoomAll.Add(newSd); } btnChooseAll.IsSelected = true; foreach (var f in roomFunctionOrSceneList) { if (funs_RoomAll.Find((obj) => obj.shareTypeId == f.shareTypeId) == null) { btnChooseAll.IsSelected = false; break; } } } catch (Exception ex) { MainPage.Log($"Evhaaa {ex.Message}"); } } else { var onFuns = funs_RoomAll.Find((obj) => obj.shareTypeId == roomData.shareTypeId); if (funs_RoomAll.Contains(onFuns)) { funs_RoomAll.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_RoomAll = new List(); if (btnChooseAll.IsSelected) { foreach (var f in roomFunctionOrSceneList) { var ssdd = new ShareData(); ssdd.shareTypeId = f.shareTypeId; ssdd.shareType = f.shareType; funs_RoomAll.Add(ssdd); } } else { foreach (var f in roomFunctionOrSceneList) { var sd = curResidenceShareData.Find((obj) => obj.shareTypeId == f.shareTypeId); if (sd != null) { funs_Del.Add(sd); } } } LoadFunctionRow(funs_RoomAll); }; btnChooseAll.MouseUpEventHandler = eventHandler; allRoomView.MouseUpEventHandler = eventHandler; } } }