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; } }