Some checks failed
Build and Publish Docker Image / build-and-push (push) Has been cancelled
56 lines
1.6 KiB
C#
56 lines
1.6 KiB
C#
using System.Collections.ObjectModel;
|
|
using CommunityToolkit.Mvvm.ComponentModel;
|
|
using CommunityToolkit.Mvvm.Input;
|
|
using Microsoft.EntityFrameworkCore;
|
|
using Microsoft.Extensions.DependencyInjection;
|
|
using OTSSignsOrchestrator.Core.Data;
|
|
using OTSSignsOrchestrator.Core.Models.Entities;
|
|
|
|
namespace OTSSignsOrchestrator.Desktop.ViewModels;
|
|
|
|
/// <summary>
|
|
/// ViewModel for viewing operation logs.
|
|
/// </summary>
|
|
public partial class LogsViewModel : ObservableObject
|
|
{
|
|
private readonly IServiceProvider _services;
|
|
|
|
[ObservableProperty] private ObservableCollection<OperationLog> _logs = new();
|
|
[ObservableProperty] private string _statusMessage = string.Empty;
|
|
[ObservableProperty] private bool _isBusy;
|
|
[ObservableProperty] private int _maxEntries = 100;
|
|
|
|
public LogsViewModel(IServiceProvider services)
|
|
{
|
|
_services = services;
|
|
_ = LoadLogsAsync();
|
|
}
|
|
|
|
[RelayCommand]
|
|
private async Task LoadLogsAsync()
|
|
{
|
|
IsBusy = true;
|
|
try
|
|
{
|
|
using var scope = _services.CreateScope();
|
|
var db = scope.ServiceProvider.GetRequiredService<XiboContext>();
|
|
|
|
var items = await db.OperationLogs
|
|
.OrderByDescending(l => l.Timestamp)
|
|
.Take(MaxEntries)
|
|
.ToListAsync();
|
|
|
|
Logs = new ObservableCollection<OperationLog>(items);
|
|
StatusMessage = $"Showing {items.Count} log entries.";
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
StatusMessage = $"Error loading logs: {ex.Message}";
|
|
}
|
|
finally
|
|
{
|
|
IsBusy = false;
|
|
}
|
|
}
|
|
}
|