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
{
///
/// 加载获取住宅子账号信息线程
///
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;
}
///
/// 更改分享成员列表
///
EventHandler LoadEvent_ChangeSharedList(Button btnChosse, ResidenceMemberInfo info)
{
EventHandler 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;
}
///
/// 分享数据
///
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.ShareName == f.ShareName);
//如果该功能已经分享,更新原有的数据
if (null != sd)
{
sd.ShareDataBytes = DAL.CommonPage.MyEncodingUTF8.GetBytes(Newtonsoft.Json.JsonConvert.SerializeObject(f));
result = EditShareData(sd);
}
else//如果该功能未被分享,则新增分享
{
f.SubAccountDistributedMark = member.SubAccountDistributedMark;
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);
}
});
}
})
{ IsBackground = true }.Start();
};
}
///
/// 新增共享数据点击事件
///
bool LoadMethod_AddShareData(ShareData ssdd)
{
//增加共享数据目录
ResponsePack responePack = new HttpServerRequest().AddShareData(ssdd);
if (responePack.StateCode.ToUpper() != "SUCCESS")
{
return false;
}
else
{
ssdd.DistributedMark = responePack.ResponseData.ToString();
// 更新共享数据
return EditShareData(ssdd);
}
}
///
/// 更新共享数据
///
bool EditShareData(ShareData sd)
{
ResponsePack responePack = new HttpServerRequest().EditShareData(sd);
if (responePack.StateCode.ToUpper() == "SUCCESS")
{
return true;
}
else
{
return false;
}
}
///
/// 获取住宅下子账号的共享数据列表
///
///
void LoadMethod_GetMemberSharedDataList(ResidenceMemberInfo info)
{
ResponsePack responePack = new HttpServerRequest().GetShareDataByMemberAccount(info.SubAccountDistributedMark);
if (responePack.StateCode.ToUpper() == "SUCCESS")
{
var responeObj = Newtonsoft.Json.JsonConvert.DeserializeObject>(responePack.ResponseData.ToString());
info.CurResidenceShareDate = responeObj;
}
}
///
/// 调用获取住宅子账号信息
///
bool LoadMethod_GetResidenceMemberAccount()
{
var result = false;
ResponsePack responePack = new HttpServerRequest().GetResidenceMemberAccount();
if (responePack.StateCode.ToUpper() == "SUCCESS")
{
memberList = Newtonsoft.Json.JsonConvert.DeserializeObject>(responePack.ResponseData.ToString());
foreach (var mInfo in memberList)
{
ResponsePack memberInfoResponePack = new HttpServerRequest().GetResidenceMemberAccountInfo(mInfo.Account);
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(jsonString);
var filePath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Personal) + "/", mInfo.DistributedMark + ".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
{
string tipStr = "Sever erorr";
switch (responePack.StateCode)
{
case "ValidCodeAndPhoneNoEqual":
tipStr = Language.StringByID(StringId.VerificationCodeError);
break;
case "USERNAMEORPWDERROR":
tipStr = Language.StringByID(StringId.LoginFailed_AccountOrPasswordError);
break;
case "ACCOUNTNOEXISTS":
tipStr = Language.StringByID(StringId.ACCOUNTNOEXISTS);
break;
case "NoRecord":
tipStr = Language.StringByID(StringId.PlsGetTheVerificationCode);
break;
case "Self:Net_Error":
tipStr = Language.StringByID(StringId.NetworkAnomaly);
break;
}
//账号或者密码错误
Application.RunOnMainThread(() =>
{
waitPage.Hide();
//提示原因
var tip = new Tip()
{
Text = tipStr,
CloseTime = 3,
Direction = AMPopTipDirection.None
};
tip.Show(bodyView);
});
}
Application.RunOnMainThread(() =>
{
waitPage?.Hide();
});
return result;
}
}
}