@page "/logs" @using Microsoft.EntityFrameworkCore @using TrafagSalesExporter.Data @inject IDbContextFactory DbFactory @inject ISnackbar Snackbar @inject IDialogService DialogService Logs Export Logs @foreach (var land in _availableLands) { @land } OK Error Filtern Alte Logs löschen Zeitpunkt Land TSC Status Zeilen Dauer Dateiname Fehler @context.Timestamp.ToString("dd.MM.yyyy HH:mm:ss") @context.Land @context.TSC @if (context.Status == "OK") { OK } else { Error } @context.RowCount.ToString("N0") @($"{context.DurationSeconds:F1}s") @context.FileName @if (!string.IsNullOrEmpty(context.ErrorMessage)) { @context.ErrorMessage } @code { private List _logs = new(); private List _availableLands = new(); private string? _filterLand; private string? _filterStatus; private DateTime? _filterDate; private bool _loading = true; protected override async Task OnInitializedAsync() { using var db = await DbFactory.CreateDbContextAsync(); _availableLands = await db.ExportLogs.Select(l => l.Land).Distinct().OrderBy(l => l).ToListAsync(); await LoadLogsAsync(); } private async Task LoadLogsAsync() { _loading = true; using var db = await DbFactory.CreateDbContextAsync(); IQueryable query = db.ExportLogs.OrderByDescending(l => l.Timestamp); if (!string.IsNullOrEmpty(_filterLand)) query = query.Where(l => l.Land == _filterLand); if (!string.IsNullOrEmpty(_filterStatus)) query = query.Where(l => l.Status == _filterStatus); if (_filterDate.HasValue) query = query.Where(l => l.Timestamp.Date == _filterDate.Value.Date); _logs = await query.Take(500).ToListAsync(); _loading = false; } private async Task ApplyFilter() { await LoadLogsAsync(); } private async Task DeleteOldLogs() { var result = await DialogService.ShowMessageBox( "Alte Logs löschen", "Logs älter als 90 Tage löschen?", yesText: "Löschen", cancelText: "Abbrechen"); if (result != true) return; using var db = await DbFactory.CreateDbContextAsync(); var cutoff = DateTime.Now.AddDays(-90); var oldLogs = await db.ExportLogs.Where(l => l.Timestamp < cutoff).ToListAsync(); db.ExportLogs.RemoveRange(oldLogs); var count = await db.SaveChangesAsync(); await LoadLogsAsync(); Snackbar.Add($"{oldLogs.Count} alte Logs gelöscht", Severity.Info); } }