@page "/workspace/{*WorkspaceId}"
@using ZahlenAnalyse.Web.Models
@using ZahlenAnalyse.Web.Services
@inject WorkspaceService DbService
@inject ISnackbar Snackbar
@inject NavigationManager NavManager
@if (_workspace == null)
{
}
else
{
@_workspace.Name
Daten importieren
Lade eine Excel-Datei hoch, um Fakten in diesen Workspace zu importieren.
Excel hochladen
Dimensionen
@foreach (var dim in _workspace.Dimensions)
{
@dim.Name
}
Letzte Importe / Einträge
Datum
Betrag
Details
@context.Date.ToShortDateString()
@context.Amount.ToString("N2") €
@string.Join(" | ", context.Dimensions.Values)
}
@code {
[Parameter] public string WorkspaceId { get; set; } = string.Empty;
private Workspace? _workspace;
private List _recentFakten = new();
protected override async Task OnInitializedAsync()
{
_workspace = await DbService.GetWorkspaceAsync(WorkspaceId);
if (_workspace != null)
{
_recentFakten = await DbService.GetFaktenForWorkspaceAsync(WorkspaceId);
_recentFakten = _recentFakten.Take(5).ToList();
}
}
private async Task UploadFile(Microsoft.AspNetCore.Components.Forms.IBrowserFile e)
{
var file = e;
if (file == null) return;
try
{
// 1. Datenstrom vom Browser öffnen
using var browserStream = file.OpenReadStream(maxAllowedSize: 1024 * 1024 * 10); // 10MB
// 2. Den Stream komplett in den "Eimer" (Arbeitsspeicher) laden
using var memoryStream = new MemoryStream();
await browserStream.CopyToAsync(memoryStream);
// 3. WICHTIG: Den Lese-Zeiger im Eimer wieder nach ganz oben setzen!
memoryStream.Position = 0;
// 4. Den fertigen MemoryStream an den Service übergeben
await DbService.ImportFromExcelAsync(WorkspaceId, memoryStream);
Snackbar.Add("Import erfolgreich!", Severity.Success);
// Die Tabelle mit den neuen Daten aktualisieren
_recentFakten = (await DbService.GetFaktenForWorkspaceAsync(WorkspaceId)).Take(5).ToList();
}
catch (Exception ex)
{
Snackbar.Add($"Fehler beim Import: {ex.Message}", Severity.Error);
}
}
}