using CommunityToolkit.Mvvm.ComponentModel; using CommunityToolkit.Mvvm.Input; using Asistencia.Models; using Asistencia.Services; using Avalonia.Controls; using Asistencia.Views; using System.Collections.ObjectModel; namespace Asistencia.ViewModels; public partial class MainWindowViewModel : ViewModelBase { private readonly AuthService _authService; private readonly AsistenciaService _asistenciaService; private readonly ConnectivityService _connectivityService; private object? _currentView; [ObservableProperty] private string _currentViewTitle = "Login"; [ObservableProperty] private bool _conexionDisponible; [ObservableProperty] private string _mensajeConexion = string.Empty; public object? CurrentView { get => _currentView; set => SetProperty(ref _currentView, value); } public MainWindowViewModel(AuthService authService, AsistenciaService asistenciaService, ConnectivityService connectivityService) { _authService = authService; _asistenciaService = asistenciaService; _connectivityService = connectivityService; _ = VerificarConexionAsync(); } private async Task VerificarConexionAsync() { var hayInternet = await _connectivityService.HayConexionAsync(); ConexionDisponible = hayInternet; if (hayInternet) { MensajeConexion = "Aplicación no disponible con conexión a internet. Desconéctese para usar el sistema."; CurrentView = null; } else { MensajeConexion = "Modo offline — Using local database"; CurrentView = new LoginViewModel(_authService, this); } } public void NavigateToLogin() { CurrentViewTitle = "Login"; CurrentView = new LoginViewModel(_authService, this); } public void NavigateToDashboard() { CurrentViewTitle = "Panel Principal"; CurrentView = new DashboardViewModel(_authService, _asistenciaService, this); } public void NavigateToAsistencia(CursoAbierto curso) { CurrentViewTitle = "Asistencia"; CurrentView = new AsistenciaViewModel(_asistenciaService, _authService, curso, this); } public void NavigateToPerfil() { CurrentViewTitle = "Mi Perfil"; CurrentView = new PerfilViewModel(_authService, this); } public string UsuarioActual => _authService.CurrentUser?.NombreCompleto ?? ""; }