Refactor envelope query structures and controller methods
- Aktualisiert `EnvelopeHistoryQuery` um optionale `Envelope`, `Receiver` und neue `Status` Parameter für mehr Flexibilität zu enthalten. - Vereinfachte `EnvelopeReceiverQuery`, so dass sie nur noch einen `Status`-Parameter enthält und unnötige Parameter entfernt wurden. - ReadEnvelopeReceiverQuery„ wurde an das neue Design von ‚EnvelopeReceiverQuery‘ angepasst, indem ein “Status"-Parameter akzeptiert wird. - Verbesserte XML-Dokumentation in `EnvelopeController` für mehr Klarheit über Methoden und Parameter. - Die `GetAsync`-Methode wurde gestrafft, um einen `StatusQuery`-Parameter zu akzeptieren, der separate Status-Parameter ersetzt. - Einführung eines neuen `StatusQuery`-Datensatzes, um Statuswerte mit detaillierter Dokumentation zu kapseln. - Aktualisierte „using“-Direktiven in relevanten Dateien, um den neuen „EnvelopeHistories“-Namensraum einzubeziehen.
This commit is contained in:
@@ -9,7 +9,7 @@ namespace EnvelopeGenerator.Application.EnvelopeHistories;
|
|||||||
/// <param name="EnvelopeId">Die eindeutige Kennung des Umschlags.</param>
|
/// <param name="EnvelopeId">Die eindeutige Kennung des Umschlags.</param>
|
||||||
/// <param name="Envelope">Die Abfrage, die den Umschlag beschreibt.</param>
|
/// <param name="Envelope">Die Abfrage, die den Umschlag beschreibt.</param>
|
||||||
/// <param name="Receiver">Die Abfrage, die den Empfänger beschreibt.</param>
|
/// <param name="Receiver">Die Abfrage, die den Empfänger beschreibt.</param>
|
||||||
public record EnvelopeHistoryQuery<TEnvelopeQuery, TReceiverQuery>(int EnvelopeId, TEnvelopeQuery Envelope, TReceiverQuery Receiver)
|
public record EnvelopeHistoryQuery<TEnvelopeQuery, TReceiverQuery>(int EnvelopeId, TEnvelopeQuery? Envelope, TReceiverQuery? Receiver = null, StatusQuery? Status = null)
|
||||||
where TEnvelopeQuery : EnvelopeQuery
|
where TEnvelopeQuery : EnvelopeQuery
|
||||||
where TReceiverQuery : ReceiverQuery
|
where TReceiverQuery : ReceiverQuery
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -0,0 +1,41 @@
|
|||||||
|
namespace EnvelopeGenerator.Application.EnvelopeHistories;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Repräsentiert den Status eines Umschlags und dessen Beziehung zum Empfänger. (vgl. auch <see cref="Common.Constants.EnvelopeStatus"/>
|
||||||
|
/// <list type="bullet">
|
||||||
|
/// <item><description><c>Invalid</c> (0): Ungültiger Status.</description></item>
|
||||||
|
/// <item><description><c>EnvelopeCreated</c> (1001): Der Umschlag wurde erstellt.</description></item>
|
||||||
|
/// <item><description><c>EnvelopeSaved</c> (1002): Der Umschlag wurde gespeichert.</description></item>
|
||||||
|
/// <item><description><c>EnvelopeQueued</c> (1003): Der Umschlag wurde zur Verarbeitung eingeplant.</description></item>
|
||||||
|
/// <item><description><c>EnvelopeSent</c> (1004): Der Umschlag wurde versendet. (Nicht verwendet)</description></item>
|
||||||
|
/// <item><description><c>EnvelopePartlySigned</c> (1005): Der Umschlag wurde teilweise unterschrieben.</description></item>
|
||||||
|
/// <item><description><c>EnvelopeCompletelySigned</c> (1006): Der Umschlag wurde vollständig unterschrieben.</description></item>
|
||||||
|
/// <item><description><c>EnvelopeReportCreated</c> (1007): Ein Abschlussbericht wurde für den Umschlag erstellt.</description></item>
|
||||||
|
/// <item><description><c>EnvelopeArchived</c> (1008): Der Umschlag wurde archiviert.</description></item>
|
||||||
|
/// <item><description><c>EnvelopeDeleted</c> (1009): Der Umschlag wurde gelöscht.</description></item>
|
||||||
|
/// <item><description><c>AccessCodeRequested</c> (2001): Der Zugriffscode wurde angefordert.</description></item>
|
||||||
|
/// <item><description><c>AccessCodeCorrect</c> (2002): Der Zugriffscode war korrekt.</description></item>
|
||||||
|
/// <item><description><c>AccessCodeIncorrect</c> (2003): Der Zugriffscode war falsch.</description></item>
|
||||||
|
/// <item><description><c>DocumentOpened</c> (2004): Das Dokument wurde geöffnet.</description></item>
|
||||||
|
/// <item><description><c>DocumentSigned</c> (2005): Ein Dokument wurde unterschrieben.</description></item>
|
||||||
|
/// <item><description><c>SignatureConfirmed</c> (2006): Die Signatur wurde bestätigt.</description></item>
|
||||||
|
/// <item><description><c>DocumentRejected</c> (2007): Ein Dokument wurde abgelehnt.</description></item>
|
||||||
|
/// <item><description><c>EnvelopeShared</c> (2008): Der Umschlag wurde geteilt.</description></item>
|
||||||
|
/// <item><description><c>EnvelopeViewed</c> (2009): Der Umschlag wurde angesehen.</description></item>
|
||||||
|
/// <item><description><c>DocumentForwarded</c> (4001): Das Dokument wurde weitergeleitet.</description></item>
|
||||||
|
/// <item><description><c>MessageInvitationSent</c> (3001): Einladung wurde gesendet (vom Trigger verwendet).</description></item>
|
||||||
|
/// <item><description><c>MessageAccessCodeSent</c> (3002): Zugriffscode wurde gesendet.</description></item>
|
||||||
|
/// <item><description><c>MessageConfirmationSent</c> (3003): Bestätigungsnachricht wurde gesendet.</description></item>
|
||||||
|
/// <item><description><c>MessageDeletionSent</c> (3004): Löschbenachrichtigung wurde gesendet.</description></item>
|
||||||
|
/// <item><description><c>MessageCompletionSent</c> (3005): Abschlussbenachrichtigung wurde gesendet.</description></item>
|
||||||
|
/// </list>
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="Min">Der minimale Statuswert, der berücksichtigt werden soll.</param>
|
||||||
|
/// <param name="Max">Der maximale Statuswert, der berücksichtigt werden soll.</param>
|
||||||
|
/// <param name="Ignore">Eine Liste von Statuswerten, die ignoriert werden sollen.</param>
|
||||||
|
public record StatusQuery(
|
||||||
|
int? Min = null,
|
||||||
|
int? Max = null,
|
||||||
|
int[]? Ignore = null)
|
||||||
|
{
|
||||||
|
}
|
||||||
@@ -1,5 +1,4 @@
|
|||||||
using EnvelopeGenerator.Application.Envelopes.Queries.Read;
|
using EnvelopeGenerator.Application.EnvelopeHistories;
|
||||||
using EnvelopeGenerator.Application.Receivers.Queries.Read;
|
|
||||||
|
|
||||||
namespace EnvelopeGenerator.Application.EnvelopeReceivers;
|
namespace EnvelopeGenerator.Application.EnvelopeReceivers;
|
||||||
|
|
||||||
@@ -9,7 +8,4 @@ namespace EnvelopeGenerator.Application.EnvelopeReceivers;
|
|||||||
/// <param name="MinStatus"></param>
|
/// <param name="MinStatus"></param>
|
||||||
/// <param name="MaxStatus"></param>
|
/// <param name="MaxStatus"></param>
|
||||||
/// <param name="IgnoreStatus"></param>
|
/// <param name="IgnoreStatus"></param>
|
||||||
public record EnvelopeReceiverQuery(
|
public record EnvelopeReceiverQuery(StatusQuery Status);
|
||||||
int? MinStatus = null,
|
|
||||||
int? MaxStatus = null,
|
|
||||||
int[]? IgnoreStatus = null);
|
|
||||||
@@ -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 EnvelopeGenerator.Application.Receivers.Queries.Read;
|
||||||
using MediatR;
|
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
|
/// Die Antwort enthält Details wie den Status, die Zuordnung zwischen Umschlag und Empfänger
|
||||||
/// sowie zusätzliche Metadaten.
|
/// sowie zusätzliche Metadaten.
|
||||||
/// </remarks>
|
/// </remarks>
|
||||||
public record ReadEnvelopeReceiverQuery : EnvelopeReceiverQuery, IRequest<ReadEnvelopeReceiverResponse>
|
/// <param name="Status">Umschlag oder Empfängerstatus.</param>
|
||||||
|
public record ReadEnvelopeReceiverQuery(StatusQuery Status) : EnvelopeReceiverQuery(Status), IRequest<ReadEnvelopeReceiverResponse>
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Der Umschlag, der mit dem Empfänger verknüpft ist.
|
/// Der Umschlag, der mit dem Empfänger verknüpft ist.
|
||||||
|
|||||||
@@ -1,10 +1,17 @@
|
|||||||
using DigitalData.Core.DTO;
|
using DigitalData.Core.DTO;
|
||||||
using EnvelopeGenerator.Application.Contracts.Services;
|
using EnvelopeGenerator.Application.Contracts.Services;
|
||||||
|
using EnvelopeGenerator.Application.EnvelopeHistories;
|
||||||
using Microsoft.AspNetCore.Authorization;
|
using Microsoft.AspNetCore.Authorization;
|
||||||
using Microsoft.AspNetCore.Mvc;
|
using Microsoft.AspNetCore.Mvc;
|
||||||
|
|
||||||
namespace EnvelopeGenerator.GeneratorAPI.Controllers;
|
namespace EnvelopeGenerator.GeneratorAPI.Controllers;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Dieser Controller stellt Endpunkte für die Verwaltung von Umschlägen bereit.
|
||||||
|
/// </summary>
|
||||||
|
/// <remarks>
|
||||||
|
/// Die API ermöglicht das Abrufen und Verwalten von Umschlägen basierend auf Benutzerinformationen und Statusfiltern.
|
||||||
|
/// </remarks>
|
||||||
[Route("api/[controller]")]
|
[Route("api/[controller]")]
|
||||||
[ApiController]
|
[ApiController]
|
||||||
[Authorize]
|
[Authorize]
|
||||||
@@ -12,24 +19,32 @@ public class EnvelopeController : ControllerBase
|
|||||||
{
|
{
|
||||||
private readonly ILogger<EnvelopeController> _logger;
|
private readonly ILogger<EnvelopeController> _logger;
|
||||||
private readonly IEnvelopeService _envelopeService;
|
private readonly IEnvelopeService _envelopeService;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Erstellt eine neue Instanz des EnvelopeControllers.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="logger">Der Logger, der für das Protokollieren von Informationen verwendet wird.</param>
|
||||||
|
/// <param name="envelopeService">Der Dienst, der für die Verarbeitung von Umschlägen zuständig ist.</param>
|
||||||
public EnvelopeController(ILogger<EnvelopeController> logger, IEnvelopeService envelopeService)
|
public EnvelopeController(ILogger<EnvelopeController> logger, IEnvelopeService envelopeService)
|
||||||
{
|
{
|
||||||
_logger = logger;
|
_logger = logger;
|
||||||
_envelopeService = envelopeService;
|
_envelopeService = envelopeService;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Ruft eine Liste von Umschlägen basierend auf dem Benutzer und den angegebenen Statusfiltern ab.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="status">Die Statusfilter, die für die Abfrage verwendet werden sollen.</param>
|
||||||
|
/// <returns>Eine IActionResult-Instanz, die die abgerufenen Umschläge oder einen Fehlerstatus enthält.</returns>
|
||||||
[Authorize]
|
[Authorize]
|
||||||
[HttpGet]
|
[HttpGet]
|
||||||
public async Task<IActionResult> GetAsync(
|
public async Task<IActionResult> GetAsync(
|
||||||
[FromQuery] int? min_status = null,
|
[FromQuery] StatusQuery status)
|
||||||
[FromQuery] int? max_status = null,
|
|
||||||
[FromQuery] params int[] ignore_statuses)
|
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
if (User.GetId() is int intId)
|
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,
|
Success: Ok,
|
||||||
Fail: IActionResult (msg, ntc) =>
|
Fail: IActionResult (msg, ntc) =>
|
||||||
{
|
{
|
||||||
@@ -38,7 +53,7 @@ public class EnvelopeController : ControllerBase
|
|||||||
});
|
});
|
||||||
else
|
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);
|
return StatusCode(StatusCodes.Status500InternalServerError);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -48,4 +63,4 @@ public class EnvelopeController : ControllerBase
|
|||||||
return StatusCode(StatusCodes.Status500InternalServerError);
|
return StatusCode(StatusCodes.Status500InternalServerError);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user