Files
WorkFlowCheck/src/WorkFlowCheck.MAUI/Pages/Security/LoginPage.xaml.cs
T

153 lines
5.5 KiB
C#

using CommunityToolkit.Maui.Alerts;
using CommunityToolkit.Maui.Core;
using System.Drawing;
using WorkFlowCheck.MAUI.Helper;
using WorkFlowCheck.MAUI.Pages.NFC;
using WorkFlowCheck.MAUI.Services.Interfaces;
namespace WorkFlowCheck.MAUI.Pages.Security;
public partial class LoginPage : BasePage
{
private IUserService _userService;
private ISyncService _syncService;
public LoginPage()
{
InitializeComponent();
SetContent(LoginContent);
_userService = MauiProgram.ServiceProvider.GetRequiredService<IUserService>();
_syncService = MauiProgram.ServiceProvider.GetRequiredService<ISyncService>();
}
private async void OnLoginClicked(object sender, EventArgs e)
{
LoadingIndicator.IsRunning = true;
LoadingIndicator.IsVisible = true;
LoginBtn.IsEnabled = false;
UsernameEntry.IsEnabled = false;
PasswordEntry.IsEnabled = false;
try
{
var response = await _userService.Authenticate(UsernameEntry.Text.ToString(), PasswordEntry.Text.ToString());
if (response != null && response.IsSuccess)
{
_userService.SetCurrentUser(response.Data);
SystemHelper.SystemUserDTO = response.Data;
//await _syncService.SyncDatas();
var wFCUser = Newtonsoft.Json.JsonConvert.SerializeObject(response.Data);
await SecureStorage.Default.SetAsync("WFCUser", "wFCUser");
await SecureStorage.Default.SetAsync("AuthToken", response.Data.JwtToken);
await Shell.Current.GoToAsync("//SyncPage");
}
else
{
var visualOptions = new SnackbarOptions
{
ActionButtonTextColor = Colors.Yellow,
CornerRadius = new CornerRadius(10),
Font = Microsoft.Maui.Font.SystemFontOfSize(16),
BackgroundColor = Microsoft.Maui.Graphics.Color.Parse("Red"),
TextColor = Colors.Yellow
};
var snackbar = Snackbar.Make(
"Invalid login credentials.",
duration: TimeSpan.FromSeconds(10),
action: () => Console.WriteLine("Snackbar dismissed"),
actionButtonText: "OK",
visualOptions: visualOptions
);
await snackbar.Show();
}
}
catch (Exception)
{
throw;
}
finally
{
LoginBtn.IsEnabled = true;
LoadingIndicator.IsRunning = false;
LoadingIndicator.IsVisible = false;
UsernameEntry.IsEnabled = true;
PasswordEntry.IsEnabled = true;
}
}
private async void OnLoginNFCClicked(object sender, EventArgs e)
{
LoadingIndicator.IsRunning = true;
LoadingIndicator.IsVisible = true;
LoginBtn.IsEnabled = false;
LoginNFCBtn.IsEnabled = false;
UsernameEntry.IsEnabled = false;
PasswordEntry.IsEnabled = false;
try
{
var nFCCode = await NFCWaiter.ShowModalAsync();
if (!string.IsNullOrEmpty(nFCCode))
{
var response = await _userService.AuthenticateNFC(nFCCode);
if (response != null && response.IsSuccess)
{
_userService.SetCurrentUser(response.Data);
//await _syncService.SyncDatas();
var wFCUser = Newtonsoft.Json.JsonConvert.SerializeObject(response.Data);
await SecureStorage.Default.SetAsync("WFCUser", "wFCUser");
await SecureStorage.Default.SetAsync("AuthToken", response.Data.JwtToken);
await Shell.Current.GoToAsync("//SyncPage");
}
else
{
var visualOptions = new SnackbarOptions
{
ActionButtonTextColor = Colors.Yellow,
CornerRadius = new CornerRadius(10),
Font = Microsoft.Maui.Font.SystemFontOfSize(16),
BackgroundColor = Microsoft.Maui.Graphics.Color.Parse("Red"),
TextColor = Colors.Yellow
};
var snackbar = Snackbar.Make(
"Invalid login credentials.",
duration: TimeSpan.FromSeconds(10),
action: () => Console.WriteLine("Snackbar dismissed"),
actionButtonText: "OK",
visualOptions: visualOptions
);
await snackbar.Show();
}
}
}
catch (Exception)
{
throw;
}
finally
{
LoginBtn.IsEnabled = true;
LoginNFCBtn.IsEnabled = true;
LoadingIndicator.IsRunning = false;
LoadingIndicator.IsVisible = false;
UsernameEntry.IsEnabled = true;
PasswordEntry.IsEnabled = true;
LoginNFCBtn.IsEnabled = true;
}
}
}