feat: agregar SyncService y mejorar gestión de asistencia con nuevas funcionalidades

This commit is contained in:
Nurfog committed 2026-08-20 10:45:53 -04:00
1 parent fb275508ee
commit d953afd3b4
15 files changed
+339 -359

No files matched your search

+29 -15
View File
@@ -10,40 +10,54 @@ public partial class DashboardViewModel : ViewModelBase
{
private readonly AuthService _authService;
private readonly AsistenciaService _asistenciaService;
private readonly SyncService _syncService;
private readonly MainWindowViewModel _mainVm;
[ObservableProperty]
private string _nombreProfesor = string.Empty;
[ObservableProperty]
private int _totalCursos;
private string _tipoAsignacion = string.Empty;
public ObservableCollection<CursoAbierto> Cursos { get; } = new();
[ObservableProperty]
private int _pendientes;
public DashboardViewModel(AuthService authService, AsistenciaService asistenciaService, MainWindowViewModel mainVm)
[ObservableProperty]
private string _mensajeSync = string.Empty;
[ObservableProperty]
private bool _hasMensajeSync;
public DashboardViewModel(AuthService authService, AsistenciaService asistenciaService, SyncService syncService, MainWindowViewModel mainVm)
{
_authService = authService;
_asistenciaService = asistenciaService;
_syncService = syncService;
_mainVm = mainVm;
NombreProfesor = authService.CurrentUser?.Nombre ?? "";
_ = LoadCursosAsync();
NombreProfesor = authService.CurrentUser?.NombreCompleto ?? "";
TipoAsignacion = authService.TipoAsignacionActual == 1 ? "Titular" : "Reemplazo";
_ = CargarPendientesAsync();
}
private async Task LoadCursosAsync()
private async Task CargarPendientesAsync()
{
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;
Pendientes = await _syncService.ContarPendientesAsync();
}
[RelayCommand]
private void AbrirAsistencia(CursoAbierto? curso)
private void AbrirAsistencia()
{
if (curso != null)
_mainVm.NavigateToAsistencia(curso);
_mainVm.NavigateToAsistencia();
}
[RelayCommand]
private async Task SincronizarAsync()
{
HasMensajeSync = false;
var (success, message) = await _syncService.SincronizarAsync("http://localhost:5000");
MensajeSync = message;
HasMensajeSync = true;
await CargarPendientesAsync();
}
[RelayCommand]