using Blazorise;
using Microsoft.AspNetCore.Components.Web;

namespace FoodsharingSiegen.Server.Pages
{
    /// <summary>
    ///     The login class (a. beging, 11.04.2022)
    /// </summary>
    public partial class Login
    {
        #region Private Properties

        /// <summary>
        ///     Gets or sets the value of the is valid mail (ab)
        /// </summary>
        private ValidationStatus IsValidMail { get; set; }

        /// <summary>
        ///     Gets or sets the value of the is valid password (ab)
        /// </summary>
        private ValidationStatus IsValidPassword { get; set; }

        /// <summary>
        ///     Gets or sets the value of the auth service (ab)
        /// </summary>
        /// <summary>
        ///     Gets or sets the value of the mail-address (ab)
        /// </summary>
        private string? MailAddress { get; set; }

        /// <summary>
        ///     Gets or sets the value of the password (ab)
        /// </summary>
        private string? Password { get; set; }

        /// <summary>
        ///     Gets or sets the login error message
        /// </summary>
        private string? LoginErrorMessage { get; set; }

        #endregion

        #region Private Method PerformLogin

        /// <summary>
        ///     Performs the login (a. beging, 11.04.2022)
        /// </summary>
        private async Task PerformLogin()
        {
            LoginErrorMessage = null;
            //Todo Eingaben Validieren [04.04.22 - Andre Beging]

            if (string.IsNullOrWhiteSpace(MailAddress) || string.IsNullOrWhiteSpace(Password))
            {
                MailAddress = string.Empty;
                Password = string.Empty;
                LoginErrorMessage = "E-Mail-Adresse oder Passwort ist ungültig.";
                return;
            }

            var loginR = await AuthService.Login(MailAddress, Password);
            if (loginR.Success)
                NavigationManager.NavigateTo("/", true);
            else
                LoginErrorMessage = loginR.ErrorMessage;
        }

        #endregion

        #region Private Method TextEdit_KeyUp

        /// <summary>
        ///     Texts the edit key up using the specified arg (a. beging, 11.04.2022)
        /// </summary>
        /// <param name="arg">The arg</param>
        private async Task TextEdit_KeyUp(KeyboardEventArgs arg)
        {
            if (arg.Key == "Enter") await PerformLogin();
        }

        #endregion
    }
}