Files
asistencia-desktop/Asistencia/ViewModels/LoginViewModel.cs
T

68 lines
1.4 KiB
C#

using CommunityToolkit.Mvvm.ComponentModel;
using CommunityToolkit.Mvvm.Input;
using Asistencia.Services;
namespace Asistencia.ViewModels;
public partial class LoginViewModel : ViewModelBase
{
private readonly AuthService _authService;
private readonly MainWindowViewModel _mainVm;
[ObservableProperty]
private string _rut = string.Empty;
[ObservableProperty]
private bool _esTitular = true;
[ObservableProperty]
private bool _esReemplazo;
[ObservableProperty]
private string _errorMessage = string.Empty;
[ObservableProperty]
private bool _hasError;
[ObservableProperty]
private bool _isLoading;
public LoginViewModel(AuthService authService, MainWindowViewModel mainVm)
{
_authService = authService;
_mainVm = mainVm;
}
partial void OnEsTitularChanged(bool value)
{
if (value) EsReemplazo = false;
}
partial void OnEsReemplazoChanged(bool value)
{
if (value) EsTitular = false;
}
[RelayCommand]
private async Task LoginAsync()
{
IsLoading = true;
HasError = false;
var tipoAsignacion = EsTitular ? 1 : 4;
var (success, message) = await _authService.LoginAsync(Rut, tipoAsignacion);
if (success)
{
_mainVm.NavigateToDashboard();
}
else
{
ErrorMessage = message;
HasError = true;
}
IsLoading = false;
}
}