84 lines
2.5 KiB
Plaintext
84 lines
2.5 KiB
Plaintext
@page "/envelope/{EnvelopeKey}"
|
|
@rendermode InteractiveAuto
|
|
@inject IEnvelopeService EnvelopeService
|
|
@inject EnvelopeState State
|
|
@implements IDisposable
|
|
|
|
<PageTitle>Dokument</PageTitle>
|
|
|
|
@switch (State.Status)
|
|
{
|
|
case EnvelopePageStatus.Loading:
|
|
<LoadingIndicator Message="Dokument wird geladen..." />
|
|
break;
|
|
|
|
case EnvelopePageStatus.NotFound:
|
|
<ErrorDisplay Title="Nicht gefunden"
|
|
Message="Dieses Dokument existiert nicht oder ist nicht mehr verfügbar." />
|
|
break;
|
|
|
|
case EnvelopePageStatus.AlreadySigned:
|
|
<ErrorDisplay Title="Bereits unterschrieben"
|
|
Message="Dieses Dokument wurde bereits unterschrieben."
|
|
Icon="check-circle" />
|
|
break;
|
|
|
|
case EnvelopePageStatus.RequiresAccessCode:
|
|
<AccessCodeForm EnvelopeKey="@EnvelopeKey"
|
|
ErrorMessage="@State.ErrorMessage"
|
|
OnSubmit="HandleAccessCodeSubmit" />
|
|
break;
|
|
|
|
case EnvelopePageStatus.ShowDocument:
|
|
<PdfViewer DocumentBytes="@_documentBytes" />
|
|
break;
|
|
|
|
case EnvelopePageStatus.Error:
|
|
<ErrorDisplay Title="Fehler" Message="@State.ErrorMessage" />
|
|
break;
|
|
}
|
|
|
|
@code {
|
|
[Parameter] public string EnvelopeKey { get; set; } = default!;
|
|
|
|
private byte[]? _documentBytes;
|
|
|
|
protected override async Task OnInitializedAsync()
|
|
{
|
|
State.OnChange += StateHasChanged;
|
|
await LoadEnvelopeAsync();
|
|
}
|
|
|
|
private async Task LoadEnvelopeAsync()
|
|
{
|
|
State.SetLoading();
|
|
|
|
// Die genaue API-Logik hängt von den verfügbaren Endpunkten ab.
|
|
// Dies ist die Struktur — die konkreten Endpoints implementierst du
|
|
// basierend auf den vorhandenen API-Controllern.
|
|
var result = await EnvelopeService.GetEnvelopeReceiversAsync();
|
|
|
|
if (!result.IsSuccess)
|
|
{
|
|
if (result.StatusCode == 401)
|
|
State.SetAccessCodeRequired();
|
|
else if (result.StatusCode == 404)
|
|
State.SetNotFound();
|
|
else
|
|
State.SetError(result.ErrorMessage ?? "Unbekannter Fehler");
|
|
return;
|
|
}
|
|
|
|
// Daten verarbeiten und Status setzen
|
|
State.SetDocument();
|
|
}
|
|
|
|
private async Task HandleAccessCodeSubmit(string code)
|
|
{
|
|
// AccessCode an API senden
|
|
// Bei Erfolg: State.SetDocument() oder State.SetTwoFactorRequired()
|
|
// Bei Fehler: State.SetError(...)
|
|
}
|
|
|
|
public void Dispose() => State.OnChange -= StateHasChanged;
|
|
} |