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

62 lines
1.6 KiB
C#

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<CursoAbierto> 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();
}
}