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();
|
}
|
|
/// <summary>
|
/// 底部操作按钮点击事件
|
/// </summary>
|
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;
|
//}
|
};
|
}
|
|
/// <summary>
|
/// 管理设备分享
|
/// 2020-12-08 1.增加分享设备的时候,判断当前房间分享设备总数,从而决定是否需要增加或者移除房间分享
|
/// </summary>
|
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<ShareData>();
|
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<string> childAccountIds = new List<string>();
|
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<ShareData>();
|
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();
|
}
|
|
/// <summary>
|
/// 新增共享数据点击事件
|
/// </summary>
|
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<ShareData>(responePack.Data.ToString());
|
//ssdd.id = responeObj.id;
|
//// 更新共享数据
|
//return EditShareData(ssdd);
|
}
|
}
|
/// <summary>
|
/// 删除共享数据点击事件
|
/// </summary>
|
/// <param name="function"></param>
|
bool LoadMethod_DelSharedData(DeleteShareObj sd)
|
{
|
var responePack = new HttpServerRequest().DeleteShareData(sd);
|
if (responePack.Code != StateCode.SUCCESS)
|
{
|
return false;
|
}
|
else
|
{
|
return true;
|
}
|
}
|
|
/// <summary>
|
/// 管理房间分享操作
|
/// funs_New 大于1分享房间
|
/// </summary>
|
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;
|
}
|
|
/// <summary>
|
/// 分享房间
|
/// </summary>
|
/// <returns></returns>
|
bool ShareRoom()
|
{
|
var roomList = new List<ShareData>();
|
roomList.Add(new ShareData()
|
{
|
shareType = ShareType.ROOM.ToString(),
|
shareTypeId = roomId
|
});
|
List<string> childAccountIds = new List<string>();
|
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;
|
}
|
}
|
|
/// <summary>
|
/// 删除房间分享
|
/// </summary>
|
/// <returns></returns>
|
bool DeleteShareRoom()
|
{
|
var roomList = new List<ShareData>();
|
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;
|
}
|
}
|
|
/// <summary>
|
/// LoadMethod_SharedDataChange
|
/// </summary>
|
/// <param name="btnChoose"></param>
|
/// <param name="btn2"></param>
|
/// <param name="btn3"></param>
|
/// <param name="function"></param>
|
void LoadMethod_SharedDataChange(Button btnChoose, Button btn2, FrameLayout btn3, RoomData roomData)
|
{
|
EventHandler<MouseEventArgs> 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;
|
}
|
|
/// <summary>
|
/// 全选按钮点击事件
|
/// </summary>
|
void LoadEvent_AllSharedDataChange()
|
{
|
EventHandler<MouseEventArgs> eventHandler = (sender, e) =>
|
{
|
btnChooseAll.IsSelected = !btnChooseAll.IsSelected;
|
funs_Del = new List<ShareData>();
|
funs_RoomAll = new List<ShareData>();
|
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;
|
|
}
|
}
|
|
|
|
}
|