using System;
using Shared.Common;
namespace Shared.Phone.UserView
{
///
/// Home page.第二版呀
///
public class HomePage : PageLayout
{
static HomePage homePage;
///
/// Gets the instance.
///
/// The instance.
public static HomePage Instance
{
get
{
if (homePage == null)
{
homePage = new HomePage { IsShowPoint = false };
}
return homePage;
}
}
///
/// Inits the page.
///
public void InitPage()
{
if (0 < ChildrenCount)
{
return;
}
AddChidren(UserPage.Instance);
UserPage.Instance.InitPage();
this.PageChange += (sender, e) =>
{
while (e < this.ChildrenCount - 1)
{
this.GetChildren(this.ChildrenCount - 1).RemoveFromParent();
}
if (e == 0)
{
this.ScrollEnabled = true;
}
};
//直接登录
if (Config.Instance.IsLogin)
{
//显示启动页
this.ShowLoginLoadView();
CommonPage.Loading.Start();
UserCenter.HdlThreadLogic.Current.RunThread(() =>
{
//登录
var loginSuccess = LoginByPWDAsync(Config.Instance.Account, Config.Instance.Password);
//登录成功,或者没有网络都可以登录
if (loginSuccess == 1 || loginSuccess == 2)
{
var homes = UserCenter.HdlResidenceLogic.Current.GetHomeListsFromDb();
//刷新个人中心的内存及线程
UserCenter.UserCenterLogic.InitUserCenterMenmoryAndThread();
//启动ZigBee
ZigBee.Common.Application.Init();
UserCenter.HdlThreadLogic.Current.RunMain(() =>
{
CommonPage.Instance.RemoveViewByTag("Login");
UserPage.Instance.ReFreshControl();
CommonPage.Loading.Hide();
});
}
else
{
//设定一个时间
Config.Instance.LoginDateTime = new DateTime(1970, 1, 1);
Config.Instance.Save();
UserCenter.HdlThreadLogic.Current.RunMain(() =>
{
CommonPage.Loading.Hide();
CommonPage.Instance.RemoveViewByTag("Login");
//登录弹出登录界面
var accountLogin = new Login.AccountLoginForm { };
Shared.Common.CommonPage.Instance.AddChidren(accountLogin);
accountLogin.ShowForm();
});
}
});
}
else
{
//未登录弹出登录界面
var accountLogin = new Login.AccountLoginForm { };
Shared.Common.CommonPage.Instance.AddChidren(accountLogin);
accountLogin.ShowForm();
}
}
///
/// 显示启动页
///
public void ShowLoginLoadView()
{
var loginLoad = new LoginLoading { };
CommonPage.Instance.AddChidren(loginLoad);
loginLoad.Show();
}
///
/// 1:登录成功 0:密码错误 -1:其他异常 2:无法联网
///
/// The by PWDA sync.
/// Account.
/// Password.
/// Source.
/// Company.
public int LoginByPWDAsync(string account, string password, string source = "", int company = 0)
{
var isLoginSuccess = -1;
var requestObj = new SendDataToServer.LoginObj
{
Account = account,
Password = password,
Source = source,
Company = company
};
var requestJson = Newtonsoft.Json.JsonConvert.SerializeObject(requestObj);
//登陆接口特殊,需要快一点访问,设置3秒超时
var revertObj = CommonPage.Instance.RequestHttpsZigbeeAsync("ZigbeeUsers/Login", System.Text.Encoding.UTF8.GetBytes(requestJson), 3);
if (revertObj == null)
{
return 2;
}
var stateCodeStr = revertObj.StateCode.ToUpper();
//Error 不能直接从服务器取,只能根据状态码逐一判断
if (stateCodeStr == "SUCCESS")
{
var responseDataObj = Newtonsoft.Json.JsonConvert.DeserializeObject(revertObj.ResponseData.ToString());
var revertData = responseDataObj;
//标记上一次是不是同一个账号登陆
Config.Instance.TheSameLoginAccount = Config.Instance.Guid == revertData.Guid;
Config.Instance.Account = revertData.Account;
Config.Instance.Password = password;
Config.Instance.MD5PWD = revertData.MD5PWD;
Config.Instance.Guid = revertData.Guid;
Config.Instance.LoginDateTime = DateTime.Now;
Config.Instance.LoginToken = revertData.Token;
//上报设备ID
CommonPage.Instance.PushRegID();
isLoginSuccess = 1;
}
else if (stateCodeStr == "YOUDATANOISLOCALREGION")
{
//不在本区域,需要重定向区域后再次请求登录
var responseDataObj = Newtonsoft.Json.JsonConvert.DeserializeObject(revertObj.ResponseData.ToString());
CommonPage.RequestHttpsHost = responseDataObj.RegionServer;
//再次登录
return this.LoginByPWDAsync(account, password, source, company);
}
if (stateCodeStr == "NOTVERIFY")
{
//未激活
}
else if (stateCodeStr == "NOTENABLE")
{
//该用户属于调试账号,并未启用
}
else if (stateCodeStr == "PARAMETEROREMPTY")
{
//提供的参数错误
}
else if (stateCodeStr == "USERNAMEORPWDERROR")
{
//账号或密码错误
isLoginSuccess = 0;
}
else if (stateCodeStr == "ACCOUNTNOEXISTS")
{
//账号不存在
isLoginSuccess = 0;
}
return isLoginSuccess;
}
}
}