@using Common.Validation
@using HushianWebApp.Service
@inject AuthService AuthService
@inject VerificationService verificationService;
@code {
private bool visible = false;
[Parameter] public EventCallback OnMultipleOfThree { get; set; }
public string Username { get; set; }
public int ID { get; set; } = 0;
public string Code { get; set; } = string.Empty;
//-----------------
private string code1, code2, code3, code4;
private ElementReference input1, input2, input3, input4;
string validateStyleUser = "";
private bool isButtonDisabled = true;
private int countdown = 60;
private System.Timers.Timer? timer;
}
@functions {
async Task Login()
{
if (Username.Replace("-", "").CheckMobile())
{
visible = true;
ID = await AuthService.login(new Common.Models.Auth.UserSide.AuthRequestFromUserSide()
{
Mobile = Username.Replace("-", "")
});
validateStyleUser = "";
await verifiTimer();
visible = false;
}
else
{
validateStyleUser = " border: 2px solid red; border-radius: 4px;";
}
}
async Task verifiTimer()
{
//----------
isButtonDisabled = true;
countdown = 60;
timer = new System.Timers.Timer(1000); // هر 1 ثانیه
timer.Elapsed += OnTimerElapsed;
timer.AutoReset = true;
timer.Enabled = true;
//----------
}
private void OnTimerElapsed(object? sender, System.Timers.ElapsedEventArgs e)
{
if (countdown > 0)
{
countdown--;
InvokeAsync(StateHasChanged); // بروزرسانی UI
}
if (countdown == 0)
{
isButtonDisabled = false;
timer?.Stop();
timer?.Dispose();
StateHasChanged();
}
}
async Task ver()
{
visible = true;
if (await AuthService.Verificationlogin(ID, Code))
await OnMultipleOfThree.InvokeAsync();
visible = false;
}
private async Task MoveNext(ChangeEventArgs e)
{
if (e.Value?.ToString()?.Length == 1)
{
if (input1.Context == null) return;
if (string.IsNullOrEmpty(code1))
await input2.FocusAsync();
else if (string.IsNullOrEmpty(code2))
await input3.FocusAsync();
else if (string.IsNullOrEmpty(code3))
await input4.FocusAsync();
else if (string.IsNullOrEmpty(code4))
{
Code = $"{code1}{code2}{code3}{code4}";
}
}
}
private async Task OnLastInput(ChangeEventArgs e)
{
code4 = e.Value?.ToString();
if (!string.IsNullOrEmpty(code4) && code4.Length == 1)
{
Code = $"{code1}{code2}{code3}{code4}";
await ver();
}
}
}