using System;
using System.Text.RegularExpressions;
using System.Threading;
using HDL_ON.DAL.Server;
using HDL_ON.UI.CSS;
using Shared;
namespace HDL_ON.UI.UI1Login
{
public partial class ForgetPasswordPage
{
///
/// 加载事件列表
///
void LoadEventList()
{
LoadPage_SwitchResetMode();
LoadEvent_EditTextFcousChange();
LoadEvent_ChangeTextVisble();
LoadEvent_GetVerificationCode();
LoadEvent_Reset();
LoadEvent_TextChange();
}
///
/// 切换修改方式
///
void LoadPage_SwitchResetMode()
{
//选择手机方式
btnPhoneLogin.MouseUpEventHandler += (sender, e) =>
{
#region 切换选中按钮
btnEmailLogin.TextColor = CSS_Color.PromptingColor1;
btnEmailLogin.TextSize = CSS_FontSize.TextFontSize;
btnPhoneLogin.TextColor = CSS_Color.MainColor;
btnPhoneLogin.TextSize = CSS_FontSize.EmphasisFontSize_Secondary;
etAccount.PlaceholderText = Language.StringByID(StringId.PlsEntryCorrectMobilNeumber);
#endregion
#region 切换方式方式及图标
registerType = 0;
if (btnAccountIcon.Parent != null)
{
btnAccountIcon.RemoveFromParent();
}
accountView.AddChidren(btnGlobalRoaming);
#endregion
};
//选择邮箱方式
btnEmailLogin.MouseUpEventHandler += (sender, e) =>
{
#region 切换选中按钮
btnPhoneLogin.TextColor = CSS_Color.PromptingColor1;
btnPhoneLogin.TextSize = CSS_FontSize.TextFontSize;
btnEmailLogin.TextColor = CSS_Color.MainColor;
btnEmailLogin.TextSize = CSS_FontSize.EmphasisFontSize_Secondary;
etAccount.PlaceholderText = Language.StringByID(StringId.PlsEntryEmailAddress);
#endregion
#region 切换修改方式及图标
registerType = 1;
if (btnGlobalRoaming.Parent != null)
{
btnGlobalRoaming.RemoveFromParent();
}
accountView.AddChidren(btnAccountIcon);
#endregion
};
}
///
/// 加载文本变化事件
///
void LoadEvent_TextChange()
{
etAccount.TextChangeEventHandler += (sender, e) =>
{
Regex reg = new Regex(@"^[1]+\d{9}");
var mFalg = reg.Match(etAccount.Text.Trim());
if (!mFalg.Success || (btnGlobalRoaming.Text == "+86" && etAccount.Text.Trim().Length != 11))
{
btnGetVerificationCode.IsSelected = false;
}
else
{
btnGetVerificationCode.IsSelected = true;
}
};
}
///
/// 加载文本框焦点变化事件
///
void LoadEvent_EditTextFcousChange()
{
//账号文本框焦点变化事件
etAccount.FoucsChanged += (sender, e) =>
{
if (etAccount.Foucs)
{
btnAccountViewBottomLine.BackgroundColor = CSS_Color.MainColor;
btnAccountViewBottomLine.Height = Application.GetRealHeight(2);
}
else
{
//标记手机号码无效
btnGetVerificationCode.IsSelected = false;
btnAccountViewBottomLine.BackgroundColor = CSS_Color.DividingLineColor;
btnAccountViewBottomLine.Height = Application.GetRealHeight(1);
//手机方式-验证手机号码是否正确
if (registerType == 0)
{
Regex reg = new Regex(@"^[1]+\d{9}");
var mFalg = reg.Match(etAccount.Text.Trim());
if (!mFalg.Success || (btnGlobalRoaming.Text == "+86" && etAccount.Text.Trim().Length != 11))
{
btnAccountViewBottomLine.BackgroundColor = CSS_Color.AuxiliaryColor2;
btnAccountViewBottomLine.Height = Application.GetRealHeight(2);
new Tip()
{
CloseTime = 3,
Text = Language.StringByID(StringId.PlsEntryCorrectMobilNeumber),
Direction = AMPopTipDirection.None,
}.Show(bodyView);
}
else
{
btnGetVerificationCode.IsSelected = true;
LoadMothed_EnableResetButton();
}
}
else if (registerType == 1)
{
//邮箱方式-验证邮箱是否正确
var reg = new Regex("^\\s*([A-Za-z0-9_-]+(\\.\\w+)*@(\\w+\\.)+\\w{2,5})\\s*$");
var mFalg = reg.Match(etAccount.Text.Trim());
if (!mFalg.Success || (btnGlobalRoaming.Text == "+86" && etAccount.Text.Trim().Length != 11))
{
btnAccountViewBottomLine.BackgroundColor = CSS_Color.AuxiliaryColor2;
btnAccountViewBottomLine.Height = Application.GetRealHeight(2);
new Tip()
{
CloseTime = 3,
Text = Language.StringByID(StringId.PlsEntryCorrectEmailAddress),
Direction = AMPopTipDirection.None,
}.Show(bodyView);
}
else
{
btnGetVerificationCode.IsSelected = true;
LoadMothed_EnableResetButton();
}
}
}
};
//密码文本框焦点变化事件
etPassword.FoucsChanged += (sender, e) =>
{
if (etPassword.Foucs)
{
btnPasswordViewBottomLine.BackgroundColor = CSS_Color.MainColor;
btnPasswordViewBottomLine.Height = Application.GetRealHeight(2);
}
else
{
btnPasswordViewBottomLine.BackgroundColor = CSS_Color.DividingLineColor;
btnPasswordViewBottomLine.Height = Application.GetRealHeight(1);
//校验密码是否符合要求
if (etPassword.Text.Trim().Length < 6)
{
new Tip()
{
CloseTime = 3,
Direction = AMPopTipDirection.None,
Text = Language.StringByID(StringId.IncorrectRepeatPassword)
}.Show(bodyView);
}
}
};
//确认密码文本框焦点变化事件
etRepeatPassword.FoucsChanged += (sender, e) =>
{
if (etRepeatPassword.Foucs)
{
btnRepeatPasswordViewBottomLine.BackgroundColor = CSS_Color.MainColor;
btnRepeatPasswordViewBottomLine.Height = Application.GetRealHeight(2);
}
else
{
btnRepeatPasswordViewBottomLine.BackgroundColor = CSS_Color.DividingLineColor;
btnRepeatPasswordViewBottomLine.Height = Application.GetRealHeight(1);
//校验两次输入的密码是否一致
if (etPassword.Text.Trim() != etRepeatPassword.Text.Trim())
{
btnRepeatPasswordViewBottomLine.BackgroundColor = CSS_Color.AuxiliaryColor2;
btnRepeatPasswordViewBottomLine.Height = Application.GetRealHeight(2);
new Tip()
{
CloseTime = 3,
Direction = AMPopTipDirection.None,
Text = Language.StringByID(StringId.IncorrectRepeatPassword)
}.Show(bodyView);
}
else
{
LoadMothed_EnableResetButton();
}
}
};
//验证码文本框焦点变化事件
etVerificationCode.FoucsChanged += (sender, e) =>
{
if (etVerificationCode.Foucs)
{
btnVerificationCodeViewBottomLine.BackgroundColor = CSS_Color.MainColor;
btnVerificationCodeViewBottomLine.Height = Application.GetRealHeight(2);
}
else
{
btnVerificationCodeViewBottomLine.BackgroundColor = CSS_Color.DividingLineColor;
btnVerificationCodeViewBottomLine.Height = Application.GetRealHeight(1);
if (etVerificationCode.Text.Length > 4)
{
LoadMothed_EnableResetButton();
}
}
};
}
///
/// 更改密码可见性
///
void LoadEvent_ChangeTextVisble()
{
//密码文本可见性变化
btnVisiblePassword.MouseUpEventHandler += (sender, e) =>
{
btnVisiblePassword.IsSelected = !btnVisiblePassword.IsSelected;
etPassword.SecureTextEntry = !btnVisiblePassword.IsSelected;
};
//重复密码文本可见性变化
btnRepeatVisiblePassword.MouseUpEventHandler += (sender, e) =>
{
btnRepeatVisiblePassword.IsSelected = !btnRepeatVisiblePassword.IsSelected;
etRepeatPassword.SecureTextEntry = !btnRepeatVisiblePassword.IsSelected;
};
}
///
/// 获取验证码
///
void LoadEvent_GetVerificationCode()
{
btnGetVerificationCode.MouseUpEventHandler += (sender, e) =>
{
if (btnGetVerificationCode.IsSelected)
{
//获取验证码
var result = pm.SendSms(etAccount.Text.Trim());
if (result.StateCode == "Success")
{
//短信发送间隔60s
btnGetVerificationCode.IsSelected = false;
etVerificationCode.Foucs = true;
int time = 60;
new Thread(() =>
{
while (time > 0)
{
time--;
Application.RunOnMainThread(() =>
{
btnGetVerificationCode.Text = time.ToString() + "s";
});
Thread.Sleep(1000);
}
Application.RunOnMainThread(() =>
{
//回复获取短信按钮事件
btnGetVerificationCode.IsSelected = true;
btnGetVerificationCode.TextID = StringId.GetVerificationCode;
});
})
{ IsBackground = true }.Start();
}
else
{
string tipString = "Server error";
switch (result.StateCode)
{
case "Exist":
tipString = Language.StringByID(StringId.AccountAlreadyExists);
break;
case "SendFail":
tipString = Language.StringByID(StringId.FailedToSendVerificationCode);
break;
case "Self:Net_Error":
tipString = Language.StringByID(StringId.NetworkAnomaly);
break;
}
new Tip()
{
CloseTime = 3,
Direction = AMPopTipDirection.None,
Text = tipString
}.Show(bodyView);
}
}
};
}
///
/// 加载方式按钮事件
///
void LoadEvent_Reset()
{
btnReset.MouseUpEventHandler += (sender, e) =>
{
if (btnReset.IsSelected)
{
//创建修改密码线程
var loginThread = LoadMothed_ResetThread();
waitPage = new Loading();
new WaitPageMothed().LoadPage_WaitPage(loginThread, bodyView, waitPage);
}
};
}
///
/// 加载重置密码方法
///
Thread LoadMothed_ResetThread()
{
string account = etAccount.Text.Trim();
string password = etPassword.Text.Trim();
string repeatPassword = etRepeatPassword.Text.Trim();
string verCode = etVerificationCode.Text.Trim();
int countryIndex = 0;
try
{
countryIndex = Convert.ToInt32(btnGlobalRoaming.Text.Trim().Remove('+'));
}
catch { }
return new Thread(() =>
{
var verResult = pm.ValidatorCode(account, verCode, countryIndex);
if (verResult.StateCode == "Success")
{
var resetResult = pm.ResetPassword(account, password, repeatPassword, countryIndex);
if (resetResult.StateCode == "Success")
{
Application.RunOnMainThread(() =>
{
waitPage.Hide();
this.Close();
callbackAction?.Invoke(account);
});
}
else
{
string erorrInfo = "";
switch (resetResult.StateCode)
{
case "PwdNoConfirm"://两次输入的密码不一致
erorrInfo = Language.StringByID(StringId.IncorrectRepeatPassword);
break;
case "AccountNoExists"://两次输入的密码不一致
erorrInfo = Language.StringByID(StringId.AccountNotExist);
break;
default:
erorrInfo = "Server error";
break;
}
Application.RunOnMainThread(() =>
{
waitPage.Hide();
new Tip()
{
CloseTime = 3,
Direction = AMPopTipDirection.None,
Text = erorrInfo,
}.Show(bodyView);
});
}
}
else
{
string erorrInfo = "";
switch (verResult.StateCode)
{
case "ValidCodeAndPhoneNoEqual"://验证码错误
erorrInfo = Language.StringByID(StringId.VerificationCodeWrong);
break;
default:
erorrInfo = "Server error";
break;
}
Application.RunOnMainThread(() =>
{
waitPage.Hide();
new Tip()
{
CloseTime = 3,
Direction = AMPopTipDirection.None,
Text = erorrInfo,
}.Show(bodyView);
});
}
});
}
///
/// 使能修改确定按钮
///
void LoadMothed_EnableResetButton()
{
if (!string.IsNullOrEmpty(etAccount.Text) && !string.IsNullOrEmpty(etPassword.Text) && !string.IsNullOrEmpty(etVerificationCode.Text) && (etPassword.Text.Trim() == etRepeatPassword.Text.Trim()))
{
btnReset.IsSelected = true;
}
else
{
btnReset.IsSelected = false;
}
}
}
}