using CommunityToolkit.Mvvm.ComponentModel; using CommunityToolkit.Mvvm.Input; using Asistencia.Models; using Asistencia.Services; using System.Collections.ObjectModel; namespace Asistencia.ViewModels; public partial class DashboardViewModel : ObservableObject { private readonly AuthService _authService; private readonly AsistenciaService _asistenciaService; private readonly MainWindowViewModel _mainVm; [ObservableProperty] private string _nombreProfesor = string.Empty; [ObservableProperty] private int _totalCursos; public ObservableCollection Cursos { get; } = new(); public DashboardViewModel(AuthService authService, AsistenciaService asistenciaService, MainWindowViewModel mainVm) { _authService = authService; _asistenciaService = asistenciaService; _mainVm = mainVm; NombreProfesor = authService.CurrentUser?.Nombre ?? ""; _ = LoadCursosAsync(); } private async Task LoadCursosAsync() { if (_authService.CurrentUser == null) return; var cursos = await _asistenciaService.ObtenerCursosProfesorAsync(_authService.CurrentUser.RutPasaporte); Cursos.Clear(); foreach (var c in cursos) Cursos.Add(c); TotalCursos = Cursos.Count; } [RelayCommand] private void AbrirAsistencia(CursoAbierto? curso) { if (curso != null) _mainVm.NavigateToAsistencia(curso); } [RelayCommand] private void AbrirPerfil() { _mainVm.NavigateToPerfil(); } [RelayCommand] private void CerrarSesion() { _authService.Logout(); _mainVm.NavigateToLogin(); } }