using Biskilog_Accounting.Shared.ClientContractModels;
using Microsoft.AspNetCore.Components.Web;
using Microsoft.AspNetCore.Components;
using static System.Net.WebRequestMethods;
using System.Net.Http.Headers;
using System.Net.Http.Json;
namespace Biskilog_Accounting.Client.Pages.Auth.Components
{
public partial class UsernameTab
{
private string m_email, m_password;
private bool m_remember { get; set; }
protected bool IsVisible { get; set; }
private string m_usernameErrorClass = "hidden";
private string m_passwordErrorClass = "hidden";
//NotificationMessage notificationMessage = new NotificationMessage();
private Userauth authenticatedUser;
///
/// Handles the click or press event of the enter key
///
///
public async void Enter(KeyboardEventArgs e)
{
if (e.Code == "Enter" || e.Code == "NumpadEnter")
{
FieldValidation();
if (!string.IsNullOrEmpty(m_email) && !string.IsNullOrEmpty(m_password))
{
await Authenticate();
}
}
}
///
/// Validates the username and password input fields and shows the appropriate indicators
///
private void FieldValidation()
{
if (string.IsNullOrEmpty(m_email))
{
m_usernameErrorClass = "";
}
else
{
m_usernameErrorClass = "hidden";
}
if (string.IsNullOrEmpty(m_password))
{
m_passwordErrorClass = "";
}
else
{
m_passwordErrorClass = "hidden";
}
}
///
/// Authenticates the user and determines the type of page layout to show
///
///
async Task Authenticate()
{
FieldValidation();
ShowSpinner();
try
{
authenticatedUser = new Userauth
{
UserId = 0,
Username = m_email,
Email = m_email,
Passsword = m_password
};
var responseMain = await m_http.PostAsJsonAsync("api/authentication/type-a", authenticatedUser);
if (responseMain.IsSuccessStatusCode)
{
string token = await responseMain.Content.ReadAsStringAsync();
await m_tokenService.SetToken(token, m_remember);
var authHeader = new AuthenticationHeaderValue("Bearer", token);
m_http.DefaultRequestHeaders.Authorization = authHeader;
m_navigationManager.NavigateTo("/");
}
else if (responseMain.StatusCode == System.Net.HttpStatusCode.BadRequest)
{
}
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
}
HideSpinner();
}
///
/// Shows the loading spinner
///
public void ShowSpinner()
{
IsVisible = true;
StateHasChanged();
}
///
/// Hides the loading spinner
///
public void HideSpinner()
{
IsVisible = false;
StateHasChanged();
}
///
/// Shows a notification message
///
///
///
//async Task ShowNotification(NotificationMessage message)
//{
// notificationService.Notify(message);
// await InvokeAsync(() => { StateHasChanged(); });
//}
///
/// Sets the username value
///
///
void usernameInput(string value)
{
m_email = value;
StateHasChanged();
}
///
/// Sets the password value
///
///
void passwordInput(string value)
{
m_password = value;
StateHasChanged();
}
}
}