Refactor envelope and history query structures

- Removed `Sender` parameter and properties from `EnvelopeQuery`.
- Deleted `SenderQuery` class entirely.
- Cleaned up `HistoryQuery` by removing unused `using` directives and `ReferenceType` logic.
- Added `Related` parameter to `ReadHistoryQuery` for reference type indication.
- Updated `ReferenceType` enum in `Constants.vb` to use explicit integer values.
- Modified `HistoryController` to utilize the new `Related` property for determining sender/receiver inclusion.
This commit is contained in:
Developer 02 2025-04-11 20:51:21 +02:00
parent 4551e5dc64
commit 994c844f25
6 changed files with 7 additions and 63 deletions

View File

@ -6,27 +6,11 @@ namespace EnvelopeGenerator.Application.Envelopes;
/// Repräsentiert eine Abfrage für Umschläge. /// Repräsentiert eine Abfrage für Umschläge.
/// </summary> /// </summary>
/// <param name="Id">Die eindeutige Kennung des Umschlags.</param> /// <param name="Id">Die eindeutige Kennung des Umschlags.</param>
/// <param name="Sender">Absender des Schreibens</param>
/// <param name="Status">Der Status des Umschlags.</param> /// <param name="Status">Der Status des Umschlags.</param>
/// <param name="Uuid">Die universell eindeutige Kennung des Umschlags.</param> /// <param name="Uuid">Die universell eindeutige Kennung des Umschlags.</param>
public record EnvelopeQuery( public record EnvelopeQuery(
int? Id = null, int? Id = null,
SenderQuery? Sender = null,
int? Status = null, int? Status = null,
string? Uuid = null) : IRequest string? Uuid = null) : IRequest
{ {
/// <summary>
/// Die eindeutige Kennung des Benutzers.
/// </summary>
public int? SenderId => Sender?.Id;
/// <summary>
/// Der Benutzername des Absenders.
/// </summary>
public string? SenderUsername => Sender?.Username;
/// <summary>
/// Die E-Mail-Adresse des Benutzers.
/// </summary>
public string? SenderEmail => Sender?.Username;
}; };

View File

@ -1,11 +0,0 @@
namespace EnvelopeGenerator.Application.Envelopes;
/// <summary>
/// Repräsentiert eine Abfrage für einen Absender.
/// </summary>
/// <param name="Id">Die eindeutige Kennung des Absenders.</param>
/// <param name="Username">Der Benutzername des Absenders.</param>
/// <param name="Email">Die E-Mail-Adresse des Absenders.</param>
public record SenderQuery(int? Id = null, string? Username = null, string? Email = null)
{
}

View File

@ -1,30 +0,0 @@
using EnvelopeGenerator.Application.Envelopes;
using EnvelopeGenerator.Application.Receivers;
using static EnvelopeGenerator.Common.Constants;
namespace EnvelopeGenerator.Application.Histories;
/// <summary>
/// Repräsentiert eine Abfrage für die Verlaufshistorie eines Umschlags.
/// </summary>
/// <param name="EnvelopeId">Die eindeutige Kennung des Umschlags.</param>
/// <param name="Envelope">Die Abfrage, die den Umschlag beschreibt.</param>
/// <param name="Receiver">Die Abfrage, die den Empfänger beschreibt.</param>
/// <param name="OnlyLast">Abfrage zur Steuerung, ob nur der aktuelle Status oder der gesamte Datensatz zurückgegeben wird.</param>
public record HistoryQuery<TEnvelopeQuery, TReceiverQuery>(int EnvelopeId, TEnvelopeQuery? Envelope, TReceiverQuery? Receiver = null, bool? OnlyLast = null)
where TEnvelopeQuery : EnvelopeQuery
where TReceiverQuery : ReceiverQuery
{
/// <summary>
/// Gibt den Referenztyp des Umschlags an.
/// Wenn der Benutzer des Umschlags definiert ist, wird der Referenztyp als Empfänger betrachtet.
/// Andernfalls, wenn ein Empfänger definiert ist, wird der Referenztyp ebenfalls als Empfänger betrachtet.
/// Ist keiner von beiden definiert, wird der Referenztyp als System betrachtet.
/// </summary>
public ReferenceType ReferenceType =>
Envelope?.Sender is not null
? ReferenceType.Receiver
: Receiver is not null
? ReferenceType.Receiver
: ReferenceType.System;
}

View File

@ -1,5 +1,6 @@
using EnvelopeGenerator.Application.Envelopes.Queries.Read; using EnvelopeGenerator.Application.Envelopes.Queries.Read;
using EnvelopeGenerator.Application.Receivers.Queries.Read; using EnvelopeGenerator.Application.Receivers.Queries.Read;
using EnvelopeGenerator.Common;
namespace EnvelopeGenerator.Application.Histories.Queries.Read; namespace EnvelopeGenerator.Application.Histories.Queries.Read;
@ -9,10 +10,11 @@ namespace EnvelopeGenerator.Application.Histories.Queries.Read;
/// <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>
/// <param name="Related">Abfrage, die angibt, worauf sich der Datensatz bezieht. Ob er sich auf den Empfänger, den Sender oder das System bezieht, wird durch 0, 1 bzw. 2 dargestellt.</param>
/// <param name="OnlyLast">Abfrage zur Steuerung, ob nur der aktuelle Status oder der gesamte Datensatz zurückgegeben wird.</param> /// <param name="OnlyLast">Abfrage zur Steuerung, ob nur der aktuelle Status oder der gesamte Datensatz zurückgegeben wird.</param>
public record ReadHistoryQuery( public record ReadHistoryQuery(
int EnvelopeId, int EnvelopeId,
ReadEnvelopeQuery? Envelope = null, ReadEnvelopeQuery? Envelope = null,
ReadReceiverQuery? Receiver = null, ReadReceiverQuery? Receiver = null,
bool? OnlyLast = true) Constants.ReferenceType? Related = null,
: HistoryQuery<ReadEnvelopeQuery, ReadReceiverQuery>(EnvelopeId, Envelope, Receiver, OnlyLast); bool? OnlyLast = true);

View File

@ -32,7 +32,7 @@
'TODO: standardize in xwiki 'TODO: standardize in xwiki
Public Enum ReferenceType Public Enum ReferenceType
Receiver Receiver = 0
Sender Sender
System System
Unknown Unknown

View File

@ -70,11 +70,10 @@ public class HistoryController : ControllerBase
[Authorize] [Authorize]
public async Task<IActionResult> GetAllAsync([FromQuery] ReadHistoryQuery history) public async Task<IActionResult> GetAllAsync([FromQuery] ReadHistoryQuery history)
{ {
ReferenceType? refTypEnum = history.ReferenceType;
bool withReceiver = false; bool withReceiver = false;
bool withSender = false; bool withSender = false;
switch (refTypEnum) switch (history.Related)
{ {
case ReferenceType.Receiver: case ReferenceType.Receiver:
withReceiver = true; withReceiver = true;
@ -86,7 +85,7 @@ public class HistoryController : ControllerBase
var histories = await _service.ReadAsync( var histories = await _service.ReadAsync(
envelopeId: history.EnvelopeId, envelopeId: history.EnvelopeId,
referenceType: refTypEnum, referenceType: history.Related,
withSender: withSender, withSender: withSender,
withReceiver: withReceiver); withReceiver: withReceiver);