using Model;
using Email = Model.Email;

namespace IHM.Mobile;

public partial class ForgetPassword : ContentPage
{
    public Manager Mgr => (App.Current as App).Manager;
	private string code;
	//private DateTime _startTime;
	//private CancellationTokenSource _cancellationTokenSource;

	public ForgetPassword()
	{
		InitializeComponent();
	}
    public async void SearchEmail(object sender, EventArgs e)
    {
		if (EntryMail.Text == null)
		{
			AffichError("Email inconnue", "Aucun compte existant portant cette adresse mail", "OK");
		}
		if (await Mgr.Pers.EmailDisponible(EntryMail.Text))
        {
            Random generator = new Random();
            code = generator.Next(0, 1000000).ToString("D6");
            Email.CreateMail(EntryMail.Text, code);
			ValidateReceptCode.IsVisible = true;
			ConnexionButton.IsEnabled = false;
			UpdateArc();
		}
		else
		{
			AffichError("Mail inexistant", "Aucun compte possédant cette adresse email trouvé", "OK");
		}
	}
    private async void AffichError(string s, string s1, string s2)
    {
        await DisplayAlert(s, s1, s2);
    }
    private async void UpdateArc()
    {
		int timeRemaining = 60;
        while (timeRemaining != 0)
        {
            ConnexionButton.Text = $"{timeRemaining}";

            timeRemaining--;

            await Task.Delay(1000);
        }

		ConnexionButton.Text = "valider Email";
		ConnexionButton.IsEnabled = true;
    }
    private void ValideCode(object sender, EventArgs e)
	{
		if(EntryCodeRecept.Text == code)
		{
			NavigateTo();	
		}
		else
		{
			AffichError("Code non identique", "Veuillez entrer le même code que celui reçu par mail", "OK");
		}
	}

	public async void NavigateTo()
	{
		await Navigation.PushModalAsync(new ChangePassword(EntryMail.Text));
	}
}