62 lines
1.6 KiB
C#
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();
|
|
}
|
|
}
|