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;
}
}
}