diff --git a/EnvelopeGenerator.Application/EnvelopeHistories/EnvelopeHistoryQuery.cs b/EnvelopeGenerator.Application/EnvelopeHistories/EnvelopeHistoryQuery.cs
index f179679b..4784ec11 100644
--- a/EnvelopeGenerator.Application/EnvelopeHistories/EnvelopeHistoryQuery.cs
+++ b/EnvelopeGenerator.Application/EnvelopeHistories/EnvelopeHistoryQuery.cs
@@ -9,7 +9,7 @@ namespace EnvelopeGenerator.Application.EnvelopeHistories;
/// Die eindeutige Kennung des Umschlags.
/// Die Abfrage, die den Umschlag beschreibt.
/// Die Abfrage, die den Empfänger beschreibt.
-public record EnvelopeHistoryQuery(int EnvelopeId, TEnvelopeQuery Envelope, TReceiverQuery Receiver)
+public record EnvelopeHistoryQuery(int EnvelopeId, TEnvelopeQuery? Envelope, TReceiverQuery? Receiver = null, StatusQuery? Status = null)
where TEnvelopeQuery : EnvelopeQuery
where TReceiverQuery : ReceiverQuery
{
diff --git a/EnvelopeGenerator.Application/EnvelopeHistories/StatusQuery.cs b/EnvelopeGenerator.Application/EnvelopeHistories/StatusQuery.cs
new file mode 100644
index 00000000..1f7961fd
--- /dev/null
+++ b/EnvelopeGenerator.Application/EnvelopeHistories/StatusQuery.cs
@@ -0,0 +1,41 @@
+namespace EnvelopeGenerator.Application.EnvelopeHistories;
+
+///
+/// Repräsentiert den Status eines Umschlags und dessen Beziehung zum Empfänger. (vgl. auch
+///
+/// - Invalid (0): Ungültiger Status.
+/// - EnvelopeCreated (1001): Der Umschlag wurde erstellt.
+/// - EnvelopeSaved (1002): Der Umschlag wurde gespeichert.
+/// - EnvelopeQueued (1003): Der Umschlag wurde zur Verarbeitung eingeplant.
+/// - EnvelopeSent (1004): Der Umschlag wurde versendet. (Nicht verwendet)
+/// - EnvelopePartlySigned (1005): Der Umschlag wurde teilweise unterschrieben.
+/// - EnvelopeCompletelySigned (1006): Der Umschlag wurde vollständig unterschrieben.
+/// - EnvelopeReportCreated (1007): Ein Abschlussbericht wurde für den Umschlag erstellt.
+/// - EnvelopeArchived (1008): Der Umschlag wurde archiviert.
+/// - EnvelopeDeleted (1009): Der Umschlag wurde gelöscht.
+/// - AccessCodeRequested (2001): Der Zugriffscode wurde angefordert.
+/// - AccessCodeCorrect (2002): Der Zugriffscode war korrekt.
+/// - AccessCodeIncorrect (2003): Der Zugriffscode war falsch.
+/// - DocumentOpened (2004): Das Dokument wurde geöffnet.
+/// - DocumentSigned (2005): Ein Dokument wurde unterschrieben.
+/// - SignatureConfirmed (2006): Die Signatur wurde bestätigt.
+/// - DocumentRejected (2007): Ein Dokument wurde abgelehnt.
+/// - EnvelopeShared (2008): Der Umschlag wurde geteilt.
+/// - EnvelopeViewed (2009): Der Umschlag wurde angesehen.
+/// - DocumentForwarded (4001): Das Dokument wurde weitergeleitet.
+/// - MessageInvitationSent (3001): Einladung wurde gesendet (vom Trigger verwendet).
+/// - MessageAccessCodeSent (3002): Zugriffscode wurde gesendet.
+/// - MessageConfirmationSent (3003): Bestätigungsnachricht wurde gesendet.
+/// - MessageDeletionSent (3004): Löschbenachrichtigung wurde gesendet.
+/// - MessageCompletionSent (3005): Abschlussbenachrichtigung wurde gesendet.
+///
+///
+/// Der minimale Statuswert, der berücksichtigt werden soll.
+/// Der maximale Statuswert, der berücksichtigt werden soll.
+/// Eine Liste von Statuswerten, die ignoriert werden sollen.
+public record StatusQuery(
+ int? Min = null,
+ int? Max = null,
+ int[]? Ignore = null)
+{
+}
diff --git a/EnvelopeGenerator.Application/EnvelopeReceivers/EnvelopeReceiverQuery.cs b/EnvelopeGenerator.Application/EnvelopeReceivers/EnvelopeReceiverQuery.cs
index b4bc1de4..3eccc2c8 100644
--- a/EnvelopeGenerator.Application/EnvelopeReceivers/EnvelopeReceiverQuery.cs
+++ b/EnvelopeGenerator.Application/EnvelopeReceivers/EnvelopeReceiverQuery.cs
@@ -1,5 +1,4 @@
-using EnvelopeGenerator.Application.Envelopes.Queries.Read;
-using EnvelopeGenerator.Application.Receivers.Queries.Read;
+using EnvelopeGenerator.Application.EnvelopeHistories;
namespace EnvelopeGenerator.Application.EnvelopeReceivers;
@@ -9,7 +8,4 @@ namespace EnvelopeGenerator.Application.EnvelopeReceivers;
///
///
///
-public record EnvelopeReceiverQuery(
- int? MinStatus = null,
- int? MaxStatus = null,
- int[]? IgnoreStatus = null);
\ No newline at end of file
+public record EnvelopeReceiverQuery(StatusQuery Status);
\ No newline at end of file
diff --git a/EnvelopeGenerator.Application/EnvelopeReceivers/Queries/Read/ReadEnvelopeReceiverQuery.cs b/EnvelopeGenerator.Application/EnvelopeReceivers/Queries/Read/ReadEnvelopeReceiverQuery.cs
index 3bb56aaa..20894771 100644
--- a/EnvelopeGenerator.Application/EnvelopeReceivers/Queries/Read/ReadEnvelopeReceiverQuery.cs
+++ b/EnvelopeGenerator.Application/EnvelopeReceivers/Queries/Read/ReadEnvelopeReceiverQuery.cs
@@ -1,4 +1,5 @@
-using EnvelopeGenerator.Application.Envelopes.Queries.Read;
+using EnvelopeGenerator.Application.EnvelopeHistories;
+using EnvelopeGenerator.Application.Envelopes.Queries.Read;
using EnvelopeGenerator.Application.Receivers.Queries.Read;
using MediatR;
@@ -14,7 +15,8 @@ namespace EnvelopeGenerator.Application.EnvelopeReceivers.Queries.Read;
/// Die Antwort enthält Details wie den Status, die Zuordnung zwischen Umschlag und Empfänger
/// sowie zusätzliche Metadaten.
///
-public record ReadEnvelopeReceiverQuery : EnvelopeReceiverQuery, IRequest
+/// Umschlag oder Empfängerstatus.
+public record ReadEnvelopeReceiverQuery(StatusQuery Status) : EnvelopeReceiverQuery(Status), IRequest
{
///
/// Der Umschlag, der mit dem Empfänger verknüpft ist.
diff --git a/EnvelopeGenerator.GeneratorAPI/Controllers/EnvelopeController.cs b/EnvelopeGenerator.GeneratorAPI/Controllers/EnvelopeController.cs
index f6e4d17c..5cf96857 100644
--- a/EnvelopeGenerator.GeneratorAPI/Controllers/EnvelopeController.cs
+++ b/EnvelopeGenerator.GeneratorAPI/Controllers/EnvelopeController.cs
@@ -1,10 +1,17 @@
using DigitalData.Core.DTO;
using EnvelopeGenerator.Application.Contracts.Services;
+using EnvelopeGenerator.Application.EnvelopeHistories;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
namespace EnvelopeGenerator.GeneratorAPI.Controllers;
+///
+/// Dieser Controller stellt Endpunkte für die Verwaltung von Umschlägen bereit.
+///
+///
+/// Die API ermöglicht das Abrufen und Verwalten von Umschlägen basierend auf Benutzerinformationen und Statusfiltern.
+///
[Route("api/[controller]")]
[ApiController]
[Authorize]
@@ -12,24 +19,32 @@ public class EnvelopeController : ControllerBase
{
private readonly ILogger _logger;
private readonly IEnvelopeService _envelopeService;
-
+
+ ///
+ /// Erstellt eine neue Instanz des EnvelopeControllers.
+ ///
+ /// Der Logger, der für das Protokollieren von Informationen verwendet wird.
+ /// Der Dienst, der für die Verarbeitung von Umschlägen zuständig ist.
public EnvelopeController(ILogger logger, IEnvelopeService envelopeService)
{
_logger = logger;
_envelopeService = envelopeService;
}
+ ///
+ /// Ruft eine Liste von Umschlägen basierend auf dem Benutzer und den angegebenen Statusfiltern ab.
+ ///
+ /// Die Statusfilter, die für die Abfrage verwendet werden sollen.
+ /// Eine IActionResult-Instanz, die die abgerufenen Umschläge oder einen Fehlerstatus enthält.
[Authorize]
[HttpGet]
public async Task GetAsync(
- [FromQuery] int? min_status = null,
- [FromQuery] int? max_status = null,
- [FromQuery] params int[] ignore_statuses)
+ [FromQuery] StatusQuery status)
{
try
{
if (User.GetId() is int intId)
- return await _envelopeService.ReadByUserAsync(intId, min_status: min_status, max_status: max_status, ignore_statuses: ignore_statuses).ThenAsync(
+ return await _envelopeService.ReadByUserAsync(intId, min_status: status.Min, max_status: status.Max, ignore_statuses: status.Ignore).ThenAsync(
Success: Ok,
Fail: IActionResult (msg, ntc) =>
{
@@ -38,7 +53,7 @@ public class EnvelopeController : ControllerBase
});
else
{
- _logger.LogError("Despite successful authorization, the 'api/envelope' route encountered an issue: the user ID is not recognized as an integer. This may be due to the removal of the ID during the creation of the claims list.");
+ _logger.LogError("Trotz erfolgreicher Autorisierung wurde die Benutzer-ID nicht als Ganzzahl erkannt. Dies könnte auf eine fehlerhafte Erstellung der Anspruchsliste zurückzuführen sein.");
return StatusCode(StatusCodes.Status500InternalServerError);
}
}
@@ -48,4 +63,4 @@ public class EnvelopeController : ControllerBase
return StatusCode(StatusCodes.Status500InternalServerError);
}
}
-}
\ No newline at end of file
+}